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 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 refclk-mux: 97 type: object 98 description: CPTS reference clock multiplexer clock 99 properties: 100 '#clock-cells': 101 const: 0 102 103 clocks: 104 maxItems: 8 105 106 assigned-clocks: 107 maxItems: 1 108 109 assigned-clocks-parents: 110 maxItems: 1 111 112 required: 113 - clocks 114 115required: 116 - compatible 117 - reg 118 - clocks 119 - clock-names 120 - interrupts 121 - interrupt-names 122 123additionalProperties: false 124 125examples: 126 - | 127 #include <dt-bindings/interrupt-controller/irq.h> 128 #include <dt-bindings/interrupt-controller/arm-gic.h> 129 130 cpts@310d0000 { 131 compatible = "ti,am65-cpts"; 132 reg = <0x310d0000 0x400>; 133 reg-names = "cpts"; 134 clocks = <&main_cpts_mux>; 135 clock-names = "cpts"; 136 interrupts-extended = <&k3_irq 163 0 IRQ_TYPE_LEVEL_HIGH>; 137 interrupt-names = "cpts"; 138 ti,cpts-periodic-outputs = <6>; 139 ti,cpts-ext-ts-inputs = <8>; 140 141 main_cpts_mux: refclk-mux { 142 #clock-cells = <0>; 143 clocks = <&k3_clks 118 5>, <&k3_clks 118 11>, 144 <&k3_clks 157 91>, <&k3_clks 157 77>, 145 <&k3_clks 157 102>, <&k3_clks 157 80>, 146 <&k3_clks 120 3>, <&k3_clks 121 3>; 147 assigned-clocks = <&main_cpts_mux>; 148 assigned-clock-parents = <&k3_clks 118 11>; 149 }; 150 }; 151 152