xref: /freebsd/sys/contrib/device-tree/Bindings/clock/zynq-7000.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotDevice Tree Clock bindings for the Zynq 7000 EPP
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotThe Zynq EPP has several different clk providers, each with there own bindings.
4*c66ec88fSEmmanuel VadotThe purpose of this document is to document their usage.
5*c66ec88fSEmmanuel Vadot
6*c66ec88fSEmmanuel VadotSee clock_bindings.txt for more information on the generic clock bindings.
7*c66ec88fSEmmanuel VadotSee Chapter 25 of Zynq TRM for more information about Zynq clocks.
8*c66ec88fSEmmanuel Vadot
9*c66ec88fSEmmanuel Vadot== Clock Controller ==
10*c66ec88fSEmmanuel VadotThe clock controller is a logical abstraction of Zynq's clock tree. It reads
11*c66ec88fSEmmanuel Vadotrequired input clock frequencies from the devicetree and acts as clock provider
12*c66ec88fSEmmanuel Vadotfor all clock consumers of PS clocks.
13*c66ec88fSEmmanuel Vadot
14*c66ec88fSEmmanuel VadotRequired properties:
15*c66ec88fSEmmanuel Vadot - #clock-cells : Must be 1
16*c66ec88fSEmmanuel Vadot - compatible : "xlnx,ps7-clkc"
17*c66ec88fSEmmanuel Vadot - reg : SLCR offset and size taken via syscon < 0x100 0x100 >
18*c66ec88fSEmmanuel Vadot - ps-clk-frequency : Frequency of the oscillator providing ps_clk in HZ
19*c66ec88fSEmmanuel Vadot		      (usually 33 MHz oscillators are used for Zynq platforms)
20*c66ec88fSEmmanuel Vadot - clock-output-names : List of strings used to name the clock outputs. Shall be
21*c66ec88fSEmmanuel Vadot			a list of the outputs given below.
22*c66ec88fSEmmanuel Vadot
23*c66ec88fSEmmanuel VadotOptional properties:
24*c66ec88fSEmmanuel Vadot - clocks : as described in the clock bindings
25*c66ec88fSEmmanuel Vadot - clock-names : as described in the clock bindings
26*c66ec88fSEmmanuel Vadot - fclk-enable : Bit mask to enable FCLKs statically at boot time.
27*c66ec88fSEmmanuel Vadot		 Bit [0..3] correspond to FCLK0..FCLK3. The corresponding
28*c66ec88fSEmmanuel Vadot		 FCLK will only be enabled if it is actually running at
29*c66ec88fSEmmanuel Vadot		 boot time.
30*c66ec88fSEmmanuel Vadot
31*c66ec88fSEmmanuel VadotClock inputs:
32*c66ec88fSEmmanuel VadotThe following strings are optional parameters to the 'clock-names' property in
33*c66ec88fSEmmanuel Vadotorder to provide an optional (E)MIO clock source.
34*c66ec88fSEmmanuel Vadot - swdt_ext_clk
35*c66ec88fSEmmanuel Vadot - gem0_emio_clk
36*c66ec88fSEmmanuel Vadot - gem1_emio_clk
37*c66ec88fSEmmanuel Vadot - mio_clk_XX		# with XX = 00..53
38*c66ec88fSEmmanuel Vadot...
39*c66ec88fSEmmanuel Vadot
40*c66ec88fSEmmanuel VadotClock outputs:
41*c66ec88fSEmmanuel Vadot 0:  armpll
42*c66ec88fSEmmanuel Vadot 1:  ddrpll
43*c66ec88fSEmmanuel Vadot 2:  iopll
44*c66ec88fSEmmanuel Vadot 3:  cpu_6or4x
45*c66ec88fSEmmanuel Vadot 4:  cpu_3or2x
46*c66ec88fSEmmanuel Vadot 5:  cpu_2x
47*c66ec88fSEmmanuel Vadot 6:  cpu_1x
48*c66ec88fSEmmanuel Vadot 7:  ddr2x
49*c66ec88fSEmmanuel Vadot 8:  ddr3x
50*c66ec88fSEmmanuel Vadot 9:  dci
51*c66ec88fSEmmanuel Vadot 10: lqspi
52*c66ec88fSEmmanuel Vadot 11: smc
53*c66ec88fSEmmanuel Vadot 12: pcap
54*c66ec88fSEmmanuel Vadot 13: gem0
55*c66ec88fSEmmanuel Vadot 14: gem1
56*c66ec88fSEmmanuel Vadot 15: fclk0
57*c66ec88fSEmmanuel Vadot 16: fclk1
58*c66ec88fSEmmanuel Vadot 17: fclk2
59*c66ec88fSEmmanuel Vadot 18: fclk3
60*c66ec88fSEmmanuel Vadot 19: can0
61*c66ec88fSEmmanuel Vadot 20: can1
62*c66ec88fSEmmanuel Vadot 21: sdio0
63*c66ec88fSEmmanuel Vadot 22: sdio1
64*c66ec88fSEmmanuel Vadot 23: uart0
65*c66ec88fSEmmanuel Vadot 24: uart1
66*c66ec88fSEmmanuel Vadot 25: spi0
67*c66ec88fSEmmanuel Vadot 26: spi1
68*c66ec88fSEmmanuel Vadot 27: dma
69*c66ec88fSEmmanuel Vadot 28: usb0_aper
70*c66ec88fSEmmanuel Vadot 29: usb1_aper
71*c66ec88fSEmmanuel Vadot 30: gem0_aper
72*c66ec88fSEmmanuel Vadot 31: gem1_aper
73*c66ec88fSEmmanuel Vadot 32: sdio0_aper
74*c66ec88fSEmmanuel Vadot 33: sdio1_aper
75*c66ec88fSEmmanuel Vadot 34: spi0_aper
76*c66ec88fSEmmanuel Vadot 35: spi1_aper
77*c66ec88fSEmmanuel Vadot 36: can0_aper
78*c66ec88fSEmmanuel Vadot 37: can1_aper
79*c66ec88fSEmmanuel Vadot 38: i2c0_aper
80*c66ec88fSEmmanuel Vadot 39: i2c1_aper
81*c66ec88fSEmmanuel Vadot 40: uart0_aper
82*c66ec88fSEmmanuel Vadot 41: uart1_aper
83*c66ec88fSEmmanuel Vadot 42: gpio_aper
84*c66ec88fSEmmanuel Vadot 43: lqspi_aper
85*c66ec88fSEmmanuel Vadot 44: smc_aper
86*c66ec88fSEmmanuel Vadot 45: swdt
87*c66ec88fSEmmanuel Vadot 46: dbg_trc
88*c66ec88fSEmmanuel Vadot 47: dbg_apb
89*c66ec88fSEmmanuel Vadot
90*c66ec88fSEmmanuel VadotExample:
91*c66ec88fSEmmanuel Vadot	clkc: clkc@100 {
92*c66ec88fSEmmanuel Vadot		#clock-cells = <1>;
93*c66ec88fSEmmanuel Vadot		compatible = "xlnx,ps7-clkc";
94*c66ec88fSEmmanuel Vadot		ps-clk-frequency = <33333333>;
95*c66ec88fSEmmanuel Vadot		reg = <0x100 0x100>;
96*c66ec88fSEmmanuel Vadot		clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x",
97*c66ec88fSEmmanuel Vadot				"cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x",
98*c66ec88fSEmmanuel Vadot				"dci", "lqspi", "smc", "pcap", "gem0", "gem1",
99*c66ec88fSEmmanuel Vadot				"fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1",
100*c66ec88fSEmmanuel Vadot				"sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1",
101*c66ec88fSEmmanuel Vadot				"dma", "usb0_aper", "usb1_aper", "gem0_aper",
102*c66ec88fSEmmanuel Vadot				"gem1_aper", "sdio0_aper", "sdio1_aper",
103*c66ec88fSEmmanuel Vadot				"spi0_aper", "spi1_aper", "can0_aper", "can1_aper",
104*c66ec88fSEmmanuel Vadot				"i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper",
105*c66ec88fSEmmanuel Vadot				"gpio_aper", "lqspi_aper", "smc_aper", "swdt",
106*c66ec88fSEmmanuel Vadot				"dbg_trc", "dbg_apb";
107*c66ec88fSEmmanuel Vadot		# optional props
108*c66ec88fSEmmanuel Vadot		clocks = <&clkc 16>, <&clk_foo>;
109*c66ec88fSEmmanuel Vadot		clock-names = "gem1_emio_clk", "can_mio_clk_23";
110*c66ec88fSEmmanuel Vadot	};
111