mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-20 06:20:41 +00:00

The Intel Timed IO PPS generator driver outputs a PPS signal using dedicated hardware that is more accurate than software actuated PPS. The Timed IO hardware generates output events using the ART timer. The ART timer period varies based on platform type, but is less than 100 nanoseconds for all current platforms. Timed IO output accuracy is within 1 ART period. PPS output is enabled by writing '1' the 'enable' sysfs attribute. The driver uses hrtimers to schedule a wake-up 10 ms before each event (edge) target time. At wakeup, the driver converts the target time in terms of CLOCK_REALTIME to ART trigger time and writes this to the Timed IO hardware. The Timed IO hardware generates an event precisely at the requested system time without software involvement. Co-developed-by: Christopher Hall <christopher.s.hall@intel.com> Signed-off-by: Christopher Hall <christopher.s.hall@intel.com> Co-developed-by: Pandith N <pandith.n@intel.com> Signed-off-by: Pandith N <pandith.n@intel.com> Co-developed-by: Thejesh Reddy T R <thejesh.reddy.t.r@intel.com> Signed-off-by: Thejesh Reddy T R <thejesh.reddy.t.r@intel.com> Signed-off-by: Lakshmi Sowjanya D <lakshmi.sowjanya.d@intel.com> Reviewed-by: Eddie Dong <eddie.dong@intel.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Acked-by: Rodolfo Giometti <giometti@enneenne.com> Signed-off-by: Subramanian Mohan <subramanian.mohan@intel.com> Link: https://lore.kernel.org/r/20250219040618.70962-3-subramanian.mohan@intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
50 lines
1.7 KiB
Text
50 lines
1.7 KiB
Text
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# PPS generators configuration
|
|
#
|
|
|
|
menuconfig PPS_GENERATOR
|
|
tristate "PPS generators support"
|
|
help
|
|
PPS generators are special hardware which are able to produce PPS
|
|
(Pulse Per Second) signals.
|
|
|
|
To compile this driver as a module, choose M here: the module
|
|
will be called pps_gen_core.
|
|
|
|
if PPS_GENERATOR
|
|
|
|
config PPS_GENERATOR_DUMMY
|
|
tristate "Dummy PPS generator (Testing generator, use for debug)"
|
|
help
|
|
If you say yes here you get support for a PPS debugging generator
|
|
(which generates no PPS signal at all).
|
|
|
|
This driver can also be built as a module. If so, the module
|
|
will be called pps_gen-dummy.
|
|
|
|
config PPS_GENERATOR_PARPORT
|
|
tristate "Parallel port PPS signal generator"
|
|
depends on PARPORT && BROKEN
|
|
help
|
|
If you say yes here you get support for a PPS signal generator which
|
|
utilizes STROBE pin of a parallel port to send PPS signals. It uses
|
|
parport abstraction layer and hrtimers to precisely control the signal.
|
|
|
|
config PPS_GENERATOR_TIO
|
|
tristate "TIO PPS signal generator"
|
|
depends on X86 && CPU_SUP_INTEL
|
|
help
|
|
If you say yes here you get support for a PPS TIO signal generator
|
|
which generates a pulse at a prescribed time based on the system clock.
|
|
It uses time translation and hrtimers to precisely generate a pulse.
|
|
This hardware is present on 2019 and newer Intel CPUs. However, this
|
|
driver is not useful without adding highly specialized hardware outside
|
|
the Linux system to observe these pulses.
|
|
|
|
To compile this driver as a module, choose M here: the module
|
|
will be called pps_gen_tio.
|
|
|
|
If unsure, say N.
|
|
|
|
endif # PPS_GENERATOR
|