Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / timer / ingenic,tcu.txt
1 Ingenic JZ47xx SoCs Timer/Counter Unit devicetree bindings
2 ==========================================================
3
4 For a description of the TCU hardware and drivers, have a look at
5 Documentation/mips/ingenic-tcu.txt.
6
7 Required properties:
8
9 - compatible: Must be one of:
10   * ingenic,jz4740-tcu
11   * ingenic,jz4725b-tcu
12   * ingenic,jz4770-tcu
13   followed by "simple-mfd".
14 - reg: Should be the offset/length value corresponding to the TCU registers
15 - clocks: List of phandle & clock specifiers for clocks external to the TCU.
16   The "pclk", "rtc" and "ext" clocks should be provided. The "tcu" clock
17   should be provided if the SoC has it.
18 - clock-names: List of name strings for the external clocks.
19 - #clock-cells: Should be <1>;
20   Clock consumers specify this argument to identify a clock. The valid values
21   may be found in <dt-bindings/clock/ingenic,tcu.h>.
22 - interrupt-controller : Identifies the node as an interrupt controller
23 - #interrupt-cells : Specifies the number of cells needed to encode an
24   interrupt source. The value should be 1.
25 - interrupts : Specifies the interrupt the controller is connected to.
26
27 Optional properties:
28
29 - ingenic,pwm-channels-mask: Bitmask of TCU channels reserved for PWM use.
30   Default value is 0xfc.
31
32
33 Children nodes
34 ==========================================================
35
36
37 PWM node:
38 ---------
39
40 Required properties:
41
42 - compatible: Must be one of:
43   * ingenic,jz4740-pwm
44   * ingenic,jz4725b-pwm
45 - #pwm-cells: Should be 3. See ../pwm/pwm.txt for a description of the cell
46   format.
47 - clocks: List of phandle & clock specifiers for the TCU clocks.
48 - clock-names: List of name strings for the TCU clocks.
49
50
51 Watchdog node:
52 --------------
53
54 Required properties:
55
56 - compatible: Must be "ingenic,jz4740-watchdog"
57 - clocks: phandle to the WDT clock
58 - clock-names: should be "wdt"
59
60
61 OS Timer node:
62 ---------
63
64 Required properties:
65
66 - compatible: Must be one of:
67   * ingenic,jz4725b-ost
68   * ingenic,jz4770-ost
69 - clocks: phandle to the OST clock
70 - clock-names: should be "ost"
71 - interrupts : Specifies the interrupt the OST is connected to.
72
73
74 Example
75 ==========================================================
76
77 #include <dt-bindings/clock/jz4770-cgu.h>
78 #include <dt-bindings/clock/ingenic,tcu.h>
79
80 / {
81         tcu: timer@10002000 {
82                 compatible = "ingenic,jz4770-tcu", "simple-mfd";
83                 reg = <0x10002000 0x1000>;
84                 #address-cells = <1>;
85                 #size-cells = <1>;
86                 ranges = <0x0 0x10002000 0x1000>;
87
88                 #clock-cells = <1>;
89
90                 clocks = <&cgu JZ4770_CLK_RTC
91                           &cgu JZ4770_CLK_EXT
92                           &cgu JZ4770_CLK_PCLK>;
93                 clock-names = "rtc", "ext", "pclk";
94
95                 interrupt-controller;
96                 #interrupt-cells = <1>;
97
98                 interrupt-parent = <&intc>;
99                 interrupts = <27 26 25>;
100
101                 watchdog: watchdog@0 {
102                         compatible = "ingenic,jz4740-watchdog";
103                         reg = <0x0 0xc>;
104
105                         clocks = <&tcu TCU_CLK_WDT>;
106                         clock-names = "wdt";
107                 };
108
109                 pwm: pwm@40 {
110                         compatible = "ingenic,jz4740-pwm";
111                         reg = <0x40 0x80>;
112
113                         #pwm-cells = <3>;
114
115                         clocks = <&tcu TCU_CLK_TIMER0
116                                   &tcu TCU_CLK_TIMER1
117                                   &tcu TCU_CLK_TIMER2
118                                   &tcu TCU_CLK_TIMER3
119                                   &tcu TCU_CLK_TIMER4
120                                   &tcu TCU_CLK_TIMER5
121                                   &tcu TCU_CLK_TIMER6
122                                   &tcu TCU_CLK_TIMER7>;
123                         clock-names = "timer0", "timer1", "timer2", "timer3",
124                                       "timer4", "timer5", "timer6", "timer7";
125                 };
126
127                 ost: timer@e0 {
128                         compatible = "ingenic,jz4770-ost";
129                         reg = <0xe0 0x20>;
130
131                         clocks = <&tcu TCU_CLK_OST>;
132                         clock-names = "ost";
133
134                         interrupts = <15>;
135                 };
136         };
137 };