Ingenic JZ47xx SoCs Timer/Counter Unit devicetree bindings ========================================================== For a description of the TCU hardware and drivers, have a look at Documentation/mips/ingenic-tcu.rst. Required properties: - compatible: Must be one of: * ingenic,jz4740-tcu * ingenic,jz4725b-tcu * ingenic,jz4770-tcu * ingenic,x1000-tcu followed by "simple-mfd". - reg: Should be the offset/length value corresponding to the TCU registers - clocks: List of phandle & clock specifiers for clocks external to the TCU. The "pclk", "rtc" and "ext" clocks should be provided. The "tcu" clock should be provided if the SoC has it. - clock-names: List of name strings for the external clocks. - #clock-cells: Should be <1>; Clock consumers specify this argument to identify a clock. The valid values may be found in . - interrupt-controller : Identifies the node as an interrupt controller - #interrupt-cells : Specifies the number of cells needed to encode an interrupt source. The value should be 1. - interrupts : Specifies the interrupt the controller is connected to. Optional properties: - ingenic,pwm-channels-mask: Bitmask of TCU channels reserved for PWM use. Default value is 0xfc. Children nodes ========================================================== PWM node: --------- Required properties: - compatible: Must be one of: * ingenic,jz4740-pwm * ingenic,jz4725b-pwm - #pwm-cells: Should be 3. See ../pwm/pwm.yaml for a description of the cell format. - clocks: List of phandle & clock specifiers for the TCU clocks. - clock-names: List of name strings for the TCU clocks. Watchdog node: -------------- Required properties: - compatible: Must be "ingenic,jz4740-watchdog" - clocks: phandle to the WDT clock - clock-names: should be "wdt" OS Timer node: --------- Required properties: - compatible: Must be one of: * ingenic,jz4725b-ost * ingenic,jz4770-ost - clocks: phandle to the OST clock - clock-names: should be "ost" - interrupts : Specifies the interrupt the OST is connected to. Example ========================================================== #include #include / { tcu: timer@10002000 { compatible = "ingenic,jz4770-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,jz4740-watchdog"; reg = <0x0 0xc>; clocks = <&tcu TCU_CLK_WDT>; clock-names = "wdt"; }; pwm: pwm@40 { compatible = "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"; reg = <0xe0 0x20>; clocks = <&tcu TCU_CLK_OST>; clock-names = "ost"; interrupts = <15>; }; }; };