On 14/01/2026 09:13, Wen Gu wrote:
On 2026/1/12 22:52, Vadim Fedorenko wrote:
On 12/01/2026 13:24, Andrew Lunn wrote:
drivers/ptp/core - API as written above
drivers/ptp/virtual - all PtP drivers somehow emulating a PtP clock
(like the ptp_s390 driver)
drivers/ptp/net - all NIC related drivers.
Well, drivers/ptp/virtual is not really good, because some drivers are
for physical devices exporting PTP interface, but without NIC.
If the lack of a NIC is the differentiating property:
drivers/ptp/net - all NIC related drivers.
drivers/ptp/netless - all related drivers which are not associated
to a NIC.
Or
drivers/ptp/emulating - all drivers emulating a PtP clock
I would go with "emulating" then.
Andrew
Thank you all for your suggestions.
The drivers under drivers/ptp can be divided into (to my knowledge):
1. Network/1588-oriented clocks, which allow the use of tools like
ptp4l to synchronize the local PHC with an external reference clock
(based on the network or other methods) via the 1588 protocol to
maintain accuracy. Examples include:
- ptp_dte
- ptp_qoriq
- ptp_ines
- ptp_pch
- ptp_idt82p33
- ptp_clockmatrix
- ptp_fc3
- ptp_mock (mock/testing)
- ptp_dfl_tod
- ptp_netc
- ptp_ocp (a special case which provides a grandmaster
clock for a PTP enabled network, generally
serves as the reference clock)
ptp_ocp is a timecard driver, which doesn't require calibration by
ptp4l/ts2phc. OCP TimeCards have their own Atomic Clock onboard which
is disciplined by 1-PPS or 10mhz signal from configurable source. The
disciplining algorithm is implemented in Atomic Clock package
controller. The driver exposes ptp device mostly for reading the time.
So I believe it belongs to group 2 rather than 1588 group.
2. Platform/infrastructure/hypervisor-provided clocks. They don't
require calibration by ptp4l based on 1588 and reference clocks,
instead the underlay handle this. Users generally read the time.
They include:
- ptp_kvm
- ptp_vmclock
- ptp_vmw
- ptp_s390
- ptp_cipu (upstreaming)
From this perspective, I agree that "emulating" could be an appropriate
name for the second ones.
And I would like to further group the first ones to "1588", thus
divide drivers/ptp to:
- drivers/ptp/core
- drivers/ptp/1588
- drivers/ptp/emulating
Regards.