Documentation / devicetree / bindings / timer / ingenic,tcu.txt


Based on kernel version 5.7.10. Page generated on 2020-07-23 22:17 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
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 <dt-bindings/clock/ingenic,tcu.h>.
- 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 <dt-bindings/clock/jz4770-cgu.h>
#include <dt-bindings/clock/ingenic,tcu.h>

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