cp110-system-controller.txt 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. Marvell Armada CP110 System Controller
  2. ======================================
  3. The CP110 is one of the two core HW blocks of the Marvell Armada 7K/8K
  4. SoCs. It contains system controllers, which provide several registers
  5. giving access to numerous features: clocks, pin-muxing and many other
  6. SoC configuration items. This DT binding allows to describe these
  7. system controllers.
  8. For the top level node:
  9. - compatible: must be: "syscon", "simple-mfd";
  10. - reg: register area of the CP110 system controller
  11. SYSTEM CONTROLLER 0
  12. ===================
  13. Clocks:
  14. -------
  15. The Device Tree node representing this System Controller 0 provides a
  16. number of clocks:
  17. - a set of core clocks
  18. - a set of gatable clocks
  19. Those clocks can be referenced by other Device Tree nodes using two
  20. cells:
  21. - The first cell must be 0 or 1. 0 for the core clocks and 1 for the
  22. gatable clocks.
  23. - The second cell identifies the particular core clock or gatable
  24. clocks.
  25. The following clocks are available:
  26. - Core clocks
  27. - 0 0 APLL
  28. - 0 1 PPv2 core
  29. - 0 2 EIP
  30. - 0 3 Core
  31. - 0 4 NAND core
  32. - 0 5 SDIO core
  33. - Gatable clocks
  34. - 1 0 Audio
  35. - 1 1 Comm Unit
  36. - 1 2 NAND
  37. - 1 3 PPv2
  38. - 1 4 SDIO
  39. - 1 5 MG Domain
  40. - 1 6 MG Core
  41. - 1 7 XOR1
  42. - 1 8 XOR0
  43. - 1 9 GOP DP
  44. - 1 11 PCIe x1 0
  45. - 1 12 PCIe x1 1
  46. - 1 13 PCIe x4
  47. - 1 14 PCIe / XOR
  48. - 1 15 SATA
  49. - 1 16 SATA USB
  50. - 1 17 Main
  51. - 1 18 SD/MMC/GOP
  52. - 1 21 Slow IO (SPI, NOR, BootROM, I2C, UART)
  53. - 1 22 USB3H0
  54. - 1 23 USB3H1
  55. - 1 24 USB3 Device
  56. - 1 25 EIP150
  57. - 1 26 EIP197
  58. Required properties:
  59. - compatible: must be:
  60. "marvell,cp110-clock"
  61. - #clock-cells: must be set to 2
  62. Pinctrl:
  63. --------
  64. For common binding part and usage, refer to the file
  65. Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt.
  66. Required properties:
  67. - compatible: "marvell,armada-7k-pinctrl",
  68. "marvell,armada-8k-cpm-pinctrl" or "marvell,armada-8k-cps-pinctrl"
  69. depending on the specific variant of the SoC being used.
  70. Available mpp pins/groups and functions:
  71. Note: brackets (x) are not part of the mpp name for marvell,function and given
  72. only for more detailed description in this document.
  73. name pins functions
  74. ================================================================================
  75. mpp0 0 gpio, dev(ale1), au(i2smclk), ge0(rxd3), tdm(pclk), ptp(pulse), mss_i2c(sda), uart0(rxd), sata0(present_act), ge(mdio)
  76. mpp1 1 gpio, dev(ale0), au(i2sdo_spdifo), ge0(rxd2), tdm(drx), ptp(clk), mss_i2c(sck), uart0(txd), sata1(present_act), ge(mdc)
  77. mpp2 2 gpio, dev(ad15), au(i2sextclk), ge0(rxd1), tdm(dtx), mss_uart(rxd), ptp(pclk_out), i2c1(sck), uart1(rxd), sata0(present_act), xg(mdc)
  78. mpp3 3 gpio, dev(ad14), au(i2slrclk), ge0(rxd0), tdm(fsync), mss_uart(txd), pcie(rstoutn), i2c1(sda), uart1(txd), sata1(present_act), xg(mdio)
  79. mpp4 4 gpio, dev(ad13), au(i2sbclk), ge0(rxctl), tdm(rstn), mss_uart(rxd), uart1(cts), pcie0(clkreq), uart3(rxd), ge(mdc)
  80. mpp5 5 gpio, dev(ad12), au(i2sdi), ge0(rxclk), tdm(intn), mss_uart(txd), uart1(rts), pcie1(clkreq), uart3(txd), ge(mdio)
  81. mpp6 6 gpio, dev(ad11), ge0(txd3), spi0(csn2), au(i2sextclk), sata1(present_act), pcie2(clkreq), uart0(rxd), ptp(pulse)
  82. mpp7 7 gpio, dev(ad10), ge0(txd2), spi0(csn1), spi1(csn1), sata0(present_act), led(data), uart0(txd), ptp(clk)
  83. mpp8 8 gpio, dev(ad9), ge0(txd1), spi0(csn0), spi1(csn0), uart0(cts), led(stb), uart2(rxd), ptp(pclk_out), synce1(clk)
  84. mpp9 9 gpio, dev(ad8), ge0(txd0), spi0(mosi), spi1(mosi), pcie(rstoutn), synce2(clk)
  85. mpp10 10 gpio, dev(readyn), ge0(txctl), spi0(miso), spi1(miso), uart0(cts), sata1(present_act)
  86. mpp11 11 gpio, dev(wen1), ge0(txclkout), spi0(clk), spi1(clk), uart0(rts), led(clk), uart2(txd), sata0(present_act)
  87. mpp12 12 gpio, dev(clk_out), nf(rbn1), spi1(csn1), ge0(rxclk)
  88. mpp13 13 gpio, dev(burstn), nf(rbn0), spi1(miso), ge0(rxctl), mss_spi(miso)
  89. mpp14 14 gpio, dev(bootcsn), dev(csn0), spi1(csn0), spi0(csn3), au(i2sextclk), spi0(miso), sata0(present_act), mss_spi(csn)
  90. mpp15 15 gpio, dev(ad7), spi1(mosi), spi0(mosi), mss_spi(mosi), ptp(pulse_cp2cp)
  91. mpp16 16 gpio, dev(ad6), spi1(clk), mss_spi(clk)
  92. mpp17 17 gpio, dev(ad5), ge0(txd3)
  93. mpp18 18 gpio, dev(ad4), ge0(txd2), ptp(clk_cp2cp)
  94. mpp19 19 gpio, dev(ad3), ge0(txd1), wakeup(out_cp2cp)
  95. mpp20 20 gpio, dev(ad2), ge0(txd0)
  96. mpp21 21 gpio, dev(ad1), ge0(txctl), sei(in_cp2cp)
  97. mpp22 22 gpio, dev(ad0), ge0(txclkout), wakeup(in_cp2cp)
  98. mpp23 23 gpio, dev(a1), au(i2smclk), link(rd_in_cp2cp)
  99. mpp24 24 gpio, dev(a0), au(i2slrclk)
  100. mpp25 25 gpio, dev(oen), au(i2sdo_spdifo)
  101. mpp26 26 gpio, dev(wen0), au(i2sbclk)
  102. mpp27 27 gpio, dev(csn0), spi1(miso), mss_gpio4, ge0(rxd3), spi0(csn4), ge(mdio), sata0(present_act), uart0(rts), rei(in_cp2cp)
  103. mpp28 28 gpio, dev(csn1), spi1(csn0), mss_gpio5, ge0(rxd2), spi0(csn5), pcie2(clkreq), ptp(pulse), ge(mdc), sata1(present_act), uart0(cts), led(data)
  104. mpp29 29 gpio, dev(csn2), spi1(mosi), mss_gpio6, ge0(rxd1), spi0(csn6), pcie1(clkreq), ptp(clk), mss_i2c(sda), sata0(present_act), uart0(rxd), led(stb)
  105. mpp30 30 gpio, dev(csn3), spi1(clk), mss_gpio7, ge0(rxd0), spi0(csn7), pcie0(clkreq), ptp(pclk_out), mss_i2c(sck), sata1(present_act), uart0(txd), led(clk)
  106. mpp31 31 gpio, dev(a2), mss_gpio4, pcie(rstoutn), ge(mdc)
  107. mpp32 32 gpio, mii(col), mii(txerr), mss_spi(miso), tdm(drx), au(i2sextclk), au(i2sdi), ge(mdio), sdio(v18_en), pcie1(clkreq), mss_gpio0
  108. mpp33 33 gpio, mii(txclk), sdio(pwr10), mss_spi(csn), tdm(fsync), au(i2smclk), sdio(bus_pwr), xg(mdio), pcie2(clkreq), mss_gpio1
  109. mpp34 34 gpio, mii(rxerr), sdio(pwr11), mss_spi(mosi), tdm(dtx), au(i2slrclk), sdio(wr_protect), ge(mdc), pcie0(clkreq), mss_gpio2
  110. mpp35 35 gpio, sata1(present_act), i2c1(sda), mss_spi(clk), tdm(pclk), au(i2sdo_spdifo), sdio(card_detect), xg(mdio), ge(mdio), pcie(rstoutn), mss_gpio3
  111. mpp36 36 gpio, synce2(clk), i2c1(sck), ptp(clk), synce1(clk), au(i2sbclk), sata0(present_act), xg(mdc), ge(mdc), pcie2(clkreq), mss_gpio5
  112. mpp37 37 gpio, uart2(rxd), i2c0(sck), ptp(pclk_out), tdm(intn), mss_i2c(sck), sata1(present_act), ge(mdc), xg(mdc), pcie1(clkreq), mss_gpio6, link(rd_out_cp2cp)
  113. mpp38 38 gpio, uart2(txd), i2c0(sda), ptp(pulse), tdm(rstn), mss_i2c(sda), sata0(present_act), ge(mdio), xg(mdio), au(i2sextclk), mss_gpio7, ptp(pulse_cp2cp)
  114. mpp39 39 gpio, sdio(wr_protect), au(i2sbclk), ptp(clk), spi0(csn1), sata1(present_act), mss_gpio0
  115. mpp40 40 gpio, sdio(pwr11), synce1(clk), mss_i2c(sda), au(i2sdo_spdifo), ptp(pclk_out), spi0(clk), uart1(txd), ge(mdio), sata0(present_act), mss_gpio1
  116. mpp41 41 gpio, sdio(pwr10), sdio(bus_pwr), mss_i2c(sck), au(i2slrclk), ptp(pulse), spi0(mosi), uart1(rxd), ge(mdc), sata1(present_act), mss_gpio2, rei(out_cp2cp)
  117. mpp42 42 gpio, sdio(v18_en), sdio(wr_protect), synce2(clk), au(i2smclk), mss_uart(txd), spi0(miso), uart1(cts), xg(mdc), sata0(present_act), mss_gpio4
  118. mpp43 43 gpio, sdio(card_detect), synce1(clk), au(i2sextclk), mss_uart(rxd), spi0(csn0), uart1(rts), xg(mdio), sata1(present_act), mss_gpio5, wakeup(out_cp2cp)
  119. mpp44 44 gpio, ge1(txd2), uart0(rts), ptp(clk_cp2cp)
  120. mpp45 45 gpio, ge1(txd3), uart0(txd), pcie(rstoutn)
  121. mpp46 46 gpio, ge1(txd1), uart1(rts)
  122. mpp47 47 gpio, ge1(txd0), spi1(clk), uart1(txd), ge(mdc)
  123. mpp48 48 gpio, ge1(txctl_txen), spi1(mosi), xg(mdc), wakeup(in_cp2cp)
  124. mpp49 49 gpio, ge1(txclkout), mii(crs), spi1(miso), uart1(rxd), ge(mdio), pcie0(clkreq), sdio(v18_en), sei(out_cp2cp)
  125. mpp50 50 gpio, ge1(rxclk), mss_i2c(sda), spi1(csn0), uart2(txd), uart0(rxd), xg(mdio), sdio(pwr11)
  126. mpp51 51 gpio, ge1(rxd0), mss_i2c(sck), spi1(csn1), uart2(rxd), uart0(cts), sdio(pwr10)
  127. mpp52 52 gpio, ge1(rxd1), synce1(clk), synce2(clk), spi1(csn2), uart1(cts), led(clk), pcie(rstoutn), pcie0(clkreq)
  128. mpp53 53 gpio, ge1(rxd2), ptp(clk), spi1(csn3), uart1(rxd), led(stb), sdio(led)
  129. mpp54 54 gpio, ge1(rxd3), synce2(clk), ptp(pclk_out), synce1(clk), led(data), sdio(hw_rst), sdio(wr_protect)
  130. mpp55 55 gpio, ge1(rxctl_rxdv), ptp(pulse), sdio(led), sdio(card_detect)
  131. mpp56 56 gpio, tdm(drx), au(i2sdo_spdifo), spi0(clk), uart1(rxd), sata1(present_act), sdio(clk)
  132. mpp57 57 gpio, mss_i2c(sda), ptp(pclk_out), tdm(intn), au(i2sbclk), spi0(mosi), uart1(txd), sata0(present_act), sdio(cmd)
  133. mpp58 58 gpio, mss_i2c(sck), ptp(clk), tdm(rstn), au(i2sdi), spi0(miso), uart1(cts), led(clk), sdio(d0)
  134. mpp59 59 gpio, mss_gpio7, synce2(clk), tdm(fsync), au(i2slrclk), spi0(csn0), uart0(cts), led(stb), uart1(txd), sdio(d1)
  135. mpp60 60 gpio, mss_gpio6, ptp(pulse), tdm(dtx), au(i2smclk), spi0(csn1), uart0(rts), led(data), uart1(rxd), sdio(d2)
  136. mpp61 61 gpio, mss_gpio5, ptp(clk), tdm(pclk), au(i2sextclk), spi0(csn2), uart0(txd), uart2(txd), sata1(present_act), ge(mdio), sdio(d3)
  137. mpp62 62 gpio, mss_gpio4, synce1(clk), ptp(pclk_out), sata1(present_act), spi0(csn3), uart0(rxd), uart2(rxd), sata0(present_act), ge(mdc)
  138. GPIO:
  139. -----
  140. For common binding part and usage, refer to
  141. Documentation/devicetree/bindings/gpio/gpio-mvebu.txt.
  142. Required properties:
  143. - compatible: "marvell,armada-8k-gpio"
  144. - offset: offset address inside the syscon block
  145. Example:
  146. CP110_LABEL(syscon0): system-controller@440000 {
  147. compatible = "syscon", "simple-mfd";
  148. reg = <0x440000 0x1000>;
  149. CP110_LABEL(clk): clock {
  150. compatible = "marvell,cp110-clock";
  151. #clock-cells = <2>;
  152. };
  153. CP110_LABEL(pinctrl): pinctrl {
  154. compatible = "marvell,armada-8k-cpm-pinctrl";
  155. };
  156. CP110_LABEL(gpio1): gpio@100 {
  157. compatible = "marvell,armada-8k-gpio";
  158. offset = <0x100>;
  159. ngpios = <32>;
  160. gpio-controller;
  161. #gpio-cells = <2>;
  162. gpio-ranges = <&CP110_LABEL(pinctrl) 0 0 32>;
  163. };
  164. };
  165. SYSTEM CONTROLLER 1
  166. ===================
  167. Thermal:
  168. --------
  169. The thermal IP can probe the temperature all around the processor. It
  170. may feature several channels, each of them wired to one sensor.
  171. For common binding part and usage, refer to
  172. Documentation/devicetree/bindings/thermal/thermal.txt
  173. Required properties:
  174. - compatible: must be one of:
  175. * marvell,armada-cp110-thermal
  176. - reg: register range associated with the thermal functions.
  177. Optional properties:
  178. - #thermal-sensor-cells: shall be <1> when thermal-zones subnodes refer
  179. to this IP and represents the channel ID. There is one sensor per
  180. channel. O refers to the thermal IP internal channel.
  181. Example:
  182. CP110_LABEL(syscon1): system-controller@6f8000 {
  183. compatible = "syscon", "simple-mfd";
  184. reg = <0x6f8000 0x1000>;
  185. CP110_LABEL(thermal): thermal-sensor@70 {
  186. compatible = "marvell,armada-cp110-thermal";
  187. reg = <0x70 0x10>;
  188. #thermal-sensor-cells = <1>;
  189. };
  190. };