1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree bindings 8 9description: | 10 For a description of the TCU hardware and drivers, have a look at 11 Documentation/mips/ingenic-tcu.rst. 12 13maintainers: 14 - Paul Cercueil <paul@crapouillou.net> 15 16select: 17 properties: 18 compatible: 19 contains: 20 enum: 21 - ingenic,jz4740-tcu 22 - ingenic,jz4725b-tcu 23 - ingenic,jz4770-tcu 24 - ingenic,jz4780-tcu 25 - ingenic,x1000-tcu 26 required: 27 - compatible 28 29properties: 30 $nodename: 31 pattern: "^timer@[0-9a-f]+$" 32 33 "#address-cells": 34 const: 1 35 36 "#size-cells": 37 const: 1 38 39 "#clock-cells": 40 const: 1 41 42 "#interrupt-cells": 43 const: 1 44 45 interrupt-controller: true 46 47 ranges: true 48 49 compatible: 50 oneOf: 51 - items: 52 - enum: 53 - ingenic,jz4740-tcu 54 - ingenic,jz4725b-tcu 55 - ingenic,jz4770-tcu 56 - ingenic,x1000-tcu 57 - const: simple-mfd 58 - items: 59 - const: ingenic,jz4780-tcu 60 - const: ingenic,jz4770-tcu 61 - const: simple-mfd 62 63 reg: 64 maxItems: 1 65 66 clocks: 67 items: 68 - description: RTC clock 69 - description: EXT clock 70 - description: PCLK clock 71 - description: TCU clock 72 minItems: 3 73 74 clock-names: 75 items: 76 - const: rtc 77 - const: ext 78 - const: pclk 79 - const: tcu 80 minItems: 3 81 82 interrupts: 83 items: 84 - description: TCU0 interrupt 85 - description: TCU1 interrupt 86 - description: TCU2 interrupt 87 minItems: 1 88 89 assigned-clocks: 90 minItems: 1 91 maxItems: 8 92 93 assigned-clock-parents: 94 minItems: 1 95 maxItems: 8 96 97 assigned-clock-rates: 98 minItems: 1 99 maxItems: 8 100 101 ingenic,pwm-channels-mask: 102 description: Bitmask of TCU channels reserved for PWM use. 103 $ref: /schemas/types.yaml#/definitions/uint32 104 minimum: 0x00 105 maximum: 0xff 106 default: 0xfc 107 108patternProperties: 109 "^watchdog@[a-f0-9]+$": 110 type: object 111 $ref: ../watchdog/watchdog.yaml# 112 properties: 113 compatible: 114 oneOf: 115 - enum: 116 - ingenic,jz4740-watchdog 117 - ingenic,jz4780-watchdog 118 - items: 119 - enum: 120 - ingenic,jz4770-watchdog 121 - ingenic,jz4725b-watchdog 122 - const: ingenic,jz4740-watchdog 123 124 reg: 125 maxItems: 1 126 127 clocks: 128 maxItems: 1 129 130 clock-names: 131 const: wdt 132 133 required: 134 - compatible 135 - reg 136 - clocks 137 - clock-names 138 139 "^pwm@[a-f0-9]+$": 140 type: object 141 $ref: ../pwm/pwm.yaml# 142 properties: 143 compatible: 144 oneOf: 145 - enum: 146 - ingenic,jz4740-pwm 147 - ingenic,jz4725b-pwm 148 - items: 149 - enum: 150 - ingenic,jz4770-pwm 151 - ingenic,jz4780-pwm 152 - const: ingenic,jz4740-pwm 153 154 reg: 155 maxItems: 1 156 157 clocks: 158 minItems: 6 159 maxItems: 8 160 161 clock-names: 162 items: 163 - const: timer0 164 - const: timer1 165 - const: timer2 166 - const: timer3 167 - const: timer4 168 - const: timer5 169 - const: timer6 170 - const: timer7 171 minItems: 6 172 173 required: 174 - compatible 175 - reg 176 - clocks 177 - clock-names 178 179 "^timer@[a-f0-9]+$": 180 type: object 181 properties: 182 compatible: 183 oneOf: 184 - enum: 185 - ingenic,jz4725b-ost 186 - ingenic,jz4770-ost 187 - items: 188 - const: ingenic,jz4780-ost 189 - const: ingenic,jz4770-ost 190 191 reg: 192 maxItems: 1 193 194 clocks: 195 maxItems: 1 196 197 clock-names: 198 const: ost 199 200 interrupts: 201 maxItems: 1 202 203 required: 204 - compatible 205 - reg 206 - clocks 207 - clock-names 208 - interrupts 209 210 additionalProperties: false 211 212required: 213 - "#clock-cells" 214 - "#interrupt-cells" 215 - interrupt-controller 216 - compatible 217 - reg 218 - clocks 219 - clock-names 220 - interrupts 221 222additionalProperties: false 223 224examples: 225 - | 226 #include <dt-bindings/clock/jz4770-cgu.h> 227 #include <dt-bindings/clock/ingenic,tcu.h> 228 tcu: timer@10002000 { 229 compatible = "ingenic,jz4770-tcu", "simple-mfd"; 230 reg = <0x10002000 0x1000>; 231 #address-cells = <1>; 232 #size-cells = <1>; 233 ranges = <0x0 0x10002000 0x1000>; 234 235 #clock-cells = <1>; 236 237 clocks = <&cgu JZ4770_CLK_RTC>, 238 <&cgu JZ4770_CLK_EXT>, 239 <&cgu JZ4770_CLK_PCLK>; 240 clock-names = "rtc", "ext", "pclk"; 241 242 interrupt-controller; 243 #interrupt-cells = <1>; 244 245 interrupt-parent = <&intc>; 246 interrupts = <27 26 25>; 247 248 watchdog: watchdog@0 { 249 compatible = "ingenic,jz4770-watchdog", "ingenic,jz4740-watchdog"; 250 reg = <0x0 0xc>; 251 252 clocks = <&tcu TCU_CLK_WDT>; 253 clock-names = "wdt"; 254 }; 255 256 pwm: pwm@40 { 257 compatible = "ingenic,jz4770-pwm", "ingenic,jz4740-pwm"; 258 reg = <0x40 0x80>; 259 260 #pwm-cells = <3>; 261 262 clocks = <&tcu TCU_CLK_TIMER0>, 263 <&tcu TCU_CLK_TIMER1>, 264 <&tcu TCU_CLK_TIMER2>, 265 <&tcu TCU_CLK_TIMER3>, 266 <&tcu TCU_CLK_TIMER4>, 267 <&tcu TCU_CLK_TIMER5>, 268 <&tcu TCU_CLK_TIMER6>, 269 <&tcu TCU_CLK_TIMER7>; 270 clock-names = "timer0", "timer1", "timer2", "timer3", 271 "timer4", "timer5", "timer6", "timer7"; 272 }; 273 274 ost: timer@e0 { 275 compatible = "ingenic,jz4770-ost"; 276 reg = <0xe0 0x20>; 277 278 clocks = <&tcu TCU_CLK_OST>; 279 clock-names = "ost"; 280 281 interrupts = <15>; 282 }; 283 }; 284