File Index
Files and directories
Sign in
FILE

ti,k3-am654-cpts.yaml

File preview with syntax highlighting.

linux-6.19.14/Documentation/devicetree/bindings/net/ti,k3-am654-cpts.yaml YAML
  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
  8
  9maintainers:
 10  - Siddharth Vadapalli <s-vadapalli@ti.com>
 11  - Roger Quadros <rogerq@kernel.org>
 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    enum:
 49      - ti,am65-cpts
 50      - 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  assigned-clock-parents: true
 78
 79  assigned-clocks: true
 80
 81  power-domains:
 82    maxItems: 1
 83
 84  ti,cpts-ext-ts-inputs:
 85    $ref: /schemas/types.yaml#/definitions/uint32
 86    maximum: 8
 87    description:
 88      Number of hardware timestamp push inputs (HWx_TS_PUSH)
 89
 90  ti,cpts-periodic-outputs:
 91    $ref: /schemas/types.yaml#/definitions/uint32
 92    maximum: 8
 93    description:
 94      Number of timestamp Generator function outputs (TS_GENFx)
 95
 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
104  refclk-mux:
105    type: object
106    additionalProperties: false
107    description: CPTS reference clock multiplexer clock
108    properties:
109      '#clock-cells':
110        const: 0
111
112      clocks:
113        maxItems: 8
114
115    required:
116      - clocks
117
118required:
119  - compatible
120  - reg
121  - clocks
122  - clock-names
123  - interrupts
124  - interrupt-names
125
126additionalProperties: false
127
128examples:
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";
135        reg = <0x310d0000 0x400>;
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    };
~/ Read-only file preview.