1 Device Tree Clock bindings for arch-at91
3 This binding uses the common clock binding[1].
5 [1] Documentation/devicetree/bindings/clock/clock-bindings.txt
8 - compatible : shall be one of the following:
9 "atmel,at91sam9x5-sckc":
10 at91 SCKC (Slow Clock Controller)
11 This node contains the slow clock definitions.
13 "atmel,at91sam9x5-clk-slow-osc":
16 "atmel,at91sam9x5-clk-slow-rc-osc":
17 at91 internal slow RC oscillator
19 "atmel,at91rm9200-pmc" or
20 "atmel,at91sam9g45-pmc" or
21 "atmel,at91sam9n12-pmc" or
22 "atmel,at91sam9x5-pmc" or
24 at91 PMC (Power Management Controller)
25 All at91 specific clocks (clocks defined below) must be child
28 "atmel,at91sam9x5-clk-slow" (under sckc node)
30 "atmel,at91sam9260-clk-slow" (under pmc node):
33 "atmel,at91rm9200-clk-main-osc"
34 "atmel,at91sam9x5-clk-main-rc-osc"
37 "atmel,at91sam9x5-clk-main"
38 "atmel,at91rm9200-clk-main":
41 "atmel,at91rm9200-clk-master" or
42 "atmel,at91sam9x5-clk-master":
45 "atmel,at91sam9x5-clk-peripheral" or
46 "atmel,at91rm9200-clk-peripheral":
47 at91 peripheral clocks
49 "atmel,at91rm9200-clk-pll" or
50 "atmel,at91sam9g45-clk-pll" or
51 "atmel,at91sam9g20-clk-pllb" or
52 "atmel,sama5d3-clk-pll":
55 "atmel,at91sam9x5-clk-plldiv":
58 "atmel,at91rm9200-clk-programmable" or
59 "atmel,at91sam9g45-clk-programmable" or
60 "atmel,at91sam9x5-clk-programmable":
61 at91 programmable clocks
63 "atmel,at91sam9x5-clk-smd":
64 at91 SMD (Soft Modem) clock
66 "atmel,at91rm9200-clk-system":
69 "atmel,at91rm9200-clk-usb" or
70 "atmel,at91sam9x5-clk-usb" or
71 "atmel,at91sam9n12-clk-usb":
74 "atmel,at91sam9x5-clk-utmi":
77 "atmel,sama5d4-clk-h32mx":
80 Required properties for SCKC node:
81 - reg : defines the IO memory reserved for the SCKC.
82 - #size-cells : shall be 0 (reg is used to encode clk id).
83 - #address-cells : shall be 1 (reg is used to encode clk id).
88 compatible = "atmel,sama5d3-pmc";
89 reg = <0xfffffe50 0x4>
93 /* put at91 slow clocks here */
97 Required properties for internal slow RC oscillator:
98 - #clock-cells : from common clock binding; shall be set to 0.
99 - clock-frequency : define the internal RC oscillator frequency.
102 - clock-accuracy : define the internal RC oscillator accuracy.
105 slow_rc_osc: slow_rc_osc {
106 compatible = "atmel,at91sam9x5-clk-slow-rc-osc";
107 clock-frequency = <32768>;
108 clock-accuracy = <50000000>;
111 Required properties for slow oscillator:
112 - #clock-cells : from common clock binding; shall be set to 0.
113 - clocks : shall encode the main osc source clk sources (see atmel datasheet).
116 - atmel,osc-bypass : boolean property. Set this when a clock signal is directly
121 compatible = "atmel,at91rm9200-clk-slow-osc";
123 clocks = <&slow_xtal>;
126 Required properties for slow clock:
127 - #clock-cells : from common clock binding; shall be set to 0.
128 - clocks : shall encode the slow clk sources (see atmel datasheet).
132 compatible = "atmel,at91sam9x5-clk-slow";
134 clocks = <&slow_rc_osc &slow_osc>;
137 Required properties for PMC node:
138 - reg : defines the IO memory reserved for the PMC.
139 - #size-cells : shall be 0 (reg is used to encode clk id).
140 - #address-cells : shall be 1 (reg is used to encode clk id).
141 - interrupts : shall be set to PMC interrupt line.
142 - interrupt-controller : tell that the PMC is an interrupt controller.
143 - #interrupt-cells : must be set to 1. The first cell encodes the interrupt id,
144 and reflect the bit position in the PMC_ER/DR/SR registers.
145 You can use the dt macros defined in dt-bindings/clock/at91.h.
146 0 (AT91_PMC_MOSCS) -> main oscillator ready
147 1 (AT91_PMC_LOCKA) -> PLL A ready
148 2 (AT91_PMC_LOCKB) -> PLL B ready
149 3 (AT91_PMC_MCKRDY) -> master clock ready
150 6 (AT91_PMC_LOCKU) -> UTMI PLL clock ready
151 8 .. 15 (AT91_PMC_PCKRDY(id)) -> programmable clock ready
152 16 (AT91_PMC_MOSCSELS) -> main oscillator selected
153 17 (AT91_PMC_MOSCRCS) -> RC main oscillator stabilized
154 18 (AT91_PMC_CFDEV) -> clock failure detected
158 compatible = "atmel,sama5d3-pmc";
159 interrupts = <1 4 7>;
160 interrupt-controller;
161 #interrupt-cells = <2>;
163 #address-cells = <1>;
165 /* put at91 clocks here */
168 Required properties for main clock internal RC oscillator:
169 - interrupt-parent : must reference the PMC node.
170 - interrupts : shall be set to "<0>".
171 - clock-frequency : define the internal RC oscillator frequency.
174 - clock-accuracy : define the internal RC oscillator accuracy.
177 main_rc_osc: main_rc_osc {
178 compatible = "atmel,at91sam9x5-clk-main-rc-osc";
179 interrupt-parent = <&pmc>;
181 clock-frequency = <12000000>;
182 clock-accuracy = <50000000>;
185 Required properties for main clock oscillator:
186 - interrupt-parent : must reference the PMC node.
187 - interrupts : shall be set to "<0>".
188 - #clock-cells : from common clock binding; shall be set to 0.
189 - clocks : shall encode the main osc source clk sources (see atmel datasheet).
192 - atmel,osc-bypass : boolean property. Specified if a clock signal is provided
195 clock signal is directly provided on XIN pin.
199 compatible = "atmel,at91rm9200-clk-main-osc";
200 interrupt-parent = <&pmc>;
203 clocks = <&main_xtal>;
206 Required properties for main clock:
207 - interrupt-parent : must reference the PMC node.
208 - interrupts : shall be set to "<0>".
209 - #clock-cells : from common clock binding; shall be set to 0.
210 - clocks : shall encode the main clk sources (see atmel datasheet).
214 compatible = "atmel,at91sam9x5-clk-main";
215 interrupt-parent = <&pmc>;
218 clocks = <&main_rc_osc &main_osc>;
221 Required properties for master clock:
222 - interrupt-parent : must reference the PMC node.
223 - interrupts : shall be set to "<3>".
224 - #clock-cells : from common clock binding; shall be set to 0.
225 - clocks : shall be the master clock sources (see atmel datasheet) phandles.
226 e.g. "<&ck32k>, <&main>, <&plla>, <&pllb>".
227 - atmel,clk-output-range : minimum and maximum clock frequency (two u32
229 e.g. output = <0 133000000>; <=> 0 to 133MHz.
230 - atmel,clk-divisors : master clock divisors table (four u32 fields).
231 0 <=> reserved value.
232 e.g. divisors = <1 2 4 6>;
233 - atmel,master-clk-have-div3-pres : some SoC use the reserved value 7 in the
234 PRES field as CLOCK_DIV3 (e.g sam9x5).
238 compatible = "atmel,at91rm9200-clk-master";
239 interrupt-parent = <&pmc>;
242 atmel,clk-output-range = <0 133000000>;
243 atmel,clk-divisors = <1 2 4 0>;
246 Required properties for peripheral clocks:
247 - #size-cells : shall be 0 (reg is used to encode clk id).
248 - #address-cells : shall be 1 (reg is used to encode clk id).
249 - clocks : shall be the master clock phandle.
250 e.g. clocks = <&mck>;
251 - name: device tree node describing a specific peripheral clock.
252 * #clock-cells : from common clock binding; shall be set to 0.
253 * reg: peripheral id. See Atmel's datasheets to get a full
254 list of peripheral ids.
255 * atmel,clk-output-range : minimum and maximum clock frequency
256 (two u32 fields). Only valid on at91sam9x5-clk-peripheral
261 compatible = "atmel,at91sam9x5-clk-peripheral";
263 #address-cells = <1>;
269 atmel,clk-output-range = <0 133000000>;
275 atmel,clk-output-range = <0 66000000>;
280 Required properties for pll clocks:
281 - interrupt-parent : must reference the PMC node.
282 - interrupts : shall be set to "<1>".
283 - #clock-cells : from common clock binding; shall be set to 0.
284 - clocks : shall be the main clock phandle.
288 - atmel,clk-input-range : minimum and maximum source clock frequency (two u32
290 e.g. input = <1 32000000>; <=> 1 to 32MHz.
291 - #atmel,pll-clk-output-range-cells : number of cells reserved for pll output
292 range description. Sould be set to 2, 3
294 * 1st and 2nd cells represent the frequency range (min-max).
295 * 3rd cell is optional and represents the OUT field value for the given
297 * 4th cell is optional and represents the ICPLL field (PLLICPR
299 - atmel,pll-clk-output-ranges : pll output frequency ranges + optional parameter
300 depending on #atmel,pll-output-range-cells
305 compatible = "atmel,at91sam9g45-clk-pll";
306 interrupt-parent = <&pmc>;
311 atmel,clk-input-range = <2000000 32000000>;
312 #atmel,pll-clk-output-range-cells = <4>;
313 atmel,pll-clk-output-ranges = <74500000 800000000 0 0
314 69500000 750000000 1 0
315 64500000 700000000 2 0
316 59500000 650000000 3 0
317 54500000 600000000 0 1
318 49500000 550000000 1 1
319 44500000 500000000 2 1
320 40000000 450000000 3 1>;
323 Required properties for plldiv clocks (plldiv = pll / 2):
324 - #clock-cells : from common clock binding; shall be set to 0.
325 - clocks : shall be the plla clock phandle.
327 The pll divisor is equal to 2 and cannot be changed.
331 compatible = "atmel,at91sam9x5-clk-plldiv";
336 Required properties for programmable clocks:
337 - interrupt-parent : must reference the PMC node.
338 - #size-cells : shall be 0 (reg is used to encode clk id).
339 - #address-cells : shall be 1 (reg is used to encode clk id).
340 - clocks : shall be the programmable clock source phandles.
341 e.g. clocks = <&clk32k>, <&main>, <&plla>, <&pllb>;
342 - name: device tree node describing a specific prog clock.
343 * #clock-cells : from common clock binding; shall be set to 0.
344 * reg : programmable clock id (register offset from PCKx
346 * interrupts : shall be set to "<(8 + id)>".
350 compatible = "atmel,at91sam9g45-clk-programmable";
352 #address-cells = <1>;
353 interrupt-parent = <&pmc>;
354 clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>;
370 Required properties for smd clock:
371 - #clock-cells : from common clock binding; shall be set to 0.
372 - clocks : shall be the smd clock source phandles.
373 e.g. clocks = <&plladiv>, <&utmi>;
377 compatible = "atmel,at91sam9x5-clk-smd";
379 clocks = <&plladiv>, <&utmi>;
382 Required properties for system clocks:
383 - #size-cells : shall be 0 (reg is used to encode clk id).
384 - #address-cells : shall be 1 (reg is used to encode clk id).
385 - name: device tree node describing a specific system clock.
386 * #clock-cells : from common clock binding; shall be set to 0.
387 * reg: system clock id (bit position in SCER/SCDR/SCSR registers).
388 See Atmel's datasheet to get a full list of system clock ids.
392 compatible = "atmel,at91rm9200-clk-system";
393 #address-cells = <1>;
416 Required properties for usb clock:
417 - #clock-cells : from common clock binding; shall be set to 0.
418 - clocks : shall be the smd clock source phandles.
419 e.g. clocks = <&pllb>;
420 - atmel,clk-divisors (only available for "atmel,at91rm9200-clk-usb"):
421 usb clock divisor table.
422 e.g. divisors = <1 2 4 0>;
426 compatible = "atmel,at91sam9x5-clk-usb";
428 clocks = <&plladiv>, <&utmi>;
432 compatible = "atmel,at91rm9200-clk-usb";
435 atmel,clk-divisors = <1 2 4 0>;
439 Required properties for utmi clock:
440 - interrupt-parent : must reference the PMC node.
441 - interrupts : shall be set to "<AT91_PMC_LOCKU IRQ_TYPE_LEVEL_HIGH>".
442 - #clock-cells : from common clock binding; shall be set to 0.
443 - clocks : shall be the main clock source phandle.
447 compatible = "atmel,at91sam9x5-clk-utmi";
448 interrupt-parent = <&pmc>;
449 interrupts = <AT91_PMC_LOCKU IRQ_TYPE_LEVEL_HIGH>;
454 Required properties for 32 bits bus Matrix clock (h32mx clock):
455 - #clock-cells : from common clock binding; shall be set to 0.
456 - clocks : shall be the master clock source phandle.
461 compatible = "atmel,sama5d4-clk-h32mx";