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

config PTP_NETC_V4_TIMER
	tristate "NXP NETC V4 Timer PTP Driver"
	depends on PTP_1588_CLOCK
	depends on PCI_MSI
	help
	  This driver adds support for using the NXP NETC V4 Timer as a PTP
	  clock, the clock is used by ENETC V4 or NETC V4 Switch for PTP time
	  synchronization. It also supports periodic output signal (e.g. PPS)
	  and external trigger timestamping.

endmenu
