# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Ingenic SoCs Timer/Counter Unit (TCU) description: | For a description of the TCU hardware and drivers, have a look at Documentation/arch/mips/ingenic-tcu.rst. maintainers: - Paul Cercueil <paul@crapouillou.net> select: properties: compatible: contains: enum: - ingenic,jz4740-tcu - ingenic,jz4725b-tcu - ingenic,jz4760-tcu - ingenic,jz4760b-tcu - ingenic,jz4770-tcu - ingenic,jz4780-tcu - ingenic,x1000-tcu required: - compatible properties: $nodename: pattern: "^timer@[0-9a-f]+$" "#address-cells": const: 1 "#size-cells": const: 1 "#clock-cells": const: 1 "#interrupt-cells": const: 1 interrupt-controller: true ranges: true compatible: oneOf: - items: - enum: - ingenic,jz4740-tcu - ingenic,jz4725b-tcu - ingenic,jz4760-tcu - ingenic,x1000-tcu - const: simple-mfd - items: - enum: - ingenic,jz4780-tcu - ingenic,jz4770-tcu - ingenic,jz4760b-tcu - const: ingenic,jz4760-tcu - const: simple-mfd reg: maxItems: 1 clocks: items: - description: RTC clock - description: EXT clock - description: PCLK clock - description: TCU clock minItems: 3 clock-names: items: - const: rtc - const: ext - const: pclk - const: tcu minItems: 3 interrupts: items: - description: TCU0 interrupt - description: TCU1 interrupt - description: TCU2 interrupt minItems: 1 assigned-clocks: minItems: 1 maxItems: 8 assigned-clock-parents: minItems: 1 maxItems: 8 assigned-clock-rates: minItems: 1 maxItems: 8 ingenic,pwm-channels-mask: description: Bitmask of TCU channels reserved for PWM use. $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0x00 maximum: 0xff default: 0xfc patternProperties: "^watchdog@[a-f0-9]+$": type: object $ref: /schemas/watchdog/watchdog.yaml# unevaluatedProperties: false properties: compatible: oneOf: - enum: - ingenic,jz4740-watchdog - ingenic,jz4780-watchdog - items: - enum: - ingenic,jz4770-watchdog - ingenic,jz4760b-watchdog - ingenic,jz4760-watchdog - ingenic,jz4725b-watchdog - const: ingenic,jz4740-watchdog reg: maxItems: 1 clocks: maxItems: 1 clock-names: const: wdt required: - compatible - reg - clocks - clock-names "^pwm@[a-f0-9]+$": type: object $ref: /schemas/pwm/pwm.yaml# unevaluatedProperties: false properties: compatible: oneOf: - enum: - ingenic,jz4740-pwm - ingenic,jz4725b-pwm - ingenic,x1000-pwm - items: - enum: - ingenic,jz4760-pwm - ingenic,jz4760b-pwm - ingenic,jz4770-pwm - ingenic,jz4780-pwm - const: ingenic,jz4740-pwm reg: maxItems: 1 clocks: minItems: 6 maxItems: 8 clock-names: items: - const: timer0 - const: timer1 - const: timer2 - const: timer3 - const: timer4 - const: timer5 - const: timer6 - const: timer7 minItems: 6 required: - compatible - reg - clocks - clock-names "^timer@[a-f0-9]+$": type: object properties: compatible: oneOf: - enum: - ingenic,jz4725b-ost - ingenic,jz4760b-ost - items: - const: ingenic,jz4760-ost - const: ingenic,jz4725b-ost - items: - enum: - ingenic,jz4780-ost - ingenic,jz4770-ost - const: ingenic,jz4760b-ost reg: maxItems: 1 clocks: maxItems: 1 clock-names: const: ost interrupts: maxItems: 1 required: - compatible - reg - clocks - clock-names - interrupts additionalProperties: false required: - "#clock-cells" - "#interrupt-cells" - interrupt-controller - compatible - reg - clocks - clock-names - interrupts additionalProperties: false examples: - | #include <dt-bindings/clock/ingenic,jz4770-cgu.h> #include <dt-bindings/clock/ingenic,tcu.h> tcu: timer@10002000 { compatible = "ingenic,jz4770-tcu", "ingenic,jz4760-tcu", "simple-mfd"; reg = <0x10002000 0x1000>; #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x10002000 0x1000>; #clock-cells = <1>; clocks = <&cgu JZ4770_CLK_RTC>, <&cgu JZ4770_CLK_EXT>, <&cgu JZ4770_CLK_PCLK>; clock-names = "rtc", "ext", "pclk"; interrupt-controller; #interrupt-cells = <1>; interrupt-parent = <&intc>; interrupts = <27 26 25>; watchdog: watchdog@0 { compatible = "ingenic,jz4770-watchdog", "ingenic,jz4740-watchdog"; reg = <0x0 0xc>; clocks = <&tcu TCU_CLK_WDT>; clock-names = "wdt"; }; pwm: pwm@40 { compatible = "ingenic,jz4770-pwm", "ingenic,jz4740-pwm"; reg = <0x40 0x80>; #pwm-cells = <3>; clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>, <&tcu TCU_CLK_TIMER4>, <&tcu TCU_CLK_TIMER5>, <&tcu TCU_CLK_TIMER6>, <&tcu TCU_CLK_TIMER7>; clock-names = "timer0", "timer1", "timer2", "timer3", "timer4", "timer5", "timer6", "timer7"; }; ost: timer@e0 { compatible = "ingenic,jz4770-ost", "ingenic,jz4760b-ost"; reg = <0xe0 0x20>; clocks = <&tcu TCU_CLK_OST>; clock-names = "ost"; interrupts = <15>; }; };