xref: /openbmc/linux/Documentation/devicetree/bindings/clock/zynq-7000.txt (revision e5451c8f8330e03ad3cfa16048b4daf961af434f)
145aa2c27SJosh CartwrightDevice Tree Clock bindings for the Zynq 7000 EPP
245aa2c27SJosh Cartwright
345aa2c27SJosh CartwrightThe Zynq EPP has several different clk providers, each with there own bindings.
445aa2c27SJosh CartwrightThe purpose of this document is to document their usage.
545aa2c27SJosh Cartwright
645aa2c27SJosh CartwrightSee clock_bindings.txt for more information on the generic clock bindings.
745aa2c27SJosh CartwrightSee Chapter 25 of Zynq TRM for more information about Zynq clocks.
845aa2c27SJosh Cartwright
90ee52b15SSoren Brinkmann== Clock Controller ==
100ee52b15SSoren BrinkmannThe clock controller is a logical abstraction of Zynq's clock tree. It reads
110ee52b15SSoren Brinkmannrequired input clock frequencies from the devicetree and acts as clock provider
120ee52b15SSoren Brinkmannfor all clock consumers of PS clocks.
130ee52b15SSoren Brinkmann
140ee52b15SSoren BrinkmannRequired properties:
150ee52b15SSoren Brinkmann - #clock-cells : Must be 1
160ee52b15SSoren Brinkmann - compatible : "xlnx,ps7-clkc"
17*b0504e39SMichal Simek - reg : SLCR offset and size taken via syscon < 0x100 0x100 >
180ee52b15SSoren Brinkmann - ps-clk-frequency : Frequency of the oscillator providing ps_clk in HZ
190ee52b15SSoren Brinkmann		      (usually 33 MHz oscillators are used for Zynq platforms)
200ee52b15SSoren Brinkmann - clock-output-names : List of strings used to name the clock outputs. Shall be
210ee52b15SSoren Brinkmann			a list of the outputs given below.
220ee52b15SSoren Brinkmann
230ee52b15SSoren BrinkmannOptional properties:
240ee52b15SSoren Brinkmann - clocks : as described in the clock bindings
250ee52b15SSoren Brinkmann - clock-names : as described in the clock bindings
26ba52f8a9SSoren Brinkmann - fclk-enable : Bit mask to enable FCLKs statically at boot time.
27ba52f8a9SSoren Brinkmann		 Bit [0..3] correspond to FCLK0..FCLK3. The corresponding
28ba52f8a9SSoren Brinkmann		 FCLK will only be enabled if it is actually running at
29ba52f8a9SSoren Brinkmann		 boot time.
300ee52b15SSoren Brinkmann
310ee52b15SSoren BrinkmannClock inputs:
320ee52b15SSoren BrinkmannThe following strings are optional parameters to the 'clock-names' property in
330ee52b15SSoren Brinkmannorder to provide an optional (E)MIO clock source.
340ee52b15SSoren Brinkmann - swdt_ext_clk
350ee52b15SSoren Brinkmann - gem0_emio_clk
360ee52b15SSoren Brinkmann - gem1_emio_clk
370ee52b15SSoren Brinkmann - mio_clk_XX		# with XX = 00..53
380ee52b15SSoren Brinkmann...
390ee52b15SSoren Brinkmann
400ee52b15SSoren BrinkmannClock outputs:
410ee52b15SSoren Brinkmann 0:  armpll
420ee52b15SSoren Brinkmann 1:  ddrpll
430ee52b15SSoren Brinkmann 2:  iopll
440ee52b15SSoren Brinkmann 3:  cpu_6or4x
450ee52b15SSoren Brinkmann 4:  cpu_3or2x
460ee52b15SSoren Brinkmann 5:  cpu_2x
470ee52b15SSoren Brinkmann 6:  cpu_1x
480ee52b15SSoren Brinkmann 7:  ddr2x
490ee52b15SSoren Brinkmann 8:  ddr3x
500ee52b15SSoren Brinkmann 9:  dci
510ee52b15SSoren Brinkmann 10: lqspi
520ee52b15SSoren Brinkmann 11: smc
530ee52b15SSoren Brinkmann 12: pcap
540ee52b15SSoren Brinkmann 13: gem0
550ee52b15SSoren Brinkmann 14: gem1
560ee52b15SSoren Brinkmann 15: fclk0
570ee52b15SSoren Brinkmann 16: fclk1
580ee52b15SSoren Brinkmann 17: fclk2
590ee52b15SSoren Brinkmann 18: fclk3
600ee52b15SSoren Brinkmann 19: can0
610ee52b15SSoren Brinkmann 20: can1
620ee52b15SSoren Brinkmann 21: sdio0
630ee52b15SSoren Brinkmann 22: sdio1
640ee52b15SSoren Brinkmann 23: uart0
650ee52b15SSoren Brinkmann 24: uart1
660ee52b15SSoren Brinkmann 25: spi0
670ee52b15SSoren Brinkmann 26: spi1
680ee52b15SSoren Brinkmann 27: dma
690ee52b15SSoren Brinkmann 28: usb0_aper
700ee52b15SSoren Brinkmann 29: usb1_aper
710ee52b15SSoren Brinkmann 30: gem0_aper
720ee52b15SSoren Brinkmann 31: gem1_aper
730ee52b15SSoren Brinkmann 32: sdio0_aper
740ee52b15SSoren Brinkmann 33: sdio1_aper
750ee52b15SSoren Brinkmann 34: spi0_aper
760ee52b15SSoren Brinkmann 35: spi1_aper
770ee52b15SSoren Brinkmann 36: can0_aper
780ee52b15SSoren Brinkmann 37: can1_aper
790ee52b15SSoren Brinkmann 38: i2c0_aper
800ee52b15SSoren Brinkmann 39: i2c1_aper
810ee52b15SSoren Brinkmann 40: uart0_aper
820ee52b15SSoren Brinkmann 41: uart1_aper
830ee52b15SSoren Brinkmann 42: gpio_aper
840ee52b15SSoren Brinkmann 43: lqspi_aper
850ee52b15SSoren Brinkmann 44: smc_aper
860ee52b15SSoren Brinkmann 45: swdt
870ee52b15SSoren Brinkmann 46: dbg_trc
880ee52b15SSoren Brinkmann 47: dbg_apb
890ee52b15SSoren Brinkmann
900ee52b15SSoren BrinkmannExample:
91*b0504e39SMichal Simek	clkc: clkc@100 {
920ee52b15SSoren Brinkmann		#clock-cells = <1>;
930ee52b15SSoren Brinkmann		compatible = "xlnx,ps7-clkc";
940ee52b15SSoren Brinkmann		ps-clk-frequency = <33333333>;
95*b0504e39SMichal Simek		reg = <0x100 0x100>;
960ee52b15SSoren Brinkmann		clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x",
970ee52b15SSoren Brinkmann				"cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x",
980ee52b15SSoren Brinkmann				"dci", "lqspi", "smc", "pcap", "gem0", "gem1",
990ee52b15SSoren Brinkmann				"fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1",
1000ee52b15SSoren Brinkmann				"sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1",
1010ee52b15SSoren Brinkmann				"dma", "usb0_aper", "usb1_aper", "gem0_aper",
1020ee52b15SSoren Brinkmann				"gem1_aper", "sdio0_aper", "sdio1_aper",
1030ee52b15SSoren Brinkmann				"spi0_aper", "spi1_aper", "can0_aper", "can1_aper",
1040ee52b15SSoren Brinkmann				"i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper",
1050ee52b15SSoren Brinkmann				"gpio_aper", "lqspi_aper", "smc_aper", "swdt",
1060ee52b15SSoren Brinkmann				"dbg_trc", "dbg_apb";
1070ee52b15SSoren Brinkmann		# optional props
1080ee52b15SSoren Brinkmann		clocks = <&clkc 16>, <&clk_foo>;
1090ee52b15SSoren Brinkmann		clock-names = "gem1_emio_clk", "can_mio_clk_23";
1100ee52b15SSoren Brinkmann	};
111