| # 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/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>; |
| }; |
| }; |