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" or
11 at91 SCKC (Slow Clock Controller)
12 This node contains the slow clock definitions.
14 "atmel,at91sam9x5-clk-slow-osc":
17 "atmel,at91sam9x5-clk-slow-rc-osc":
18 at91 internal slow RC oscillator
21 at91 PMC (Power Management Controller)
22 All at91 specific clocks (clocks defined below) must be child
24 <chip> can be: at91rm9200, at91sam9260, at91sam9261,
25 at91sam9263, at91sam9g45, at91sam9n12, at91sam9rl, at91sam9x5,
26 sama5d2, sama5d3 or sama5d4.
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 "atmel,sama5d2-clk-generated":
83 "atmel,sama5d2-clk-audio-pll-frac":
84 at91 audio fractional pll
86 "atmel,sama5d2-clk-audio-pll-pad":
87 at91 audio pll CLK_AUDIO output pin
89 "atmel,sama5d2-clk-audio-pll-pmc"
90 at91 audio pll output on AUDIOPLLCLK that feeds the PMC
91 and can be used by peripheral clock or generic clock
93 "atmel,sama5d2-clk-i2s-mux" (under pmc node):
94 at91 I2S clock source selection
96 Required properties for SCKC node:
97 - reg : defines the IO memory reserved for the SCKC.
98 - #size-cells : shall be 0 (reg is used to encode clk id).
99 - #address-cells : shall be 1 (reg is used to encode clk id).
103 sckc: sckc@fffffe50 {
104 compatible = "atmel,sama5d3-pmc";
105 reg = <0xfffffe50 0x4>
107 #address-cells = <1>;
109 /* put at91 slow clocks here */
113 Required properties for internal slow RC oscillator:
114 - #clock-cells : from common clock binding; shall be set to 0.
115 - clock-frequency : define the internal RC oscillator frequency.
118 - clock-accuracy : define the internal RC oscillator accuracy.
121 slow_rc_osc: slow_rc_osc {
122 compatible = "atmel,at91sam9x5-clk-slow-rc-osc";
123 clock-frequency = <32768>;
124 clock-accuracy = <50000000>;
127 Required properties for slow oscillator:
128 - #clock-cells : from common clock binding; shall be set to 0.
129 - clocks : shall encode the main osc source clk sources (see atmel datasheet).
132 - atmel,osc-bypass : boolean property. Set this when a clock signal is directly
137 compatible = "atmel,at91rm9200-clk-slow-osc";
139 clocks = <&slow_xtal>;
142 Required properties for slow clock:
143 - #clock-cells : from common clock binding; shall be set to 0.
144 - clocks : shall encode the slow clk sources (see atmel datasheet).
148 compatible = "atmel,at91sam9x5-clk-slow";
150 clocks = <&slow_rc_osc &slow_osc>;
153 Required properties for PMC node:
154 - reg : defines the IO memory reserved for the PMC.
155 - #size-cells : shall be 0 (reg is used to encode clk id).
156 - #address-cells : shall be 1 (reg is used to encode clk id).
157 - interrupts : shall be set to PMC interrupt line.
158 - interrupt-controller : tell that the PMC is an interrupt controller.
159 - #interrupt-cells : must be set to 1. The first cell encodes the interrupt id,
160 and reflect the bit position in the PMC_ER/DR/SR registers.
161 You can use the dt macros defined in dt-bindings/clock/at91.h.
162 0 (AT91_PMC_MOSCS) -> main oscillator ready
163 1 (AT91_PMC_LOCKA) -> PLL A ready
164 2 (AT91_PMC_LOCKB) -> PLL B ready
165 3 (AT91_PMC_MCKRDY) -> master clock ready
166 6 (AT91_PMC_LOCKU) -> UTMI PLL clock ready
167 8 .. 15 (AT91_PMC_PCKRDY(id)) -> programmable clock ready
168 16 (AT91_PMC_MOSCSELS) -> main oscillator selected
169 17 (AT91_PMC_MOSCRCS) -> RC main oscillator stabilized
170 18 (AT91_PMC_CFDEV) -> clock failure detected
174 compatible = "atmel,sama5d3-pmc";
175 interrupts = <1 4 7>;
176 interrupt-controller;
177 #interrupt-cells = <2>;
179 #address-cells = <1>;
181 /* put at91 clocks here */
184 Required properties for main clock internal RC oscillator:
185 - interrupts : shall be set to "<0>".
186 - clock-frequency : define the internal RC oscillator frequency.
189 - clock-accuracy : define the internal RC oscillator accuracy.
192 main_rc_osc: main_rc_osc {
193 compatible = "atmel,at91sam9x5-clk-main-rc-osc";
194 interrupt-parent = <&pmc>;
196 clock-frequency = <12000000>;
197 clock-accuracy = <50000000>;
200 Required properties for main clock oscillator:
201 - interrupts : shall be set to "<0>".
202 - #clock-cells : from common clock binding; shall be set to 0.
203 - clocks : shall encode the main osc source clk sources (see atmel datasheet).
206 - atmel,osc-bypass : boolean property. Specified if a clock signal is provided
209 clock signal is directly provided on XIN pin.
213 compatible = "atmel,at91rm9200-clk-main-osc";
214 interrupt-parent = <&pmc>;
217 clocks = <&main_xtal>;
220 Required properties for main clock:
221 - interrupts : shall be set to "<0>".
222 - #clock-cells : from common clock binding; shall be set to 0.
223 - clocks : shall encode the main clk sources (see atmel datasheet).
227 compatible = "atmel,at91sam9x5-clk-main";
228 interrupt-parent = <&pmc>;
231 clocks = <&main_rc_osc &main_osc>;
234 Required properties for master clock:
235 - interrupts : shall be set to "<3>".
236 - #clock-cells : from common clock binding; shall be set to 0.
237 - clocks : shall be the master clock sources (see atmel datasheet) phandles.
238 e.g. "<&ck32k>, <&main>, <&plla>, <&pllb>".
239 - atmel,clk-output-range : minimum and maximum clock frequency (two u32
241 e.g. output = <0 133000000>; <=> 0 to 133MHz.
242 - atmel,clk-divisors : master clock divisors table (four u32 fields).
243 0 <=> reserved value.
244 e.g. divisors = <1 2 4 6>;
245 - atmel,master-clk-have-div3-pres : some SoC use the reserved value 7 in the
246 PRES field as CLOCK_DIV3 (e.g sam9x5).
250 compatible = "atmel,at91rm9200-clk-master";
251 interrupt-parent = <&pmc>;
254 atmel,clk-output-range = <0 133000000>;
255 atmel,clk-divisors = <1 2 4 0>;
258 Required properties for peripheral clocks:
259 - #size-cells : shall be 0 (reg is used to encode clk id).
260 - #address-cells : shall be 1 (reg is used to encode clk id).
261 - clocks : shall be the master clock phandle.
262 e.g. clocks = <&mck>;
263 - name: device tree node describing a specific peripheral clock.
264 * #clock-cells : from common clock binding; shall be set to 0.
265 * reg: peripheral id. See Atmel's datasheets to get a full
266 list of peripheral ids.
267 * atmel,clk-output-range : minimum and maximum clock frequency
268 (two u32 fields). Only valid on at91sam9x5-clk-peripheral
273 compatible = "atmel,at91sam9x5-clk-peripheral";
275 #address-cells = <1>;
281 atmel,clk-output-range = <0 133000000>;
287 atmel,clk-output-range = <0 66000000>;
292 Required properties for pll clocks:
293 - interrupts : shall be set to "<1>".
294 - #clock-cells : from common clock binding; shall be set to 0.
295 - clocks : shall be the main clock phandle.
299 - atmel,clk-input-range : minimum and maximum source clock frequency (two u32
301 e.g. input = <1 32000000>; <=> 1 to 32MHz.
302 - #atmel,pll-clk-output-range-cells : number of cells reserved for pll output
303 range description. Sould be set to 2, 3
305 * 1st and 2nd cells represent the frequency range (min-max).
306 * 3rd cell is optional and represents the OUT field value for the given
308 * 4th cell is optional and represents the ICPLL field (PLLICPR
310 - atmel,pll-clk-output-ranges : pll output frequency ranges + optional parameter
311 depending on #atmel,pll-output-range-cells
316 compatible = "atmel,at91sam9g45-clk-pll";
317 interrupt-parent = <&pmc>;
322 atmel,clk-input-range = <2000000 32000000>;
323 #atmel,pll-clk-output-range-cells = <4>;
324 atmel,pll-clk-output-ranges = <74500000 800000000 0 0
325 69500000 750000000 1 0
326 64500000 700000000 2 0
327 59500000 650000000 3 0
328 54500000 600000000 0 1
329 49500000 550000000 1 1
330 44500000 500000000 2 1
331 40000000 450000000 3 1>;
334 Required properties for plldiv clocks (plldiv = pll / 2):
335 - #clock-cells : from common clock binding; shall be set to 0.
336 - clocks : shall be the plla clock phandle.
338 The pll divisor is equal to 2 and cannot be changed.
342 compatible = "atmel,at91sam9x5-clk-plldiv";
347 Required properties for programmable clocks:
348 - #size-cells : shall be 0 (reg is used to encode clk id).
349 - #address-cells : shall be 1 (reg is used to encode clk id).
350 - clocks : shall be the programmable clock source phandles.
351 e.g. clocks = <&clk32k>, <&main>, <&plla>, <&pllb>;
352 - name: device tree node describing a specific prog clock.
353 * #clock-cells : from common clock binding; shall be set to 0.
354 * reg : programmable clock id (register offset from PCKx
356 * interrupts : shall be set to "<(8 + id)>".
360 compatible = "atmel,at91sam9g45-clk-programmable";
362 #address-cells = <1>;
363 interrupt-parent = <&pmc>;
364 clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>;
380 Required properties for smd clock:
381 - #clock-cells : from common clock binding; shall be set to 0.
382 - clocks : shall be the smd clock source phandles.
383 e.g. clocks = <&plladiv>, <&utmi>;
387 compatible = "atmel,at91sam9x5-clk-smd";
389 clocks = <&plladiv>, <&utmi>;
392 Required properties for system clocks:
393 - #size-cells : shall be 0 (reg is used to encode clk id).
394 - #address-cells : shall be 1 (reg is used to encode clk id).
395 - name: device tree node describing a specific system clock.
396 * #clock-cells : from common clock binding; shall be set to 0.
397 * reg: system clock id (bit position in SCER/SCDR/SCSR registers).
398 See Atmel's datasheet to get a full list of system clock ids.
402 compatible = "atmel,at91rm9200-clk-system";
403 #address-cells = <1>;
426 Required properties for usb clock:
427 - #clock-cells : from common clock binding; shall be set to 0.
428 - clocks : shall be the smd clock source phandles.
429 e.g. clocks = <&pllb>;
430 - atmel,clk-divisors (only available for "atmel,at91rm9200-clk-usb"):
431 usb clock divisor table.
432 e.g. divisors = <1 2 4 0>;
436 compatible = "atmel,at91sam9x5-clk-usb";
438 clocks = <&plladiv>, <&utmi>;
442 compatible = "atmel,at91rm9200-clk-usb";
445 atmel,clk-divisors = <1 2 4 0>;
449 Required properties for utmi clock:
450 - interrupts : shall be set to "<AT91_PMC_LOCKU IRQ_TYPE_LEVEL_HIGH>".
451 - #clock-cells : from common clock binding; shall be set to 0.
452 - clocks : shall be the main clock source phandle.
456 compatible = "atmel,at91sam9x5-clk-utmi";
457 interrupt-parent = <&pmc>;
458 interrupts = <AT91_PMC_LOCKU IRQ_TYPE_LEVEL_HIGH>;
463 Required properties for 32 bits bus Matrix clock (h32mx clock):
464 - #clock-cells : from common clock binding; shall be set to 0.
465 - clocks : shall be the master clock source phandle.
470 compatible = "atmel,sama5d4-clk-h32mx";
474 Required properties for generated clocks:
475 - #size-cells : shall be 0 (reg is used to encode clk id).
476 - #address-cells : shall be 1 (reg is used to encode clk id).
477 - clocks : shall be the generated clock source phandles.
478 e.g. clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>, <&audio_pll_pmc>;
479 - name: device tree node describing a specific generated clock.
480 * #clock-cells : from common clock binding; shall be set to 0.
481 * reg: peripheral id. See Atmel's datasheets to get a full
482 list of peripheral ids.
483 * atmel,clk-output-range : minimum and maximum clock frequency
488 compatible = "atmel,sama5d2-clk-generated";
489 #address-cells = <1>;
491 clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>, <&audio_pll_pmc>;
493 tcb0_gclk: tcb0_gclk {
496 atmel,clk-output-range = <0 83000000>;
502 atmel,clk-output-range = <0 83000000>;
506 Required properties for I2S mux clocks:
507 - #size-cells : shall be 0 (reg is used to encode I2S bus id).
508 - #address-cells : shall be 1 (reg is used to encode I2S bus id).
509 - name: device tree node describing a specific mux clock.
510 * #clock-cells : from common clock binding; shall be set to 0.
511 * clocks : shall be the mux clock parent phandles; shall be 2 phandles:
512 peripheral and generated clock; the first phandle shall belong to the
513 peripheral clock and the second one shall belong to the generated
514 clock; "clock-indices" property can be user to specify
516 * reg: I2S bus id of the corresponding mux clock.
517 e.g. reg = <0>; for i2s0, reg = <1>; for i2s1
521 compatible = "atmel,sama5d2-clk-i2s-mux";
522 #address-cells = <1>;
525 i2s0muxck: i2s0_muxclk {
526 clocks = <&i2s0_clk>, <&i2s0_gclk>;
531 i2s1muxck: i2s1_muxclk {
532 clocks = <&i2s1_clk>, <&i2s1_gclk>;