mbox series

[0/3] Enable PTP timestamping/PPS for AM65x SR1.0 devices

Message ID 20240529-iep-v1-0-7273c07592d3@siemens.com (mailing list archive)
Headers show
Series Enable PTP timestamping/PPS for AM65x SR1.0 devices | expand

Message

Diogo Ivo May 29, 2024, 4:05 p.m. UTC
This patch series enables support for PTP in AM65x SR1.0 devices.

This feature relies heavily on the Industrial Ethernet Peripheral
(IEP) hardware module, which implements a hardware counter through
which time is kept. This hardware block is the basis for exposing
a PTP hardware clock to userspace and for issuing timestamps for
incoming/outgoing packets, allowing for time synchronization.

The IEP also has compare registers that fire an interrupt when the
counter reaches the value stored in a compare register. This feature
allows us to support PPS events in the kernel.

The changes are separated into three patches:
 - PATCH 01/03: Register SR1.0 devices with the IEP infrastructure to
		expose a PHC clock to userspace, allowing time to be
		adjusted using standard PTP tools. The code for issuing/
		collecting packet timestamps is already present in the
		current state of the driver, so only this needs to be
		done.
 - PATCH 02/03: Add support for IEP compare event/interrupt handling
		to enable PPS events.
 - PATCH 03/03: Add the interrupts to the IOT2050 device tree.

Currently every compare event generates two interrupts, the first
corresponding to the actual event and the second being a spurious
but otherwise harmless interrupt. The root cause of this has been
identified and has been solved in the platform's SDK. A forward port
of the SDK's patches also fixes the problem in upstream but is not
included here since it's upstreaming is out of the scope of this
series. If someone from TI would be willing to chime in and help
get the interrupt changes upstream that would be great!

Signed-off-by: Diogo Ivo <diogo.ivo@siemens.com>
---
Diogo Ivo (3):
      net: ti: icssg-prueth: Enable PTP timestamping support for SR1.0 devices
      net: ti: icss-iep: Enable compare events
      arm64: dts: ti: iot2050: Add IEP interrupts for SR1.0 devices

 .../boot/dts/ti/k3-am65-iot2050-common-pg1.dtsi    | 12 ++++
 drivers/net/ethernet/ti/icssg/icss_iep.c           | 71 ++++++++++++++++++++++
 drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c   | 49 ++++++++++++++-
 3 files changed, 131 insertions(+), 1 deletion(-)
---
base-commit: 2f0e3f6a6824dfda2759225326d9c69203c06bc8
change-id: 20240529-iep-8bb4a3cb9068

Best regards,

Comments

Jan Kiszka May 31, 2024, 6:22 a.m. UTC | #1
On 29.05.24 18:05, Diogo Ivo wrote:
> This patch series enables support for PTP in AM65x SR1.0 devices.
> 
> This feature relies heavily on the Industrial Ethernet Peripheral
> (IEP) hardware module, which implements a hardware counter through
> which time is kept. This hardware block is the basis for exposing
> a PTP hardware clock to userspace and for issuing timestamps for
> incoming/outgoing packets, allowing for time synchronization.
> 
> The IEP also has compare registers that fire an interrupt when the
> counter reaches the value stored in a compare register. This feature
> allows us to support PPS events in the kernel.
> 
> The changes are separated into three patches:
>  - PATCH 01/03: Register SR1.0 devices with the IEP infrastructure to
> 		expose a PHC clock to userspace, allowing time to be
> 		adjusted using standard PTP tools. The code for issuing/
> 		collecting packet timestamps is already present in the
> 		current state of the driver, so only this needs to be
> 		done.
>  - PATCH 02/03: Add support for IEP compare event/interrupt handling
> 		to enable PPS events.
>  - PATCH 03/03: Add the interrupts to the IOT2050 device tree.
> 
> Currently every compare event generates two interrupts, the first
> corresponding to the actual event and the second being a spurious
> but otherwise harmless interrupt. The root cause of this has been
> identified and has been solved in the platform's SDK. A forward port
> of the SDK's patches also fixes the problem in upstream but is not
> included here since it's upstreaming is out of the scope of this
> series. If someone from TI would be willing to chime in and help
> get the interrupt changes upstream that would be great!
> 

IIRC, we are talking about this downstream patch:

https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/?h=ti-linux-5.10.y&id=bbe0ff82f922d368cb7e00c5905f6d4a51635c47

Jan

> Signed-off-by: Diogo Ivo <diogo.ivo@siemens.com>
> ---
> Diogo Ivo (3):
>       net: ti: icssg-prueth: Enable PTP timestamping support for SR1.0 devices
>       net: ti: icss-iep: Enable compare events
>       arm64: dts: ti: iot2050: Add IEP interrupts for SR1.0 devices
> 
>  .../boot/dts/ti/k3-am65-iot2050-common-pg1.dtsi    | 12 ++++
>  drivers/net/ethernet/ti/icssg/icss_iep.c           | 71 ++++++++++++++++++++++
>  drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c   | 49 ++++++++++++++-
>  3 files changed, 131 insertions(+), 1 deletion(-)
> ---
> base-commit: 2f0e3f6a6824dfda2759225326d9c69203c06bc8
> change-id: 20240529-iep-8bb4a3cb9068
> 
> Best regards,