^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) # PTP clock support configuration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) menu "PTP clock support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) config PTP_1588_CLOCK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) tristate "PTP clock support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) depends on NET && POSIX_TIMERS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) select PPS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) select NET_PTP_CLASSIFY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) The IEEE 1588 standard defines a method to precisely
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) synchronize distributed clocks over Ethernet networks. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) standard defines a Precision Time Protocol (PTP), which can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) be used to achieve synchronization within a few dozen
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) microseconds. In addition, with the help of special hardware
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) time stamping units, it can be possible to achieve
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) synchronization to within a few hundred nanoseconds.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) This driver adds support for PTP clocks as character
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) devices. If you want to use a PTP clock, then you should
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) also enable at least one clock driver as well.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) To compile this driver as a module, choose M here: the module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) will be called ptp.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) config PTP_1588_CLOCK_DTE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) tristate "Broadcom DTE as PTP clock"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) depends on PTP_1588_CLOCK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) depends on NET && HAS_IOMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) depends on ARCH_BCM_MOBILE || (ARCH_BCM_IPROC && !(ARCH_BCM_NSP || ARCH_BCM_5301X)) || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) This driver adds support for using the Digital timing engine
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) (DTE) in the Broadcom SoC's as a PTP clock.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) The clock can be used in both wired and wireless networks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) for PTP purposes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) To compile this driver as a module, choose M here: the module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) will be called ptp_dte.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) config PTP_1588_CLOCK_QORIQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) tristate "Freescale QorIQ 1588 timer as PTP clock"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) depends on GIANFAR || FSL_DPAA_ETH || FSL_DPAA2_ETH || FSL_ENETC || FSL_ENETC_VF || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) depends on PTP_1588_CLOCK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) This driver adds support for using the Freescale QorIQ 1588
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) timer as a PTP clock. This clock is only useful if your PTP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) programs are getting hardware time stamps on the PTP Ethernet
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) packets using the SO_TIMESTAMPING API.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) To compile this driver as a module, choose M here: the module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) will be called ptp-qoriq.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) comment "Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks."
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) depends on PHYLIB=n || NETWORK_PHY_TIMESTAMPING=n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) config DP83640_PHY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) tristate "Driver for the National Semiconductor DP83640 PHYTER"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) depends on NETWORK_PHY_TIMESTAMPING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) depends on PHYLIB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) depends on PTP_1588_CLOCK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) select CRC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) Supports the DP83640 PHYTER with IEEE 1588 features.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) This driver adds support for using the DP83640 as a PTP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) clock. This clock is only useful if your PTP programs are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) getting hardware time stamps on the PTP Ethernet packets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) using the SO_TIMESTAMPING API.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) In order for this to work, your MAC driver must also
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) implement the skb_tx_timestamp() function.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) config PTP_1588_CLOCK_INES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) tristate "ZHAW InES PTP time stamping IP core"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) depends on NETWORK_PHY_TIMESTAMPING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) depends on HAS_IOMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) depends on PHYLIB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) depends on PTP_1588_CLOCK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) This driver adds support for using the ZHAW InES 1588 IP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) core. This clock is only useful if the MII bus of your MAC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) is wired up to the core.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) config PTP_1588_CLOCK_PCH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) tristate "Intel PCH EG20T as PTP clock"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) depends on X86_32 || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) depends on HAS_IOMEM && PCI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) depends on NET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) imply PTP_1588_CLOCK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) This driver adds support for using the PCH EG20T as a PTP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) clock. The hardware supports time stamping of PTP packets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) when using the end-to-end delay (E2E) mechanism. The peer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) delay mechanism (P2P) is not supported.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) This clock is only useful if your PTP programs are getting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) hardware time stamps on the PTP Ethernet packets using the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) SO_TIMESTAMPING API.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) To compile this driver as a module, choose M here: the module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) will be called ptp_pch.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) config PTP_1588_CLOCK_KVM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) tristate "KVM virtual PTP clock"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) depends on PTP_1588_CLOCK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) depends on KVM_GUEST && X86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) This driver adds support for using kvm infrastructure as a PTP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) clock. This clock is only useful if you are using KVM guests.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) To compile this driver as a module, choose M here: the module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) will be called ptp_kvm.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) config PTP_1588_CLOCK_IDT82P33
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) tristate "IDT 82P33xxx PTP clock"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) depends on PTP_1588_CLOCK && I2C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) This driver adds support for using the IDT 82P33xxx as a PTP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) clock. This clock is only useful if your time stamping MAC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) is connected to the IDT chip.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) To compile this driver as a module, choose M here: the module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) will be called ptp_idt82p33.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) config PTP_1588_CLOCK_IDTCM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) tristate "IDT CLOCKMATRIX as PTP clock"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) depends on PTP_1588_CLOCK && I2C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) This driver adds support for using IDT CLOCKMATRIX(TM) as a PTP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) clock. This clock is only useful if your time stamping MAC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) is connected to the IDT chip.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) To compile this driver as a module, choose M here: the module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) will be called ptp_clockmatrix.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) config PTP_1588_CLOCK_VMW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) tristate "VMware virtual PTP clock"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) depends on ACPI && HYPERVISOR_GUEST && X86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) depends on PTP_1588_CLOCK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) This driver adds support for using VMware virtual precision
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) clock device as a PTP clock. This is only useful in virtual
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) machines running on VMware virtual infrastructure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) To compile this driver as a module, choose M here: the module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) will be called ptp_vmw.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) endmenu