# 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_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
