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