| From: |
| christopher.s.hall-AT-intel.com |
| To: |
| netdev-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org, tglx-AT-linutronix.de, hpa-AT-zytor.com, mingo-AT-redhat.com, x86-AT-kernel.org, jacob.e.keller-AT-intel.com, richardcochran-AT-gmail.com, davem-AT-davemloft.net, sean.v.kelley-AT-intel.com |
| Subject: |
| [Intel PMC TGPIO Driver 0/5] Add support for Intel PMC Time GPIO Driver with PHC interface changes to support additional H/W Features |
| Date: |
| Wed, 11 Dec 2019 13:48:47 -0800 |
| Message-ID: |
| <20191211214852.26317-1-christopher.s.hall@intel.com> |
| Cc: |
| Christopher Hall <christopher.s.hall-AT-intel.com> |
| Archive-link: |
| Article |
From: Christopher Hall <christopher.s.hall@intel.com>
Upcoming Intel platforms will have Time-Aware GPIO (TGPIO) hardware.
The TGPIO logic is driven by the Always Running Timer (ART) that's
related to TSC using CPUID[15H] (See Intel SDM Invariant
Time-Keeping).
The ART frequency is not adjustable. In order, to implement output
adjustments an additional edge-timestamp API is added, as well, as
a periodic output frequency adjustment API. Togther, these implement
equivalent functionality to the existing SYS_OFFSET_* and frequency
adjustment APIs.
The TGPIO hardware doesn't implement interrupts. For TGPIO input, the
output edge-timestamp API is re-used to implement a user-space polling
interface. For periodic input (e.g. PPS) this is fairly efficient,
requiring only a marginally faster poll rate than the input event
frequency.
Acknowledgment: Portions of the driver code were authored by Felipe
Balbi <balbi@kernel.org>
=======================================================================
Christopher Hall (5):
drivers/ptp: Add Enhanced handling of reserve fields
drivers/ptp: Add PEROUT2 ioctl frequency adjustment interface
drivers/ptp: Add user-space input polling interface
x86/tsc: Add TSC support functions to support ART driven Time-Aware
GPIO
drivers/ptp: Add PMC Time-Aware GPIO Driver
arch/x86/include/asm/tsc.h | 6 +
arch/x86/kernel/tsc.c | 116 +++-
drivers/ptp/Kconfig | 13 +
drivers/ptp/Makefile | 1 +
drivers/ptp/ptp-intel-pmc-tgpio.c | 867 ++++++++++++++++++++++++++++++
drivers/ptp/ptp_chardev.c | 86 ++-
drivers/ptp/ptp_clock.c | 13 +
include/linux/ptp_clock_kernel.h | 2 +
include/uapi/linux/ptp_clock.h | 26 +-
9 files changed, 1099 insertions(+), 31 deletions(-)
create mode 100644 drivers/ptp/ptp-intel-pmc-tgpio.c
--
2.21.0