Skip to content

Commit 6e87ac7

Browse files
grygoriySdavem330
authored andcommitted
dt-binding: ti: am65x: document common platform time sync cpts module
Document device tree bindings for TI AM654/J721E SoC The Common Platform Time Sync (CPTS) module. The CPTS module is used to facilitate host control of time sync operations. Main features of CPTS module are: - selection of multiple external clock sources - 64-bit timestamp mode in ns with ppm and nudge adjustment. - control of time sync events via interrupt or polling - hardware timestamp of ext. events (HWx_TS_PUSH) - periodic generator function outputs (TS_GENFx) - PPS in combination with timesync router - Depending on integration it enables compliance with the IEEE 1588-2008 standard for a precision clock synchronization protocol, Ethernet Enhanced Scheduled Traffic Operations (CPTS_ESTFn) and PCIe Subsystem Precision Time Measurement (PTM). Signed-off-by: Grygorii Strashko <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 1248dc0 commit 6e87ac7

File tree

2 files changed

+159
-0
lines changed

2 files changed

+159
-0
lines changed

Documentation/devicetree/bindings/net/ti,k3-am654-cpsw-nuss.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,13 @@ patternProperties:
144144
description:
145145
CPSW MDIO bus.
146146

147+
"^cpts$":
148+
type: object
149+
allOf:
150+
- $ref: "ti,am654-cpts.yaml#"
151+
description:
152+
CPSW Common Platform Time Sync (CPTS) module.
153+
147154
required:
148155
- compatible
149156
- reg
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/net/ti,am654-cpts.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: The TI AM654x/J721E Common Platform Time Sync (CPTS) module Device Tree Bindings
8+
9+
maintainers:
10+
- Grygorii Strashko <[email protected]>
11+
- Sekhar Nori <[email protected]>
12+
13+
description: |+
14+
The TI AM654x/J721E CPTS module is used to facilitate host control of time
15+
sync operations.
16+
Main features of CPTS module are
17+
- selection of multiple external clock sources
18+
- Software control of time sync events via interrupt or polling
19+
- 64-bit timestamp mode in ns with PPM and nudge adjustment.
20+
- hardware timestamp push inputs (HWx_TS_PUSH)
21+
- timestamp counter compare output (TS_COMP)
22+
- timestamp counter bit output (TS_SYNC)
23+
- periodic Generator function outputs (TS_GENFx)
24+
- Ethernet Enhanced Scheduled Traffic Operations (CPTS_ESTFn) (TSN)
25+
- external hardware timestamp push inputs (HWx_TS_PUSH) timestamping
26+
27+
Depending on integration it enables compliance with the IEEE 1588-2008
28+
standard for a precision clock synchronization protocol, Ethernet Enhanced
29+
Scheduled Traffic Operations (CPTS_ESTFn) and PCIe Subsystem Precision Time
30+
Measurement (PTM).
31+
32+
TI AM654x/J721E SoCs has several similar CPTS modules integrated into the
33+
different parts of the system which could be synchronized with each other
34+
- Main CPTS
35+
- MCU CPSW CPTS with IEEE 1588-2008 support
36+
- PCIe subsystem CPTS for PTM support
37+
38+
Depending on CPTS module integration and when CPTS is integral part of
39+
another module (MCU CPSW for example) "compatible" and "reg" can
40+
be omitted - parent module is fully responsible for CPTS enabling and
41+
configuration.
42+
43+
properties:
44+
$nodename:
45+
pattern: "^cpts(@.*|-[0-9a-f])*$"
46+
47+
compatible:
48+
oneOf:
49+
- const: ti,am65-cpts
50+
- const: ti,j721e-cpts
51+
52+
reg:
53+
maxItems: 1
54+
description:
55+
The physical base address and size of CPTS IO range
56+
57+
reg-names:
58+
items:
59+
- const: cpts
60+
61+
clocks:
62+
description: CPTS reference clock
63+
64+
clock-names:
65+
items:
66+
- const: cpts
67+
68+
interrupts-extended:
69+
items:
70+
- description: CPTS events interrupt
71+
72+
interrupt-names:
73+
items:
74+
- const: "cpts"
75+
76+
ti,cpts-ext-ts-inputs:
77+
allOf:
78+
- $ref: /schemas/types.yaml#/definitions/uint32
79+
maximum: 8
80+
description:
81+
Number of hardware timestamp push inputs (HWx_TS_PUSH)
82+
83+
ti,cpts-periodic-outputs:
84+
allOf:
85+
- $ref: /schemas/types.yaml#/definitions/uint32
86+
maximum: 8
87+
description:
88+
Number of timestamp Generator function outputs (TS_GENFx)
89+
90+
refclk-mux:
91+
type: object
92+
description: CPTS reference clock multiplexer clock
93+
properties:
94+
'#clock-cells':
95+
const: 0
96+
97+
clocks:
98+
maxItems: 8
99+
100+
assigned-clocks:
101+
maxItems: 1
102+
103+
assigned-clocks-parents:
104+
maxItems: 1
105+
106+
required:
107+
- clocks
108+
109+
required:
110+
- clocks
111+
- clock-names
112+
- interrupts-extended
113+
- interrupt-names
114+
115+
additionalProperties: false
116+
117+
examples:
118+
- |
119+
#include <dt-bindings/interrupt-controller/irq.h>
120+
#include <dt-bindings/interrupt-controller/arm-gic.h>
121+
122+
cpts@310d0000 {
123+
compatible = "ti,am65-cpts";
124+
reg = <0x0 0x310d0000 0x0 0x400>;
125+
reg-names = "cpts";
126+
clocks = <&main_cpts_mux>;
127+
clock-names = "cpts";
128+
interrupts-extended = <&k3_irq 163 0 IRQ_TYPE_LEVEL_HIGH>;
129+
interrupt-names = "cpts";
130+
ti,cpts-periodic-outputs = <6>;
131+
ti,cpts-ext-ts-inputs = <8>;
132+
133+
main_cpts_mux: refclk-mux {
134+
#clock-cells = <0>;
135+
clocks = <&k3_clks 118 5>, <&k3_clks 118 11>,
136+
<&k3_clks 157 91>, <&k3_clks 157 77>,
137+
<&k3_clks 157 102>, <&k3_clks 157 80>,
138+
<&k3_clks 120 3>, <&k3_clks 121 3>;
139+
assigned-clocks = <&main_cpts_mux>;
140+
assigned-clock-parents = <&k3_clks 118 11>;
141+
};
142+
};
143+
- |
144+
145+
cpts {
146+
clocks = <&k3_clks 18 2>;
147+
clock-names = "cpts";
148+
interrupts-extended = <&gic500 GIC_SPI 858 IRQ_TYPE_LEVEL_HIGH>;
149+
interrupt-names = "cpts";
150+
ti,cpts-ext-ts-inputs = <4>;
151+
ti,cpts-periodic-outputs = <2>;
152+
};

0 commit comments

Comments
 (0)