TGPIO is a new IP which allows for time synchronization between systems without any other means of synchronization such as PTP or NTP. The driver is implemented as part of the PTP framework since its features covered most of what this controller can do.
There are a few things that made me send this as a RFC, however: (1) This version of the controller lacks an interrupt line. Currently I put a kthread that starts polling the controller whenever its pin is configured as input. Any better ideas for allowing userspace control the polling rate? Perhaps tap into ptp_poll()? (2) ACPI IDs can't be shared at this moment, unfortunately. (3) The change in arch/x86/kernel/tsc.c needs to be reviewed at length before going in. Let me know what you guys think, Cheers Felipe Balbi (5): x86: tsc: add tsc to art helpers PTP: add a callback for counting timestamp events PTP: implement PTP_EVENT_COUNT_TSTAMP ioctl PTP: Add flag for non-periodic output PTP: Add support for Intel PMC Timed GPIO Controller arch/x86/include/asm/tsc.h | 2 + arch/x86/kernel/tsc.c | 32 +++ drivers/ptp/Kconfig | 8 + drivers/ptp/Makefile | 1 + drivers/ptp/ptp-intel-pmc-tgpio.c | 378 ++++++++++++++++++++++++++++++ drivers/ptp/ptp_chardev.c | 15 ++ include/linux/ptp_clock_kernel.h | 12 + include/uapi/linux/ptp_clock.h | 6 +- 8 files changed, 453 insertions(+), 1 deletion(-) create mode 100644 drivers/ptp/ptp-intel-pmc-tgpio.c -- 2.22.0