18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci#
38c2ecf20Sopenharmony_ci# PTP clock support configuration
48c2ecf20Sopenharmony_ci#
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_cimenu "PTP clock support"
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ciconfig PTP_1588_CLOCK
98c2ecf20Sopenharmony_ci	tristate "PTP clock support"
108c2ecf20Sopenharmony_ci	depends on NET && POSIX_TIMERS
118c2ecf20Sopenharmony_ci	select PPS
128c2ecf20Sopenharmony_ci	select NET_PTP_CLASSIFY
138c2ecf20Sopenharmony_ci	help
148c2ecf20Sopenharmony_ci	  The IEEE 1588 standard defines a method to precisely
158c2ecf20Sopenharmony_ci	  synchronize distributed clocks over Ethernet networks. The
168c2ecf20Sopenharmony_ci	  standard defines a Precision Time Protocol (PTP), which can
178c2ecf20Sopenharmony_ci	  be used to achieve synchronization within a few dozen
188c2ecf20Sopenharmony_ci	  microseconds. In addition, with the help of special hardware
198c2ecf20Sopenharmony_ci	  time stamping units, it can be possible to achieve
208c2ecf20Sopenharmony_ci	  synchronization to within a few hundred nanoseconds.
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci	  This driver adds support for PTP clocks as character
238c2ecf20Sopenharmony_ci	  devices. If you want to use a PTP clock, then you should
248c2ecf20Sopenharmony_ci	  also enable at least one clock driver as well.
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
278c2ecf20Sopenharmony_ci	  will be called ptp.
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciconfig PTP_1588_CLOCK_DTE
308c2ecf20Sopenharmony_ci	tristate "Broadcom DTE as PTP clock"
318c2ecf20Sopenharmony_ci	depends on PTP_1588_CLOCK
328c2ecf20Sopenharmony_ci	depends on NET && HAS_IOMEM
338c2ecf20Sopenharmony_ci	depends on ARCH_BCM_MOBILE || (ARCH_BCM_IPROC && !(ARCH_BCM_NSP || ARCH_BCM_5301X)) || COMPILE_TEST
348c2ecf20Sopenharmony_ci	default y
358c2ecf20Sopenharmony_ci	help
368c2ecf20Sopenharmony_ci	  This driver adds support for using the Digital timing engine
378c2ecf20Sopenharmony_ci	  (DTE) in the Broadcom SoC's as a PTP clock.
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci	  The clock can be used in both wired and wireless networks
408c2ecf20Sopenharmony_ci	  for PTP purposes.
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
438c2ecf20Sopenharmony_ci	  will be called ptp_dte.
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ciconfig PTP_1588_CLOCK_QORIQ
468c2ecf20Sopenharmony_ci	tristate "Freescale QorIQ 1588 timer as PTP clock"
478c2ecf20Sopenharmony_ci	depends on GIANFAR || FSL_DPAA_ETH || FSL_DPAA2_ETH || FSL_ENETC || FSL_ENETC_VF || COMPILE_TEST
488c2ecf20Sopenharmony_ci	depends on PTP_1588_CLOCK
498c2ecf20Sopenharmony_ci	default y
508c2ecf20Sopenharmony_ci	help
518c2ecf20Sopenharmony_ci	  This driver adds support for using the Freescale QorIQ 1588
528c2ecf20Sopenharmony_ci	  timer as a PTP clock. This clock is only useful if your PTP
538c2ecf20Sopenharmony_ci	  programs are getting hardware time stamps on the PTP Ethernet
548c2ecf20Sopenharmony_ci	  packets using the SO_TIMESTAMPING API.
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
578c2ecf20Sopenharmony_ci	  will be called ptp-qoriq.
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_cicomment "Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks."
608c2ecf20Sopenharmony_ci	depends on PHYLIB=n || NETWORK_PHY_TIMESTAMPING=n
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ciconfig DP83640_PHY
638c2ecf20Sopenharmony_ci	tristate "Driver for the National Semiconductor DP83640 PHYTER"
648c2ecf20Sopenharmony_ci	depends on NETWORK_PHY_TIMESTAMPING
658c2ecf20Sopenharmony_ci	depends on PHYLIB
668c2ecf20Sopenharmony_ci	depends on PTP_1588_CLOCK
678c2ecf20Sopenharmony_ci	select CRC32
688c2ecf20Sopenharmony_ci	help
698c2ecf20Sopenharmony_ci	  Supports the DP83640 PHYTER with IEEE 1588 features.
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ci	  This driver adds support for using the DP83640 as a PTP
728c2ecf20Sopenharmony_ci	  clock. This clock is only useful if your PTP programs are
738c2ecf20Sopenharmony_ci	  getting hardware time stamps on the PTP Ethernet packets
748c2ecf20Sopenharmony_ci	  using the SO_TIMESTAMPING API.
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci	  In order for this to work, your MAC driver must also
778c2ecf20Sopenharmony_ci	  implement the skb_tx_timestamp() function.
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ciconfig PTP_1588_CLOCK_INES
808c2ecf20Sopenharmony_ci	tristate "ZHAW InES PTP time stamping IP core"
818c2ecf20Sopenharmony_ci	depends on NETWORK_PHY_TIMESTAMPING
828c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
838c2ecf20Sopenharmony_ci	depends on PHYLIB
848c2ecf20Sopenharmony_ci	depends on PTP_1588_CLOCK
858c2ecf20Sopenharmony_ci	help
868c2ecf20Sopenharmony_ci	  This driver adds support for using the ZHAW InES 1588 IP
878c2ecf20Sopenharmony_ci	  core.  This clock is only useful if the MII bus of your MAC
888c2ecf20Sopenharmony_ci	  is wired up to the core.
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ciconfig PTP_1588_CLOCK_PCH
918c2ecf20Sopenharmony_ci	tristate "Intel PCH EG20T as PTP clock"
928c2ecf20Sopenharmony_ci	depends on X86_32 || COMPILE_TEST
938c2ecf20Sopenharmony_ci	depends on HAS_IOMEM && PCI
948c2ecf20Sopenharmony_ci	depends on NET
958c2ecf20Sopenharmony_ci	imply PTP_1588_CLOCK
968c2ecf20Sopenharmony_ci	help
978c2ecf20Sopenharmony_ci	  This driver adds support for using the PCH EG20T as a PTP
988c2ecf20Sopenharmony_ci	  clock. The hardware supports time stamping of PTP packets
998c2ecf20Sopenharmony_ci	  when using the end-to-end delay (E2E) mechanism. The peer
1008c2ecf20Sopenharmony_ci	  delay mechanism (P2P) is not supported.
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_ci	  This clock is only useful if your PTP programs are getting
1038c2ecf20Sopenharmony_ci	  hardware time stamps on the PTP Ethernet packets using the
1048c2ecf20Sopenharmony_ci	  SO_TIMESTAMPING API.
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
1078c2ecf20Sopenharmony_ci	  will be called ptp_pch.
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ciconfig PTP_1588_CLOCK_KVM
1108c2ecf20Sopenharmony_ci	tristate "KVM virtual PTP clock"
1118c2ecf20Sopenharmony_ci	depends on PTP_1588_CLOCK
1128c2ecf20Sopenharmony_ci	depends on KVM_GUEST && X86
1138c2ecf20Sopenharmony_ci	default y
1148c2ecf20Sopenharmony_ci	help
1158c2ecf20Sopenharmony_ci	  This driver adds support for using kvm infrastructure as a PTP
1168c2ecf20Sopenharmony_ci	  clock. This clock is only useful if you are using KVM guests.
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
1198c2ecf20Sopenharmony_ci	  will be called ptp_kvm.
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_ciconfig PTP_1588_CLOCK_IDT82P33
1228c2ecf20Sopenharmony_ci	tristate "IDT 82P33xxx PTP clock"
1238c2ecf20Sopenharmony_ci	depends on PTP_1588_CLOCK && I2C
1248c2ecf20Sopenharmony_ci	default n
1258c2ecf20Sopenharmony_ci	help
1268c2ecf20Sopenharmony_ci	  This driver adds support for using the IDT 82P33xxx as a PTP
1278c2ecf20Sopenharmony_ci	  clock. This clock is only useful if your time stamping MAC
1288c2ecf20Sopenharmony_ci	  is connected to the IDT chip.
1298c2ecf20Sopenharmony_ci
1308c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
1318c2ecf20Sopenharmony_ci	  will be called ptp_idt82p33.
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ciconfig PTP_1588_CLOCK_IDTCM
1348c2ecf20Sopenharmony_ci	tristate "IDT CLOCKMATRIX as PTP clock"
1358c2ecf20Sopenharmony_ci	depends on PTP_1588_CLOCK && I2C
1368c2ecf20Sopenharmony_ci	default n
1378c2ecf20Sopenharmony_ci	help
1388c2ecf20Sopenharmony_ci	  This driver adds support for using IDT CLOCKMATRIX(TM) as a PTP
1398c2ecf20Sopenharmony_ci	  clock. This clock is only useful if your time stamping MAC
1408c2ecf20Sopenharmony_ci	  is connected to the IDT chip.
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
1438c2ecf20Sopenharmony_ci	  will be called ptp_clockmatrix.
1448c2ecf20Sopenharmony_ci
1458c2ecf20Sopenharmony_ciconfig PTP_1588_CLOCK_VMW
1468c2ecf20Sopenharmony_ci	tristate "VMware virtual PTP clock"
1478c2ecf20Sopenharmony_ci	depends on ACPI && HYPERVISOR_GUEST && X86
1488c2ecf20Sopenharmony_ci	depends on PTP_1588_CLOCK
1498c2ecf20Sopenharmony_ci	help
1508c2ecf20Sopenharmony_ci	  This driver adds support for using VMware virtual precision
1518c2ecf20Sopenharmony_ci	  clock device as a PTP clock. This is only useful in virtual
1528c2ecf20Sopenharmony_ci	  machines running on VMware virtual infrastructure.
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_ci	  To compile this driver as a module, choose M here: the module
1558c2ecf20Sopenharmony_ci	  will be called ptp_vmw.
1568c2ecf20Sopenharmony_ci
1578c2ecf20Sopenharmony_ciendmenu
158