303 lines · yaml
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)2%YAML 1.23---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 at11 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-tcu22 - ingenic,jz4725b-tcu23 - ingenic,jz4760-tcu24 - ingenic,jz4760b-tcu25 - ingenic,jz4770-tcu26 - ingenic,jz4780-tcu27 - ingenic,x1000-tcu28 required:29 - compatible30 31properties:32 $nodename:33 pattern: "^timer@[0-9a-f]+$"34 35 "#address-cells":36 const: 137 38 "#size-cells":39 const: 140 41 "#clock-cells":42 const: 143 44 "#interrupt-cells":45 const: 146 47 interrupt-controller: true48 49 ranges: true50 51 compatible:52 oneOf:53 - items:54 - enum:55 - ingenic,jz4740-tcu56 - ingenic,jz4725b-tcu57 - ingenic,jz4760-tcu58 - ingenic,x1000-tcu59 - const: simple-mfd60 - items:61 - enum:62 - ingenic,jz4780-tcu63 - ingenic,jz4770-tcu64 - ingenic,jz4760b-tcu65 - const: ingenic,jz4760-tcu66 - const: simple-mfd67 68 reg:69 maxItems: 170 71 clocks:72 items:73 - description: RTC clock74 - description: EXT clock75 - description: PCLK clock76 - description: TCU clock77 minItems: 378 79 clock-names:80 items:81 - const: rtc82 - const: ext83 - const: pclk84 - const: tcu85 minItems: 386 87 interrupts:88 items:89 - description: TCU0 interrupt90 - description: TCU1 interrupt91 - description: TCU2 interrupt92 minItems: 193 94 assigned-clocks:95 minItems: 196 maxItems: 897 98 assigned-clock-parents:99 minItems: 1100 maxItems: 8101 102 assigned-clock-rates:103 minItems: 1104 maxItems: 8105 106 ingenic,pwm-channels-mask:107 description: Bitmask of TCU channels reserved for PWM use.108 $ref: /schemas/types.yaml#/definitions/uint32109 minimum: 0x00110 maximum: 0xff111 default: 0xfc112 113patternProperties:114 "^watchdog@[a-f0-9]+$":115 type: object116 $ref: /schemas/watchdog/watchdog.yaml#117 unevaluatedProperties: false118 119 properties:120 compatible:121 oneOf:122 - enum:123 - ingenic,jz4740-watchdog124 - ingenic,jz4780-watchdog125 - items:126 - enum:127 - ingenic,jz4770-watchdog128 - ingenic,jz4760b-watchdog129 - ingenic,jz4760-watchdog130 - ingenic,jz4725b-watchdog131 - const: ingenic,jz4740-watchdog132 133 reg:134 maxItems: 1135 136 clocks:137 maxItems: 1138 139 clock-names:140 const: wdt141 142 required:143 - compatible144 - reg145 - clocks146 - clock-names147 148 "^pwm@[a-f0-9]+$":149 type: object150 $ref: /schemas/pwm/pwm.yaml#151 unevaluatedProperties: false152 153 properties:154 compatible:155 oneOf:156 - enum:157 - ingenic,jz4740-pwm158 - ingenic,jz4725b-pwm159 - ingenic,x1000-pwm160 - items:161 - enum:162 - ingenic,jz4760-pwm163 - ingenic,jz4760b-pwm164 - ingenic,jz4770-pwm165 - ingenic,jz4780-pwm166 - const: ingenic,jz4740-pwm167 168 reg:169 maxItems: 1170 171 clocks:172 minItems: 6173 maxItems: 8174 175 clock-names:176 items:177 - const: timer0178 - const: timer1179 - const: timer2180 - const: timer3181 - const: timer4182 - const: timer5183 - const: timer6184 - const: timer7185 minItems: 6186 187 required:188 - compatible189 - reg190 - clocks191 - clock-names192 193 "^timer@[a-f0-9]+$":194 type: object195 properties:196 compatible:197 oneOf:198 - enum:199 - ingenic,jz4725b-ost200 - ingenic,jz4760b-ost201 - items:202 - const: ingenic,jz4760-ost203 - const: ingenic,jz4725b-ost204 - items:205 - enum:206 - ingenic,jz4780-ost207 - ingenic,jz4770-ost208 - const: ingenic,jz4760b-ost209 210 reg:211 maxItems: 1212 213 clocks:214 maxItems: 1215 216 clock-names:217 const: ost218 219 interrupts:220 maxItems: 1221 222 required:223 - compatible224 - reg225 - clocks226 - clock-names227 - interrupts228 229 additionalProperties: false230 231required:232 - "#clock-cells"233 - "#interrupt-cells"234 - interrupt-controller235 - compatible236 - reg237 - clocks238 - clock-names239 - interrupts240 241additionalProperties: false242 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