|
|
Log in / Subscribe / Register

Add support for Intel PMC Time GPIO Driver with PHC interface changes to support additional H/W Features

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



Copyright © 2020, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds