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) 8 9description: | 10 For a description of the TCU hardware and drivers, have a look at 11 Documentation/arch/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: /schemas/watchdog/watchdog.yaml# 117 unevaluatedProperties: false 118 119 properties: 120 compatible: 121 oneOf: 122 - enum: 123 - ingenic,jz4740-watchdog 124 - ingenic,jz4780-watchdog 125 - items: 126 - enum: 127 - ingenic,jz4770-watchdog 128 - ingenic,jz4760b-watchdog 129 - ingenic,jz4760-watchdog 130 - ingenic,jz4725b-watchdog 131 - const: ingenic,jz4740-watchdog 132 133 reg: 134 maxItems: 1 135 136 clocks: 137 maxItems: 1 138 139 clock-names: 140 const: wdt 141 142 required: 143 - compatible 144 - reg 145 - clocks 146 - clock-names 147 148 "^pwm@[a-f0-9]+$": 149 type: object 150 $ref: /schemas/pwm/pwm.yaml# 151 unevaluatedProperties: false 152 153 properties: 154 compatible: 155 oneOf: 156 - enum: 157 - ingenic,jz4740-pwm 158 - ingenic,jz4725b-pwm 159 - ingenic,x1000-pwm 160 - items: 161 - enum: 162 - ingenic,jz4760-pwm 163 - ingenic,jz4760b-pwm 164 - ingenic,jz4770-pwm 165 - ingenic,jz4780-pwm 166 - const: ingenic,jz4740-pwm 167 168 reg: 169 maxItems: 1 170 171 clocks: 172 minItems: 6 173 maxItems: 8 174 175 clock-names: 176 items: 177 - const: timer0 178 - const: timer1 179 - const: timer2 180 - const: timer3 181 - const: timer4 182 - const: timer5 183 - const: timer6 184 - const: timer7 185 minItems: 6 186 187 required: 188 - compatible 189 - reg 190 - clocks 191 - clock-names 192 193 "^timer@[a-f0-9]+$": 194 type: object 195 properties: 196 compatible: 197 oneOf: 198 - enum: 199 - ingenic,jz4725b-ost 200 - ingenic,jz4760b-ost 201 - items: 202 - const: ingenic,jz4760-ost 203 - const: ingenic,jz4725b-ost 204 - items: 205 - enum: 206 - ingenic,jz4780-ost 207 - ingenic,jz4770-ost 208 - const: ingenic,jz4760b-ost 209 210 reg: 211 maxItems: 1 212 213 clocks: 214 maxItems: 1 215 216 clock-names: 217 const: ost 218 219 interrupts: 220 maxItems: 1 221 222 required: 223 - compatible 224 - reg 225 - clocks 226 - clock-names 227 - interrupts 228 229 additionalProperties: false 230 231required: 232 - "#clock-cells" 233 - "#interrupt-cells" 234 - interrupt-controller 235 - compatible 236 - reg 237 - clocks 238 - clock-names 239 - interrupts 240 241additionalProperties: false 242 243examples: 244 - | 245 #include <dt-bindings/clock/ingenic,jz4770-cgu.h> 246 #include <dt-bindings/clock/ingenic,tcu.h> 247 tcu: timer@10002000 { 248 compatible = "ingenic,jz4770-tcu", "ingenic,jz4760-tcu", "simple-mfd"; 249 reg = <0x10002000 0x1000>; 250 #address-cells = <1>; 251 #size-cells = <1>; 252 ranges = <0x0 0x10002000 0x1000>; 253 254 #clock-cells = <1>; 255 256 clocks = <&cgu JZ4770_CLK_RTC>, 257 <&cgu JZ4770_CLK_EXT>, 258 <&cgu JZ4770_CLK_PCLK>; 259 clock-names = "rtc", "ext", "pclk"; 260 261 interrupt-controller; 262 #interrupt-cells = <1>; 263 264 interrupt-parent = <&intc>; 265 interrupts = <27 26 25>; 266 267 watchdog: watchdog@0 { 268 compatible = "ingenic,jz4770-watchdog", "ingenic,jz4740-watchdog"; 269 reg = <0x0 0xc>; 270 271 clocks = <&tcu TCU_CLK_WDT>; 272 clock-names = "wdt"; 273 }; 274 275 pwm: pwm@40 { 276 compatible = "ingenic,jz4770-pwm", "ingenic,jz4740-pwm"; 277 reg = <0x40 0x80>; 278 279 #pwm-cells = <3>; 280 281 clocks = <&tcu TCU_CLK_TIMER0>, 282 <&tcu TCU_CLK_TIMER1>, 283 <&tcu TCU_CLK_TIMER2>, 284 <&tcu TCU_CLK_TIMER3>, 285 <&tcu TCU_CLK_TIMER4>, 286 <&tcu TCU_CLK_TIMER5>, 287 <&tcu TCU_CLK_TIMER6>, 288 <&tcu TCU_CLK_TIMER7>; 289 clock-names = "timer0", "timer1", "timer2", "timer3", 290 "timer4", "timer5", "timer6", "timer7"; 291 }; 292 293 ost: timer@e0 { 294 compatible = "ingenic,jz4770-ost", "ingenic,jz4760b-ost"; 295 reg = <0xe0 0x20>; 296 297 clocks = <&tcu TCU_CLK_OST>; 298 clock-names = "ost"; 299 300 interrupts = <15>; 301 }; 302 }; 303