zynq-7000.txt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. Device Tree Clock bindings for the Zynq 7000 EPP
  2. The Zynq EPP has several different clk providers, each with there own bindings.
  3. The purpose of this document is to document their usage.
  4. See clock_bindings.txt for more information on the generic clock bindings.
  5. See Chapter 25 of Zynq TRM for more information about Zynq clocks.
  6. == Clock Controller ==
  7. The clock controller is a logical abstraction of Zynq's clock tree. It reads
  8. required input clock frequencies from the devicetree and acts as clock provider
  9. for all clock consumers of PS clocks.
  10. Required properties:
  11. - #clock-cells : Must be 1
  12. - compatible : "xlnx,ps7-clkc"
  13. - ps-clk-frequency : Frequency of the oscillator providing ps_clk in HZ
  14. (usually 33 MHz oscillators are used for Zynq platforms)
  15. - clock-output-names : List of strings used to name the clock outputs. Shall be
  16. a list of the outputs given below.
  17. Optional properties:
  18. - clocks : as described in the clock bindings
  19. - clock-names : as described in the clock bindings
  20. Clock inputs:
  21. The following strings are optional parameters to the 'clock-names' property in
  22. order to provide an optional (E)MIO clock source.
  23. - swdt_ext_clk
  24. - gem0_emio_clk
  25. - gem1_emio_clk
  26. - mio_clk_XX # with XX = 00..53
  27. ...
  28. Clock outputs:
  29. 0: armpll
  30. 1: ddrpll
  31. 2: iopll
  32. 3: cpu_6or4x
  33. 4: cpu_3or2x
  34. 5: cpu_2x
  35. 6: cpu_1x
  36. 7: ddr2x
  37. 8: ddr3x
  38. 9: dci
  39. 10: lqspi
  40. 11: smc
  41. 12: pcap
  42. 13: gem0
  43. 14: gem1
  44. 15: fclk0
  45. 16: fclk1
  46. 17: fclk2
  47. 18: fclk3
  48. 19: can0
  49. 20: can1
  50. 21: sdio0
  51. 22: sdio1
  52. 23: uart0
  53. 24: uart1
  54. 25: spi0
  55. 26: spi1
  56. 27: dma
  57. 28: usb0_aper
  58. 29: usb1_aper
  59. 30: gem0_aper
  60. 31: gem1_aper
  61. 32: sdio0_aper
  62. 33: sdio1_aper
  63. 34: spi0_aper
  64. 35: spi1_aper
  65. 36: can0_aper
  66. 37: can1_aper
  67. 38: i2c0_aper
  68. 39: i2c1_aper
  69. 40: uart0_aper
  70. 41: uart1_aper
  71. 42: gpio_aper
  72. 43: lqspi_aper
  73. 44: smc_aper
  74. 45: swdt
  75. 46: dbg_trc
  76. 47: dbg_apb
  77. Example:
  78. clkc: clkc {
  79. #clock-cells = <1>;
  80. compatible = "xlnx,ps7-clkc";
  81. ps-clk-frequency = <33333333>;
  82. clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x",
  83. "cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x",
  84. "dci", "lqspi", "smc", "pcap", "gem0", "gem1",
  85. "fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1",
  86. "sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1",
  87. "dma", "usb0_aper", "usb1_aper", "gem0_aper",
  88. "gem1_aper", "sdio0_aper", "sdio1_aper",
  89. "spi0_aper", "spi1_aper", "can0_aper", "can1_aper",
  90. "i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper",
  91. "gpio_aper", "lqspi_aper", "smc_aper", "swdt",
  92. "dbg_trc", "dbg_apb";
  93. # optional props
  94. clocks = <&clkc 16>, <&clk_foo>;
  95. clock-names = "gem1_emio_clk", "can_mio_clk_23";
  96. };
  97. == PLLs ==
  98. Used to describe the ARM_PLL, DDR_PLL, and IO_PLL.
  99. Required properties:
  100. - #clock-cells : shall be 0 (only one clock is output from this node)
  101. - compatible : "xlnx,zynq-pll"
  102. - reg : pair of u32 values, which are the address offsets within the SLCR
  103. of the relevant PLL_CTRL register and PLL_CFG register respectively
  104. - clocks : phandle for parent clock. should be the phandle for ps_clk
  105. Optional properties:
  106. - clock-output-names : name of the output clock
  107. Example:
  108. armpll: armpll {
  109. #clock-cells = <0>;
  110. compatible = "xlnx,zynq-pll";
  111. clocks = <&ps_clk>;
  112. reg = <0x100 0x110>;
  113. clock-output-names = "armpll";
  114. };
  115. == Peripheral clocks ==
  116. Describes clock node for the SDIO, SMC, SPI, QSPI, and UART clocks.
  117. Required properties:
  118. - #clock-cells : shall be 1
  119. - compatible : "xlnx,zynq-periph-clock"
  120. - reg : a single u32 value, describing the offset within the SLCR where
  121. the CLK_CTRL register is found for this peripheral
  122. - clocks : phandle for parent clocks. should hold phandles for
  123. the IO_PLL, ARM_PLL, and DDR_PLL in order
  124. - clock-output-names : names of the output clock(s). For peripherals that have
  125. two output clocks (for example, the UART), two clocks
  126. should be listed.
  127. Example:
  128. uart_clk: uart_clk {
  129. #clock-cells = <1>;
  130. compatible = "xlnx,zynq-periph-clock";
  131. clocks = <&iopll &armpll &ddrpll>;
  132. reg = <0x154>;
  133. clock-output-names = "uart0_ref_clk",
  134. "uart1_ref_clk";
  135. };