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,k3-am654-cpts.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: The TI AM654x/J721E Common Platform Time Sync (CPTS) module Device Tree Bindings
8
9maintainers:
10  - Grygorii Strashko <grygorii.strashko@ti.com>
11  - Sekhar Nori <nsekhar@ti.com>
12
13description: |+
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
43properties:
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    maxItems: 1
63    description: CPTS reference clock
64
65  clock-names:
66    items:
67      - const: cpts
68
69  interrupts:
70    items:
71      - description: CPTS events interrupt
72
73  interrupt-names:
74    items:
75      - const: cpts
76
77  ti,cpts-ext-ts-inputs:
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    $ref: /schemas/types.yaml#/definitions/uint32
85    maximum: 8
86    description:
87      Number of timestamp Generator function outputs (TS_GENFx)
88
89  refclk-mux:
90    type: object
91    description: CPTS reference clock multiplexer clock
92    properties:
93      '#clock-cells':
94        const: 0
95
96      clocks:
97        maxItems: 8
98
99      assigned-clocks:
100        maxItems: 1
101
102      assigned-clocks-parents:
103        maxItems: 1
104
105    required:
106      - clocks
107
108required:
109  - compatible
110  - reg
111  - clocks
112  - clock-names
113  - interrupts
114  - interrupt-names
115
116additionalProperties: false
117
118examples:
119  - |
120    #include <dt-bindings/interrupt-controller/irq.h>
121    #include <dt-bindings/interrupt-controller/arm-gic.h>
122
123    cpts@310d0000 {
124         compatible = "ti,am65-cpts";
125         reg = <0x310d0000 0x400>;
126         reg-names = "cpts";
127         clocks = <&main_cpts_mux>;
128         clock-names = "cpts";
129         interrupts-extended = <&k3_irq 163 0 IRQ_TYPE_LEVEL_HIGH>;
130         interrupt-names = "cpts";
131         ti,cpts-periodic-outputs = <6>;
132         ti,cpts-ext-ts-inputs = <8>;
133
134         main_cpts_mux: refclk-mux {
135               #clock-cells = <0>;
136               clocks = <&k3_clks 118 5>, <&k3_clks 118 11>,
137                        <&k3_clks 157 91>, <&k3_clks 157 77>,
138                        <&k3_clks 157 102>, <&k3_clks 157 80>,
139                        <&k3_clks 120 3>, <&k3_clks 121 3>;
140               assigned-clocks = <&main_cpts_mux>;
141               assigned-clock-parents = <&k3_clks 118 11>;
142         };
143    };
144
145