summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/timer/ingenic,tcu.txt
blob: 0b63cebc5f4578b38e69824816f018d114bd522f (plain)
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
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
  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>;
		};
	};
};