162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# PTP clock support configuration
462306a36Sopenharmony_ci#
562306a36Sopenharmony_ci
662306a36Sopenharmony_cimenu "PTP clock support"
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciconfig PTP_1588_CLOCK
962306a36Sopenharmony_ci	tristate "PTP clock support"
1062306a36Sopenharmony_ci	depends on NET && POSIX_TIMERS
1162306a36Sopenharmony_ci	default ETHERNET
1262306a36Sopenharmony_ci	select PPS
1362306a36Sopenharmony_ci	select NET_PTP_CLASSIFY
1462306a36Sopenharmony_ci	help
1562306a36Sopenharmony_ci	  The IEEE 1588 standard defines a method to precisely
1662306a36Sopenharmony_ci	  synchronize distributed clocks over Ethernet networks. The
1762306a36Sopenharmony_ci	  standard defines a Precision Time Protocol (PTP), which can
1862306a36Sopenharmony_ci	  be used to achieve synchronization within a few dozen
1962306a36Sopenharmony_ci	  microseconds. In addition, with the help of special hardware
2062306a36Sopenharmony_ci	  time stamping units, it can be possible to achieve
2162306a36Sopenharmony_ci	  synchronization to within a few hundred nanoseconds.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci	  This driver adds support for PTP clocks as character
2462306a36Sopenharmony_ci	  devices. If you want to use a PTP clock, then you should
2562306a36Sopenharmony_ci	  also enable at least one clock driver as well.
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
2862306a36Sopenharmony_ci	  will be called ptp.
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciconfig PTP_1588_CLOCK_OPTIONAL
3162306a36Sopenharmony_ci	tristate
3262306a36Sopenharmony_ci	default y if PTP_1588_CLOCK=n
3362306a36Sopenharmony_ci	default PTP_1588_CLOCK
3462306a36Sopenharmony_ci	help
3562306a36Sopenharmony_ci	  Drivers that can optionally use the PTP_1588_CLOCK framework
3662306a36Sopenharmony_ci	  should depend on this symbol to prevent them from being built
3762306a36Sopenharmony_ci	  into vmlinux while the PTP support itself is in a loadable
3862306a36Sopenharmony_ci	  module.
3962306a36Sopenharmony_ci	  If PTP support is disabled, this dependency will still be
4062306a36Sopenharmony_ci	  met, and drivers refer to dummy helpers.
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciconfig PTP_1588_CLOCK_DTE
4362306a36Sopenharmony_ci	tristate "Broadcom DTE as PTP clock"
4462306a36Sopenharmony_ci	depends on PTP_1588_CLOCK
4562306a36Sopenharmony_ci	depends on NET && HAS_IOMEM
4662306a36Sopenharmony_ci	depends on ARCH_BCM_MOBILE || (ARCH_BCM_IPROC && !(ARCH_BCM_NSP || ARCH_BCM_5301X)) || COMPILE_TEST
4762306a36Sopenharmony_ci	default y
4862306a36Sopenharmony_ci	help
4962306a36Sopenharmony_ci	  This driver adds support for using the Digital timing engine
5062306a36Sopenharmony_ci	  (DTE) in the Broadcom SoC's as a PTP clock.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	  The clock can be used in both wired and wireless networks
5362306a36Sopenharmony_ci	  for PTP purposes.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
5662306a36Sopenharmony_ci	  will be called ptp_dte.
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ciconfig PTP_1588_CLOCK_QORIQ
5962306a36Sopenharmony_ci	tristate "Freescale QorIQ 1588 timer as PTP clock"
6062306a36Sopenharmony_ci	depends on GIANFAR || FSL_DPAA_ETH || FSL_DPAA2_ETH || FSL_ENETC || FSL_ENETC_VF || COMPILE_TEST
6162306a36Sopenharmony_ci	depends on PTP_1588_CLOCK
6262306a36Sopenharmony_ci	default y
6362306a36Sopenharmony_ci	help
6462306a36Sopenharmony_ci	  This driver adds support for using the Freescale QorIQ 1588
6562306a36Sopenharmony_ci	  timer as a PTP clock. This clock is only useful if your PTP
6662306a36Sopenharmony_ci	  programs are getting hardware time stamps on the PTP Ethernet
6762306a36Sopenharmony_ci	  packets using the SO_TIMESTAMPING API.
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
7062306a36Sopenharmony_ci	  will be called ptp-qoriq.
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_cicomment "Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks."
7362306a36Sopenharmony_ci	depends on PHYLIB=n || NETWORK_PHY_TIMESTAMPING=n
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ciconfig DP83640_PHY
7662306a36Sopenharmony_ci	tristate "Driver for the National Semiconductor DP83640 PHYTER"
7762306a36Sopenharmony_ci	depends on NETWORK_PHY_TIMESTAMPING
7862306a36Sopenharmony_ci	depends on PHYLIB
7962306a36Sopenharmony_ci	depends on PTP_1588_CLOCK
8062306a36Sopenharmony_ci	select CRC32
8162306a36Sopenharmony_ci	help
8262306a36Sopenharmony_ci	  Supports the DP83640 PHYTER with IEEE 1588 features.
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci	  This driver adds support for using the DP83640 as a PTP
8562306a36Sopenharmony_ci	  clock. This clock is only useful if your PTP programs are
8662306a36Sopenharmony_ci	  getting hardware time stamps on the PTP Ethernet packets
8762306a36Sopenharmony_ci	  using the SO_TIMESTAMPING API.
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci	  In order for this to work, your MAC driver must also
9062306a36Sopenharmony_ci	  implement the skb_tx_timestamp() function.
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ciconfig PTP_1588_CLOCK_INES
9362306a36Sopenharmony_ci	tristate "ZHAW InES PTP time stamping IP core"
9462306a36Sopenharmony_ci	depends on NETWORK_PHY_TIMESTAMPING
9562306a36Sopenharmony_ci	depends on HAS_IOMEM
9662306a36Sopenharmony_ci	depends on PHYLIB
9762306a36Sopenharmony_ci	depends on PTP_1588_CLOCK
9862306a36Sopenharmony_ci	help
9962306a36Sopenharmony_ci	  This driver adds support for using the ZHAW InES 1588 IP
10062306a36Sopenharmony_ci	  core.  This clock is only useful if the MII bus of your MAC
10162306a36Sopenharmony_ci	  is wired up to the core.
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ciconfig PTP_1588_CLOCK_PCH
10462306a36Sopenharmony_ci	tristate "Intel PCH EG20T as PTP clock"
10562306a36Sopenharmony_ci	depends on MIPS_GENERIC || X86_32 || COMPILE_TEST
10662306a36Sopenharmony_ci	depends on HAS_IOMEM && PCI
10762306a36Sopenharmony_ci	depends on NET
10862306a36Sopenharmony_ci	depends on PTP_1588_CLOCK
10962306a36Sopenharmony_ci	help
11062306a36Sopenharmony_ci	  This driver adds support for using the PCH EG20T as a PTP
11162306a36Sopenharmony_ci	  clock. The hardware supports time stamping of PTP packets
11262306a36Sopenharmony_ci	  when using the end-to-end delay (E2E) mechanism. The peer
11362306a36Sopenharmony_ci	  delay mechanism (P2P) is not supported.
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci	  This clock is only useful if your PTP programs are getting
11662306a36Sopenharmony_ci	  hardware time stamps on the PTP Ethernet packets using the
11762306a36Sopenharmony_ci	  SO_TIMESTAMPING API.
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
12062306a36Sopenharmony_ci	  will be called ptp_pch.
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ciconfig PTP_1588_CLOCK_KVM
12362306a36Sopenharmony_ci	tristate "KVM virtual PTP clock"
12462306a36Sopenharmony_ci	depends on PTP_1588_CLOCK
12562306a36Sopenharmony_ci	depends on (KVM_GUEST && X86) || (HAVE_ARM_SMCCC_DISCOVERY && ARM_ARCH_TIMER)
12662306a36Sopenharmony_ci	default y
12762306a36Sopenharmony_ci	help
12862306a36Sopenharmony_ci	  This driver adds support for using kvm infrastructure as a PTP
12962306a36Sopenharmony_ci	  clock. This clock is only useful if you are using KVM guests.
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
13262306a36Sopenharmony_ci	  will be called ptp_kvm.
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ciconfig PTP_1588_CLOCK_IDT82P33
13562306a36Sopenharmony_ci	tristate "IDT 82P33xxx PTP clock"
13662306a36Sopenharmony_ci	depends on PTP_1588_CLOCK && I2C
13762306a36Sopenharmony_ci	default n
13862306a36Sopenharmony_ci	help
13962306a36Sopenharmony_ci	  This driver adds support for using the IDT 82P33xxx as a PTP
14062306a36Sopenharmony_ci	  clock. This clock is only useful if your time stamping MAC
14162306a36Sopenharmony_ci	  is connected to the IDT chip.
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
14462306a36Sopenharmony_ci	  will be called ptp_idt82p33.
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ciconfig PTP_1588_CLOCK_IDTCM
14762306a36Sopenharmony_ci	tristate "IDT CLOCKMATRIX as PTP clock"
14862306a36Sopenharmony_ci	depends on PTP_1588_CLOCK && I2C
14962306a36Sopenharmony_ci	default n
15062306a36Sopenharmony_ci	help
15162306a36Sopenharmony_ci	  This driver adds support for using IDT CLOCKMATRIX(TM) as a PTP
15262306a36Sopenharmony_ci	  clock. This clock is only useful if your time stamping MAC
15362306a36Sopenharmony_ci	  is connected to the IDT chip.
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
15662306a36Sopenharmony_ci	  will be called ptp_clockmatrix.
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ciconfig PTP_1588_CLOCK_MOCK
15962306a36Sopenharmony_ci	tristate "Mock-up PTP clock"
16062306a36Sopenharmony_ci	depends on PTP_1588_CLOCK
16162306a36Sopenharmony_ci	help
16262306a36Sopenharmony_ci	  This driver offers a set of PTP clock manipulation operations over
16362306a36Sopenharmony_ci	  the system monotonic time. It can be used by virtual network device
16462306a36Sopenharmony_ci	  drivers to emulate PTP capabilities.
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
16762306a36Sopenharmony_ci	  will be called ptp_mock.
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ciconfig PTP_1588_CLOCK_VMW
17062306a36Sopenharmony_ci	tristate "VMware virtual PTP clock"
17162306a36Sopenharmony_ci	depends on ACPI && HYPERVISOR_GUEST && X86
17262306a36Sopenharmony_ci	depends on PTP_1588_CLOCK
17362306a36Sopenharmony_ci	help
17462306a36Sopenharmony_ci	  This driver adds support for using VMware virtual precision
17562306a36Sopenharmony_ci	  clock device as a PTP clock. This is only useful in virtual
17662306a36Sopenharmony_ci	  machines running on VMware virtual infrastructure.
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
17962306a36Sopenharmony_ci	  will be called ptp_vmw.
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ciconfig PTP_1588_CLOCK_OCP
18262306a36Sopenharmony_ci	tristate "OpenCompute TimeCard as PTP clock"
18362306a36Sopenharmony_ci	depends on PTP_1588_CLOCK
18462306a36Sopenharmony_ci	depends on HAS_IOMEM && PCI
18562306a36Sopenharmony_ci	depends on I2C && MTD
18662306a36Sopenharmony_ci	depends on SERIAL_8250
18762306a36Sopenharmony_ci	depends on !S390
18862306a36Sopenharmony_ci	depends on COMMON_CLK
18962306a36Sopenharmony_ci	select NET_DEVLINK
19062306a36Sopenharmony_ci	select CRC16
19162306a36Sopenharmony_ci	help
19262306a36Sopenharmony_ci	  This driver adds support for an OpenCompute time card.
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ci	  The OpenCompute time card is an atomic clock along with
19562306a36Sopenharmony_ci	  a GPS receiver that provides a Grandmaster clock source
19662306a36Sopenharmony_ci	  for a PTP enabled network.
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ci	  More information is available at http://www.timingcard.com/
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ciconfig PTP_DFL_TOD
20162306a36Sopenharmony_ci	tristate "FPGA DFL ToD Driver"
20262306a36Sopenharmony_ci	depends on FPGA_DFL
20362306a36Sopenharmony_ci	depends on PTP_1588_CLOCK
20462306a36Sopenharmony_ci	help
20562306a36Sopenharmony_ci	  The DFL (Device Feature List) device driver for the Intel ToD
20662306a36Sopenharmony_ci	  (Time-of-Day) device in FPGA card. The ToD IP within the FPGA
20762306a36Sopenharmony_ci	  is exposed as PTP Hardware Clock (PHC) device to the Linux PTP
20862306a36Sopenharmony_ci	  stack to synchronize the system clock to its ToD information
20962306a36Sopenharmony_ci	  using phc2sys utility of the Linux PTP stack.
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
21262306a36Sopenharmony_ci	  will be called ptp_dfl_tod.
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ciendmenu
215