xref: /freebsd-src/sys/contrib/device-tree/Bindings/mfd/atmel-tcb.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel Vadot* Device tree bindings for Atmel Timer Counter Blocks
2*c66ec88fSEmmanuel Vadot- compatible: Should be "atmel,<chip>-tcb", "simple-mfd", "syscon".
3*c66ec88fSEmmanuel Vadot  <chip> can be "at91rm9200" or "at91sam9x5"
4*c66ec88fSEmmanuel Vadot- reg: Should contain registers location and length
5*c66ec88fSEmmanuel Vadot- #address-cells: has to be 1
6*c66ec88fSEmmanuel Vadot- #size-cells: has to be 0
7*c66ec88fSEmmanuel Vadot- interrupts: Should contain all interrupts for the TC block
8*c66ec88fSEmmanuel Vadot  Note that you can specify several interrupt cells if the TC
9*c66ec88fSEmmanuel Vadot  block has one interrupt per channel.
10*c66ec88fSEmmanuel Vadot- clock-names: tuple listing input clock names.
11*c66ec88fSEmmanuel Vadot	Required elements: "t0_clk", "slow_clk"
12*c66ec88fSEmmanuel Vadot	Optional elements: "t1_clk", "t2_clk"
13*c66ec88fSEmmanuel Vadot- clocks: phandles to input clocks.
14*c66ec88fSEmmanuel Vadot
15*c66ec88fSEmmanuel VadotThe TCB can expose multiple subdevices:
16*c66ec88fSEmmanuel Vadot * a timer
17*c66ec88fSEmmanuel Vadot   - compatible: Should be "atmel,tcb-timer"
18*c66ec88fSEmmanuel Vadot   - reg: Should contain the TCB channels to be used. If the
19*c66ec88fSEmmanuel Vadot     counter width is 16 bits (at91rm9200-tcb), two consecutive
20*c66ec88fSEmmanuel Vadot     channels are needed. Else, only one channel will be used.
21*c66ec88fSEmmanuel Vadot
22*c66ec88fSEmmanuel VadotExamples:
23*c66ec88fSEmmanuel Vadot
24*c66ec88fSEmmanuel VadotOne interrupt per TC block:
25*c66ec88fSEmmanuel Vadot	tcb0: timer@fff7c000 {
26*c66ec88fSEmmanuel Vadot		compatible = "atmel,at91rm9200-tcb", "simple-mfd", "syscon";
27*c66ec88fSEmmanuel Vadot		#address-cells = <1>;
28*c66ec88fSEmmanuel Vadot		#size-cells = <0>;
29*c66ec88fSEmmanuel Vadot		reg = <0xfff7c000 0x100>;
30*c66ec88fSEmmanuel Vadot		interrupts = <18 4>;
31*c66ec88fSEmmanuel Vadot		clocks = <&tcb0_clk>, <&clk32k>;
32*c66ec88fSEmmanuel Vadot		clock-names = "t0_clk", "slow_clk";
33*c66ec88fSEmmanuel Vadot
34*c66ec88fSEmmanuel Vadot		timer@0 {
35*c66ec88fSEmmanuel Vadot			compatible = "atmel,tcb-timer";
36*c66ec88fSEmmanuel Vadot			reg = <0>, <1>;
37*c66ec88fSEmmanuel Vadot		};
38*c66ec88fSEmmanuel Vadot
39*c66ec88fSEmmanuel Vadot		timer@2 {
40*c66ec88fSEmmanuel Vadot			compatible = "atmel,tcb-timer";
41*c66ec88fSEmmanuel Vadot			reg = <2>;
42*c66ec88fSEmmanuel Vadot		};
43*c66ec88fSEmmanuel Vadot	};
44*c66ec88fSEmmanuel Vadot
45*c66ec88fSEmmanuel VadotOne interrupt per TC channel in a TC block:
46*c66ec88fSEmmanuel Vadot	tcb1: timer@fffdc000 {
47*c66ec88fSEmmanuel Vadot		compatible = "atmel,at91rm9200-tcb", "simple-mfd", "syscon";
48*c66ec88fSEmmanuel Vadot		#address-cells = <1>;
49*c66ec88fSEmmanuel Vadot		#size-cells = <0>;
50*c66ec88fSEmmanuel Vadot		reg = <0xfffdc000 0x100>;
51*c66ec88fSEmmanuel Vadot		interrupts = <26 4>, <27 4>, <28 4>;
52*c66ec88fSEmmanuel Vadot		clocks = <&tcb1_clk>, <&clk32k>;
53*c66ec88fSEmmanuel Vadot		clock-names = "t0_clk", "slow_clk";
54*c66ec88fSEmmanuel Vadot	};
55*c66ec88fSEmmanuel Vadot
56*c66ec88fSEmmanuel Vadot
57