| # SPDX-License-Identifier: GPL-2.0-only | 
 | # | 
 | # PTP clock support configuration | 
 | # | 
 |  | 
 | menu "PTP clock support" | 
 |  | 
 | config PTP_1588_CLOCK | 
 | 	tristate "PTP clock support" | 
 | 	depends on NET && POSIX_TIMERS | 
 | 	default ETHERNET | 
 | 	select PPS | 
 | 	select NET_PTP_CLASSIFY | 
 | 	help | 
 | 	  The IEEE 1588 standard defines a method to precisely | 
 | 	  synchronize distributed clocks over Ethernet networks. The | 
 | 	  standard defines a Precision Time Protocol (PTP), which can | 
 | 	  be used to achieve synchronization within a few dozen | 
 | 	  microseconds. In addition, with the help of special hardware | 
 | 	  time stamping units, it can be possible to achieve | 
 | 	  synchronization to within a few hundred nanoseconds. | 
 |  | 
 | 	  This driver adds support for PTP clocks as character | 
 | 	  devices. If you want to use a PTP clock, then you should | 
 | 	  also enable at least one clock driver as well. | 
 |  | 
 | 	  To compile this driver as a module, choose M here: the module | 
 | 	  will be called ptp. | 
 |  | 
 | config PTP_1588_CLOCK_OPTIONAL | 
 | 	tristate | 
 | 	default y if PTP_1588_CLOCK=n | 
 | 	default PTP_1588_CLOCK | 
 | 	help | 
 | 	  Drivers that can optionally use the PTP_1588_CLOCK framework | 
 | 	  should depend on this symbol to prevent them from being built | 
 | 	  into vmlinux while the PTP support itself is in a loadable | 
 | 	  module. | 
 | 	  If PTP support is disabled, this dependency will still be | 
 | 	  met, and drivers refer to dummy helpers. | 
 |  | 
 | config PTP_1588_CLOCK_DTE | 
 | 	tristate "Broadcom DTE as PTP clock" | 
 | 	depends on PTP_1588_CLOCK | 
 | 	depends on NET && HAS_IOMEM | 
 | 	depends on ARCH_BCM_MOBILE || (ARCH_BCM_IPROC && !(ARCH_BCM_NSP || ARCH_BCM_5301X)) || COMPILE_TEST | 
 | 	default y if ARCH_BCM_MOBILE || ARCH_BCM_IPROC | 
 | 	help | 
 | 	  This driver adds support for using the Digital timing engine | 
 | 	  (DTE) in the Broadcom SoC's as a PTP clock. | 
 |  | 
 | 	  The clock can be used in both wired and wireless networks | 
 | 	  for PTP purposes. | 
 |  | 
 | 	  To compile this driver as a module, choose M here: the module | 
 | 	  will be called ptp_dte. | 
 |  | 
 | config PTP_1588_CLOCK_QORIQ | 
 | 	tristate "Freescale QorIQ 1588 timer as PTP clock" | 
 | 	depends on GIANFAR || FSL_DPAA_ETH || FSL_DPAA2_ETH || FSL_ENETC || FSL_ENETC_VF || COMPILE_TEST | 
 | 	depends on PTP_1588_CLOCK | 
 | 	default y if GIANFAR || FSL_DPAA_ETH || FSL_DPAA2_ETH || FSL_ENETC || FSL_ENETC_VF | 
 | 	help | 
 | 	  This driver adds support for using the Freescale QorIQ 1588 | 
 | 	  timer as a PTP clock. This clock is only useful if your PTP | 
 | 	  programs are getting hardware time stamps on the PTP Ethernet | 
 | 	  packets using the SO_TIMESTAMPING API. | 
 |  | 
 | 	  To compile this driver as a module, choose M here: the module | 
 | 	  will be called ptp-qoriq. | 
 |  | 
 | comment "Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks." | 
 | 	depends on PHYLIB=n || NETWORK_PHY_TIMESTAMPING=n | 
 |  | 
 | config DP83640_PHY | 
 | 	tristate "Driver for the National Semiconductor DP83640 PHYTER" | 
 | 	depends on NETWORK_PHY_TIMESTAMPING | 
 | 	depends on PHYLIB | 
 | 	depends on PTP_1588_CLOCK | 
 | 	select CRC32 | 
 | 	help | 
 | 	  Supports the DP83640 PHYTER with IEEE 1588 features. | 
 |  | 
 | 	  This driver adds support for using the DP83640 as a PTP | 
 | 	  clock. This clock is only useful if your PTP programs are | 
 | 	  getting hardware time stamps on the PTP Ethernet packets | 
 | 	  using the SO_TIMESTAMPING API. | 
 |  | 
 | 	  In order for this to work, your MAC driver must also | 
 | 	  implement the skb_tx_timestamp() function. | 
 |  | 
 | config PTP_1588_CLOCK_INES | 
 | 	tristate "ZHAW InES PTP time stamping IP core" | 
 | 	depends on NETWORK_PHY_TIMESTAMPING | 
 | 	depends on HAS_IOMEM | 
 | 	depends on PHYLIB | 
 | 	depends on PTP_1588_CLOCK | 
 | 	help | 
 | 	  This driver adds support for using the ZHAW InES 1588 IP | 
 | 	  core.  This clock is only useful if the MII bus of your MAC | 
 | 	  is wired up to the core. | 
 |  | 
 | config PTP_1588_CLOCK_PCH | 
 | 	tristate "Intel PCH EG20T as PTP clock" | 
 | 	depends on MIPS_GENERIC || X86_32 || COMPILE_TEST | 
 | 	depends on HAS_IOMEM && PCI | 
 | 	depends on NET | 
 | 	depends on PTP_1588_CLOCK | 
 | 	help | 
 | 	  This driver adds support for using the PCH EG20T as a PTP | 
 | 	  clock. The hardware supports time stamping of PTP packets | 
 | 	  when using the end-to-end delay (E2E) mechanism. The peer | 
 | 	  delay mechanism (P2P) is not supported. | 
 |  | 
 | 	  This clock is only useful if your PTP programs are getting | 
 | 	  hardware time stamps on the PTP Ethernet packets using the | 
 | 	  SO_TIMESTAMPING API. | 
 |  | 
 | 	  To compile this driver as a module, choose M here: the module | 
 | 	  will be called ptp_pch. | 
 |  | 
 | config PTP_1588_CLOCK_KVM | 
 | 	tristate "KVM virtual PTP clock" | 
 | 	depends on PTP_1588_CLOCK | 
 | 	depends on (KVM_GUEST && X86) || (HAVE_ARM_SMCCC_DISCOVERY && ARM_ARCH_TIMER) | 
 | 	default y | 
 | 	help | 
 | 	  This driver adds support for using kvm infrastructure as a PTP | 
 | 	  clock. This clock is only useful if you are using KVM guests. | 
 |  | 
 | 	  To compile this driver as a module, choose M here: the module | 
 | 	  will be called ptp_kvm. | 
 |  | 
 | config PTP_1588_CLOCK_VMCLOCK | 
 | 	tristate "Virtual machine PTP clock" | 
 | 	depends on X86_TSC || ARM_ARCH_TIMER | 
 | 	depends on PTP_1588_CLOCK && ACPI && ARCH_SUPPORTS_INT128 | 
 | 	default PTP_1588_CLOCK_KVM | 
 | 	help | 
 | 	  This driver adds support for using a virtual precision clock | 
 | 	  advertised by the hypervisor. This clock is only useful in virtual | 
 | 	  machines where such a device is present. | 
 |  | 
 | 	  Unlike the KVM virtual PTP clock, the VMCLOCK device offers support | 
 | 	  for reliable timekeeping even across live migration. So this driver | 
 | 	  is enabled by default whenever the KVM PTP clock is. | 
 |  | 
 | 	  To compile this driver as a module, choose M here: the module | 
 | 	  will be called ptp_vmclock. | 
 |  | 
 | config PTP_1588_CLOCK_IDT82P33 | 
 | 	tristate "IDT 82P33xxx PTP clock" | 
 | 	depends on PTP_1588_CLOCK && I2C | 
 | 	default n | 
 | 	help | 
 | 	  This driver adds support for using the IDT 82P33xxx as a PTP | 
 | 	  clock. This clock is only useful if your time stamping MAC | 
 | 	  is connected to the IDT chip. | 
 |  | 
 | 	  To compile this driver as a module, choose M here: the module | 
 | 	  will be called ptp_idt82p33. | 
 |  | 
 | config PTP_1588_CLOCK_IDTCM | 
 | 	tristate "IDT CLOCKMATRIX as PTP clock" | 
 | 	depends on PTP_1588_CLOCK && I2C | 
 | 	default n | 
 | 	help | 
 | 	  This driver adds support for using IDT CLOCKMATRIX(TM) as a PTP | 
 | 	  clock. This clock is only useful if your time stamping MAC | 
 | 	  is connected to the IDT chip. | 
 |  | 
 | 	  To compile this driver as a module, choose M here: the module | 
 | 	  will be called ptp_clockmatrix. | 
 |  | 
 | config PTP_1588_CLOCK_FC3W | 
 | 	tristate "RENESAS FemtoClock3 Wireless as PTP clock" | 
 | 	depends on PTP_1588_CLOCK && I2C | 
 | 	default n | 
 | 	help | 
 | 	  This driver adds support for using Renesas FemtoClock3 Wireless | 
 | 	  as a PTP clock. This clock is only useful if your time stamping | 
 | 	  MAC is connected to the RENESAS chip. | 
 |  | 
 | 	  To compile this driver as a module, choose M here: the module | 
 | 	  will be called ptp_fc3. | 
 |  | 
 | config PTP_1588_CLOCK_MOCK | 
 | 	tristate "Mock-up PTP clock" | 
 | 	depends on PTP_1588_CLOCK | 
 | 	help | 
 | 	  This driver offers a set of PTP clock manipulation operations over | 
 | 	  the system monotonic time. It can be used by virtual network device | 
 | 	  drivers to emulate PTP capabilities. | 
 |  | 
 | 	  To compile this driver as a module, choose M here: the module | 
 | 	  will be called ptp_mock. | 
 |  | 
 | config PTP_1588_CLOCK_VMW | 
 | 	tristate "VMware virtual PTP clock" | 
 | 	depends on ACPI && HYPERVISOR_GUEST && X86 | 
 | 	depends on PTP_1588_CLOCK | 
 | 	help | 
 | 	  This driver adds support for using VMware virtual precision | 
 | 	  clock device as a PTP clock. This is only useful in virtual | 
 | 	  machines running on VMware virtual infrastructure. | 
 |  | 
 | 	  To compile this driver as a module, choose M here: the module | 
 | 	  will be called ptp_vmw. | 
 |  | 
 | config PTP_1588_CLOCK_OCP | 
 | 	tristate "OpenCompute TimeCard as PTP clock" | 
 | 	depends on PTP_1588_CLOCK | 
 | 	depends on HAS_IOMEM && PCI | 
 | 	depends on I2C && MTD | 
 | 	depends on SERIAL_8250 | 
 | 	depends on !S390 | 
 | 	depends on COMMON_CLK | 
 | 	select NET_DEVLINK | 
 | 	select CRC16 | 
 | 	select DPLL | 
 | 	help | 
 | 	  This driver adds support for an OpenCompute time card. | 
 |  | 
 | 	  The OpenCompute time card is an atomic clock along with | 
 | 	  a GPS receiver that provides a Grandmaster clock source | 
 | 	  for a PTP enabled network. | 
 |  | 
 | 	  More information is available at http://www.timingcard.com/ | 
 |  | 
 | config PTP_DFL_TOD | 
 | 	tristate "FPGA DFL ToD Driver" | 
 | 	depends on FPGA_DFL | 
 | 	depends on PTP_1588_CLOCK | 
 | 	help | 
 | 	  The DFL (Device Feature List) device driver for the Intel ToD | 
 | 	  (Time-of-Day) device in FPGA card. The ToD IP within the FPGA | 
 | 	  is exposed as PTP Hardware Clock (PHC) device to the Linux PTP | 
 | 	  stack to synchronize the system clock to its ToD information | 
 | 	  using phc2sys utility of the Linux PTP stack. | 
 |  | 
 | 	  To compile this driver as a module, choose M here: the module | 
 | 	  will be called ptp_dfl_tod. | 
 |  | 
 | config PTP_S390 | 
 | 	tristate "S390 PTP driver" | 
 | 	depends on PTP_1588_CLOCK | 
 | 	depends on S390 | 
 | 	help | 
 | 	  This driver adds support for S390 time steering via the PtP | 
 | 	  interface. This works by adding a in-kernel clock delta value, | 
 | 	  which is always added to time values used in the kernel. The PtP | 
 | 	  driver provides the raw clock value without the delta to | 
 | 	  userspace. That way userspace programs like chrony could steer | 
 | 	  the kernel clock. | 
 | endmenu |