Commit | Line | Data |
---|---|---|
6e87ac74 GS |
1 | # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
2 | %YAML 1.2 | |
3 | --- | |
b38eb47f | 4 | $id: http://devicetree.org/schemas/net/ti,k3-am654-cpts.yaml# |
6e87ac74 GS |
5 | $schema: http://devicetree.org/meta-schemas/core.yaml# |
6 | ||
dd3cb467 | 7 | title: The TI AM654x/J721E Common Platform Time Sync (CPTS) module |
6e87ac74 GS |
8 | |
9 | maintainers: | |
84f90efd | 10 | - Siddharth Vadapalli <s-vadapalli@ti.com> |
84f90efd | 11 | - Roger Quadros <rogerq@kernel.org> |
6e87ac74 GS |
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: | |
4786f4a0 | 45 | pattern: "^cpts@[0-9a-f]+$" |
6e87ac74 GS |
46 | |
47 | compatible: | |
1c3ac086 RH |
48 | enum: |
49 | - ti,am65-cpts | |
50 | - ti,j721e-cpts | |
6e87ac74 GS |
51 | |
52 | reg: | |
53 | maxItems: 1 | |
54 | description: | |
4786f4a0 | 55 | The physical base address and size of CPTS IO range |
6e87ac74 GS |
56 | |
57 | reg-names: | |
58 | items: | |
59 | - const: cpts | |
60 | ||
61 | clocks: | |
0499220d | 62 | maxItems: 1 |
6e87ac74 GS |
63 | description: CPTS reference clock |
64 | ||
65 | clock-names: | |
66 | items: | |
67 | - const: cpts | |
68 | ||
4786f4a0 | 69 | interrupts: |
6e87ac74 GS |
70 | items: |
71 | - description: CPTS events interrupt | |
72 | ||
73 | interrupt-names: | |
74 | items: | |
4786f4a0 | 75 | - const: cpts |
6e87ac74 | 76 | |
b3228c74 GS |
77 | assigned-clock-parents: true |
78 | ||
79 | assigned-clocks: true | |
80 | ||
81 | power-domains: | |
82 | maxItems: 1 | |
83 | ||
6e87ac74 | 84 | ti,cpts-ext-ts-inputs: |
086e9074 | 85 | $ref: /schemas/types.yaml#/definitions/uint32 |
6e87ac74 GS |
86 | maximum: 8 |
87 | description: | |
4786f4a0 | 88 | Number of hardware timestamp push inputs (HWx_TS_PUSH) |
6e87ac74 GS |
89 | |
90 | ti,cpts-periodic-outputs: | |
086e9074 | 91 | $ref: /schemas/types.yaml#/definitions/uint32 |
6e87ac74 GS |
92 | maximum: 8 |
93 | description: | |
4786f4a0 | 94 | Number of timestamp Generator function outputs (TS_GENFx) |
6e87ac74 | 95 | |
2b76af68 GS |
96 | ti,pps: |
97 | $ref: /schemas/types.yaml#/definitions/uint32-array | |
98 | minItems: 2 | |
99 | maxItems: 2 | |
100 | description: | | |
101 | The pair of HWx_TS_PUSH input and TS_GENFy output indexes used for | |
102 | PPS events generation. Platform/board specific. | |
103 | ||
6e87ac74 GS |
104 | refclk-mux: |
105 | type: object | |
057062ad | 106 | additionalProperties: false |
6e87ac74 GS |
107 | description: CPTS reference clock multiplexer clock |
108 | properties: | |
109 | '#clock-cells': | |
110 | const: 0 | |
111 | ||
112 | clocks: | |
113 | maxItems: 8 | |
114 | ||
6e87ac74 GS |
115 | required: |
116 | - clocks | |
117 | ||
118 | required: | |
4786f4a0 GS |
119 | - compatible |
120 | - reg | |
6e87ac74 GS |
121 | - clocks |
122 | - clock-names | |
4786f4a0 | 123 | - interrupts |
6e87ac74 GS |
124 | - interrupt-names |
125 | ||
126 | additionalProperties: false | |
127 | ||
128 | examples: | |
129 | - | | |
130 | #include <dt-bindings/interrupt-controller/irq.h> | |
131 | #include <dt-bindings/interrupt-controller/arm-gic.h> | |
132 | ||
133 | cpts@310d0000 { | |
134 | compatible = "ti,am65-cpts"; | |
0db958b6 | 135 | reg = <0x310d0000 0x400>; |
6e87ac74 GS |
136 | reg-names = "cpts"; |
137 | clocks = <&main_cpts_mux>; | |
138 | clock-names = "cpts"; | |
139 | interrupts-extended = <&k3_irq 163 0 IRQ_TYPE_LEVEL_HIGH>; | |
140 | interrupt-names = "cpts"; | |
141 | ti,cpts-periodic-outputs = <6>; | |
142 | ti,cpts-ext-ts-inputs = <8>; | |
143 | ||
144 | main_cpts_mux: refclk-mux { | |
145 | #clock-cells = <0>; | |
146 | clocks = <&k3_clks 118 5>, <&k3_clks 118 11>, | |
147 | <&k3_clks 157 91>, <&k3_clks 157 77>, | |
148 | <&k3_clks 157 102>, <&k3_clks 157 80>, | |
149 | <&k3_clks 120 3>, <&k3_clks 121 3>; | |
150 | assigned-clocks = <&main_cpts_mux>; | |
151 | assigned-clock-parents = <&k3_clks 118 11>; | |
152 | }; | |
153 | }; |