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