• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Device Tree Clock bindings for arch-at91
2
3This binding uses the common clock binding[1].
4
5[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
6
7Required properties:
8- compatible : shall be one of the following:
9	"atmel,at91sam9x5-sckc" or
10	"atmel,sama5d4-sckc":
11		at91 SCKC (Slow Clock Controller)
12		This node contains the slow clock definitions.
13
14	"atmel,at91sam9x5-clk-slow-osc":
15		at91 slow oscillator
16
17	"atmel,at91sam9x5-clk-slow-rc-osc":
18		at91 internal slow RC oscillator
19
20	"atmel,<chip>-pmc":
21		at91 PMC (Power Management Controller)
22		All at91 specific clocks (clocks defined below) must be child
23		node of the PMC node.
24		<chip> can be: at91rm9200, at91sam9260, at91sam9261,
25		at91sam9263, at91sam9g45, at91sam9n12, at91sam9rl, at91sam9x5,
26		sama5d2, sama5d3 or sama5d4.
27
28	"atmel,at91sam9x5-clk-slow" (under sckc node)
29	or
30	"atmel,at91sam9260-clk-slow" (under pmc node):
31		at91 slow clk
32
33	"atmel,at91rm9200-clk-main-osc"
34	"atmel,at91sam9x5-clk-main-rc-osc"
35		at91 main clk sources
36
37	"atmel,at91sam9x5-clk-main"
38	"atmel,at91rm9200-clk-main":
39		at91 main clock
40
41	"atmel,at91rm9200-clk-master" or
42	"atmel,at91sam9x5-clk-master":
43		at91 master clock
44
45	"atmel,at91sam9x5-clk-peripheral" or
46	"atmel,at91rm9200-clk-peripheral":
47		at91 peripheral clocks
48
49	"atmel,at91rm9200-clk-pll" or
50	"atmel,at91sam9g45-clk-pll" or
51	"atmel,at91sam9g20-clk-pllb" or
52	"atmel,sama5d3-clk-pll":
53		at91 pll clocks
54
55	"atmel,at91sam9x5-clk-plldiv":
56		at91 plla divisor
57
58	"atmel,at91rm9200-clk-programmable" or
59	"atmel,at91sam9g45-clk-programmable" or
60	"atmel,at91sam9x5-clk-programmable":
61		at91 programmable clocks
62
63	"atmel,at91sam9x5-clk-smd":
64		at91 SMD (Soft Modem) clock
65
66	"atmel,at91rm9200-clk-system":
67		at91 system clocks
68
69	"atmel,at91rm9200-clk-usb" or
70	"atmel,at91sam9x5-clk-usb" or
71	"atmel,at91sam9n12-clk-usb":
72		at91 usb clock
73
74	"atmel,at91sam9x5-clk-utmi":
75		at91 utmi clock
76
77	"atmel,sama5d4-clk-h32mx":
78		at91 h32mx clock
79
80	"atmel,sama5d2-clk-generated":
81		at91 generated clock
82
83	"atmel,sama5d2-clk-audio-pll-frac":
84		at91 audio fractional pll
85
86	"atmel,sama5d2-clk-audio-pll-pad":
87		at91 audio pll CLK_AUDIO output pin
88
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
92
93	"atmel,sama5d2-clk-i2s-mux" (under pmc node):
94		at91 I2S clock source selection
95
96Required 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).
100
101
102For example:
103	sckc: sckc@fffffe50 {
104		compatible = "atmel,sama5d3-pmc";
105		reg = <0xfffffe50 0x4>
106		#size-cells = <0>;
107		#address-cells = <1>;
108
109		/* put at91 slow clocks here */
110	};
111
112
113Required 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.
116
117Optional properties:
118- clock-accuracy : define the internal RC oscillator accuracy.
119
120For example:
121	slow_rc_osc: slow_rc_osc {
122		compatible = "atmel,at91sam9x5-clk-slow-rc-osc";
123		clock-frequency = <32768>;
124		clock-accuracy = <50000000>;
125	};
126
127Required 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).
130
131Optional properties:
132- atmel,osc-bypass : boolean property. Set this when a clock signal is directly
133  provided on XIN.
134
135For example:
136	slow_osc: slow_osc {
137		compatible = "atmel,at91rm9200-clk-slow-osc";
138		#clock-cells = <0>;
139		clocks = <&slow_xtal>;
140	};
141
142Required 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).
145
146For example:
147	clk32k: slck {
148		compatible = "atmel,at91sam9x5-clk-slow";
149		#clock-cells = <0>;
150		clocks = <&slow_rc_osc &slow_osc>;
151	};
152
153Required 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
171
172For example:
173	pmc: pmc@fffffc00 {
174		compatible = "atmel,sama5d3-pmc";
175		interrupts = <1 4 7>;
176		interrupt-controller;
177		#interrupt-cells = <2>;
178		#size-cells = <0>;
179		#address-cells = <1>;
180
181		/* put at91 clocks here */
182	};
183
184Required properties for main clock internal RC oscillator:
185- interrupts : shall be set to "<0>".
186- clock-frequency : define the internal RC oscillator frequency.
187
188Optional properties:
189- clock-accuracy : define the internal RC oscillator accuracy.
190
191For example:
192	main_rc_osc: main_rc_osc {
193		compatible = "atmel,at91sam9x5-clk-main-rc-osc";
194		interrupt-parent = <&pmc>;
195		interrupts = <0>;
196		clock-frequency = <12000000>;
197		clock-accuracy = <50000000>;
198	};
199
200Required 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).
204
205Optional properties:
206- atmel,osc-bypass : boolean property. Specified if a clock signal is provided
207  on XIN.
208
209  clock signal is directly provided on XIN pin.
210
211For example:
212	main_osc: main_osc {
213		compatible = "atmel,at91rm9200-clk-main-osc";
214		interrupt-parent = <&pmc>;
215		interrupts = <0>;
216		#clock-cells = <0>;
217		clocks = <&main_xtal>;
218	};
219
220Required 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).
224
225For example:
226	main: mainck {
227		compatible = "atmel,at91sam9x5-clk-main";
228		interrupt-parent = <&pmc>;
229		interrupts = <0>;
230		#clock-cells = <0>;
231		clocks = <&main_rc_osc &main_osc>;
232	};
233
234Required 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
240			   fields).
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).
247
248For example:
249	mck: mck {
250		compatible = "atmel,at91rm9200-clk-master";
251		interrupt-parent = <&pmc>;
252		interrupts = <3>;
253		#clock-cells = <0>;
254		atmel,clk-output-range = <0 133000000>;
255		atmel,clk-divisors = <1 2 4 0>;
256	};
257
258Required 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
269	  compatible IPs.
270
271For example:
272	periph: periphck {
273		compatible = "atmel,at91sam9x5-clk-peripheral";
274		#size-cells = <0>;
275		#address-cells = <1>;
276		clocks = <&mck>;
277
278		ssc0_clk {
279			#clock-cells = <0>;
280			reg = <2>;
281			atmel,clk-output-range = <0 133000000>;
282		};
283
284		usart0_clk {
285			#clock-cells = <0>;
286			reg = <3>;
287			atmel,clk-output-range = <0 66000000>;
288		};
289	};
290
291
292Required 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.
296- reg : pll id.
297	0 -> PLL A
298	1 -> PLL B
299- atmel,clk-input-range : minimum and maximum source clock frequency (two u32
300			  fields).
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
304				      or 4.
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
307	  range.
308	* 4th cell is optional and represents the ICPLL field (PLLICPR
309	  register)
310- atmel,pll-clk-output-ranges : pll output frequency ranges + optional parameter
311				depending on #atmel,pll-output-range-cells
312				property value.
313
314For example:
315	plla: pllack {
316		compatible = "atmel,at91sam9g45-clk-pll";
317		interrupt-parent = <&pmc>;
318		interrupts = <1>;
319		#clock-cells = <0>;
320		clocks = <&main>;
321		reg = <0>;
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>;
332	};
333
334Required 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.
337
338The pll divisor is equal to 2 and cannot be changed.
339
340For example:
341	plladiv: plladivck {
342		compatible = "atmel,at91sam9x5-clk-plldiv";
343		#clock-cells = <0>;
344		clocks = <&plla>;
345	};
346
347Required 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
355			 register).
356	* interrupts : shall be set to "<(8 + id)>".
357
358For example:
359	prog: progck {
360		compatible = "atmel,at91sam9g45-clk-programmable";
361		#size-cells = <0>;
362		#address-cells = <1>;
363		interrupt-parent = <&pmc>;
364		clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>;
365
366		prog0 {
367			#clock-cells = <0>;
368			reg = <0>;
369			interrupts = <8>;
370		};
371
372		prog1 {
373			#clock-cells = <0>;
374			reg = <1>;
375			interrupts = <9>;
376		};
377	};
378
379
380Required 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>;
384
385For example:
386	smd: smdck {
387		compatible = "atmel,at91sam9x5-clk-smd";
388		#clock-cells = <0>;
389		clocks = <&plladiv>, <&utmi>;
390	};
391
392Required 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.
399
400For example:
401	system: systemck {
402		compatible = "atmel,at91rm9200-clk-system";
403		#address-cells = <1>;
404		#size-cells = <0>;
405
406		ddrck {
407			#clock-cells = <0>;
408			reg = <2>;
409			clocks = <&mck>;
410		};
411
412		uhpck {
413			#clock-cells = <0>;
414			reg = <6>;
415			clocks = <&usb>;
416		};
417
418		udpck {
419			#clock-cells = <0>;
420			reg = <7>;
421			clocks = <&usb>;
422		};
423	};
424
425
426Required 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>;
433
434For example:
435	usb: usbck {
436		compatible = "atmel,at91sam9x5-clk-usb";
437		#clock-cells = <0>;
438		clocks = <&plladiv>, <&utmi>;
439	};
440
441	usb: usbck {
442		compatible = "atmel,at91rm9200-clk-usb";
443		#clock-cells = <0>;
444		clocks = <&pllb>;
445		atmel,clk-divisors = <1 2 4 0>;
446	};
447
448
449Required 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.
453
454For example:
455	utmi: utmick {
456		compatible = "atmel,at91sam9x5-clk-utmi";
457		interrupt-parent = <&pmc>;
458		interrupts = <AT91_PMC_LOCKU IRQ_TYPE_LEVEL_HIGH>;
459		#clock-cells = <0>;
460		clocks = <&main>;
461	};
462
463Required 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.
466
467For example:
468	h32ck: h32mxck {
469		#clock-cells = <0>;
470		compatible = "atmel,sama5d4-clk-h32mx";
471		clocks = <&mck>;
472	};
473
474Required 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
484	  (two u32 fields).
485
486For example:
487	gck {
488		compatible = "atmel,sama5d2-clk-generated";
489		#address-cells = <1>;
490		#size-cells = <0>;
491		clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>, <&audio_pll_pmc>;
492
493		tcb0_gclk: tcb0_gclk {
494			#clock-cells = <0>;
495			reg = <35>;
496			atmel,clk-output-range = <0 83000000>;
497		};
498
499		pwm_gclk: pwm_gclk {
500			#clock-cells = <0>;
501			reg = <38>;
502			atmel,clk-output-range = <0 83000000>;
503		};
504	};
505
506Required 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
515	  the correct order.
516	* reg: I2S bus id of the corresponding mux clock.
517	  e.g. reg = <0>; for i2s0, reg = <1>; for i2s1
518
519For example:
520	i2s_clkmux {
521		compatible = "atmel,sama5d2-clk-i2s-mux";
522		#address-cells = <1>;
523		#size-cells = <0>;
524
525		i2s0muxck: i2s0_muxclk {
526			clocks = <&i2s0_clk>, <&i2s0_gclk>;
527			#clock-cells = <0>;
528			reg = <0>;
529		};
530
531		i2s1muxck: i2s1_muxclk {
532			clocks = <&i2s1_clk>, <&i2s1_gclk>;
533			#clock-cells = <0>;
534			reg = <1>;
535		};
536	};
537