235 lines · plain
1Marvell Armada CP110 System Controller2======================================3 4The CP110 is one of the two core HW blocks of the Marvell Armada 7K/8K5SoCs. It contains system controllers, which provide several registers6giving access to numerous features: clocks, pin-muxing and many other7SoC configuration items. This DT binding allows to describe these8system controllers.9 10For the top level node:11 - compatible: must be: "syscon", "simple-mfd";12 - reg: register area of the CP110 system controller13 14SYSTEM CONTROLLER 015===================16 17Clocks:18-------19 20The Device Tree node representing this System Controller 0 provides a21number of clocks:22 23 - a set of core clocks24 - a set of gateable clocks25 26Those clocks can be referenced by other Device Tree nodes using two27cells:28 - The first cell must be 0 or 1. 0 for the core clocks and 1 for the29 gateable clocks.30 - The second cell identifies the particular core clock or gateable31 clocks.32 33The following clocks are available:34 - Core clocks35 - 0 0 APLL36 - 0 1 PPv2 core37 - 0 2 EIP38 - 0 3 Core39 - 0 4 NAND core40 - 0 5 SDIO core41 - Gateable clocks42 - 1 0 Audio43 - 1 1 Comm Unit44 - 1 2 NAND45 - 1 3 PPv246 - 1 4 SDIO47 - 1 5 MG Domain48 - 1 6 MG Core49 - 1 7 XOR150 - 1 8 XOR051 - 1 9 GOP DP52 - 1 11 PCIe x1 053 - 1 12 PCIe x1 154 - 1 13 PCIe x455 - 1 14 PCIe / XOR56 - 1 15 SATA57 - 1 16 SATA USB58 - 1 17 Main59 - 1 18 SD/MMC/GOP60 - 1 21 Slow IO (SPI, NOR, BootROM, I2C, UART)61 - 1 22 USB3H062 - 1 23 USB3H163 - 1 24 USB3 Device64 - 1 25 EIP15065 - 1 26 EIP19766 67Required properties:68 69 - compatible: must be:70 "marvell,cp110-clock"71 - #clock-cells: must be set to 272 73Pinctrl:74--------75 76For common binding part and usage, refer to the file77Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt.78 79Required properties:80 81- compatible: "marvell,armada-7k-pinctrl", "marvell,armada-8k-cpm-pinctrl",82 "marvell,armada-8k-cps-pinctrl" or "marvell,cp115-standalone-pinctrl"83 depending on the specific variant of the SoC being used.84 85Available mpp pins/groups and functions:86Note: brackets (x) are not part of the mpp name for marvell,function and given87only for more detailed description in this document.88 89name pins functions90================================================================================91mpp0 0 gpio, dev(ale1), au(i2smclk), ge0(rxd3), tdm(pclk), ptp(pulse), mss_i2c(sda), uart0(rxd), sata0(present_act), ge(mdio)92mpp1 1 gpio, dev(ale0), au(i2sdo_spdifo), ge0(rxd2), tdm(drx), ptp(clk), mss_i2c(sck), uart0(txd), sata1(present_act), ge(mdc)93mpp2 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)94mpp3 3 gpio, dev(ad14), au(i2slrclk), ge0(rxd0), tdm(fsync), mss_uart(txd), pcie(rstoutn), i2c1(sda), uart1(txd), sata1(present_act), xg(mdio)95mpp4 4 gpio, dev(ad13), au(i2sbclk), ge0(rxctl), tdm(rstn), mss_uart(rxd), uart1(cts), pcie0(clkreq), uart3(rxd), ge(mdc)96mpp5 5 gpio, dev(ad12), au(i2sdi), ge0(rxclk), tdm(intn), mss_uart(txd), uart1(rts), pcie1(clkreq), uart3(txd), ge(mdio)97mpp6 6 gpio, dev(ad11), ge0(txd3), spi0(csn2), au(i2sextclk), sata1(present_act), pcie2(clkreq), uart0(rxd), ptp(pulse)98mpp7 7 gpio, dev(ad10), ge0(txd2), spi0(csn1), spi1(csn1), sata0(present_act), led(data), uart0(txd), ptp(clk)99mpp8 8 gpio, dev(ad9), ge0(txd1), spi0(csn0), spi1(csn0), uart0(cts), led(stb), uart2(rxd), ptp(pclk_out), synce1(clk)100mpp9 9 gpio, dev(ad8), ge0(txd0), spi0(mosi), spi1(mosi), pcie(rstoutn), synce2(clk)101mpp10 10 gpio, dev(readyn), ge0(txctl), spi0(miso), spi1(miso), uart0(cts), sata1(present_act)102mpp11 11 gpio, dev(wen1), ge0(txclkout), spi0(clk), spi1(clk), uart0(rts), led(clk), uart2(txd), sata0(present_act)103mpp12 12 gpio, dev(clk_out), nf(rbn1), spi1(csn1), ge0(rxclk)104mpp13 13 gpio, dev(burstn), nf(rbn0), spi1(miso), ge0(rxctl), mss_spi(miso)105mpp14 14 gpio, dev(bootcsn), dev(csn0), spi1(csn0), spi0(csn3), au(i2sextclk), spi0(miso), sata0(present_act), mss_spi(csn)106mpp15 15 gpio, dev(ad7), spi1(mosi), spi0(mosi), mss_spi(mosi), ptp(pulse_cp2cp)107mpp16 16 gpio, dev(ad6), spi1(clk), mss_spi(clk)108mpp17 17 gpio, dev(ad5), ge0(txd3)109mpp18 18 gpio, dev(ad4), ge0(txd2), ptp(clk_cp2cp)110mpp19 19 gpio, dev(ad3), ge0(txd1), wakeup(out_cp2cp)111mpp20 20 gpio, dev(ad2), ge0(txd0)112mpp21 21 gpio, dev(ad1), ge0(txctl), sei(in_cp2cp)113mpp22 22 gpio, dev(ad0), ge0(txclkout), wakeup(in_cp2cp)114mpp23 23 gpio, dev(a1), au(i2smclk), link(rd_in_cp2cp)115mpp24 24 gpio, dev(a0), au(i2slrclk)116mpp25 25 gpio, dev(oen), au(i2sdo_spdifo)117mpp26 26 gpio, dev(wen0), au(i2sbclk)118mpp27 27 gpio, dev(csn0), spi1(miso), mss_gpio4, ge0(rxd3), spi0(csn4), ge(mdio), sata0(present_act), uart0(rts), rei(in_cp2cp)119mpp28 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)120mpp29 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)121mpp30 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)122mpp31 31 gpio, dev(a2), mss_gpio4, pcie(rstoutn), ge(mdc)123mpp32 32 gpio, mii(col), mii(txerr), mss_spi(miso), tdm(drx), au(i2sextclk), au(i2sdi), ge(mdio), sdio(v18_en), pcie1(clkreq), mss_gpio0124mpp33 33 gpio, mii(txclk), sdio(pwr10), mss_spi(csn), tdm(fsync), au(i2smclk), sdio(bus_pwr), xg(mdio), pcie2(clkreq), mss_gpio1125mpp34 34 gpio, mii(rxerr), sdio(pwr11), mss_spi(mosi), tdm(dtx), au(i2slrclk), sdio(wr_protect), ge(mdc), pcie0(clkreq), mss_gpio2126mpp35 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_gpio3127mpp36 36 gpio, synce2(clk), i2c1(sck), ptp(clk), synce1(clk), au(i2sbclk), sata0(present_act), xg(mdc), ge(mdc), pcie2(clkreq), mss_gpio5128mpp37 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)129mpp38 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)130mpp39 39 gpio, sdio(wr_protect), au(i2sbclk), ptp(clk), spi0(csn1), sata1(present_act), mss_gpio0131mpp40 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_gpio1132mpp41 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)133mpp42 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_gpio4134mpp43 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)135mpp44 44 gpio, ge1(txd2), uart0(rts), ptp(clk_cp2cp)136mpp45 45 gpio, ge1(txd3), uart0(txd), pcie(rstoutn)137mpp46 46 gpio, ge1(txd1), uart1(rts)138mpp47 47 gpio, ge1(txd0), spi1(clk), uart1(txd), ge(mdc)139mpp48 48 gpio, ge1(txctl_txen), spi1(mosi), xg(mdc), wakeup(in_cp2cp)140mpp49 49 gpio, ge1(txclkout), mii(crs), spi1(miso), uart1(rxd), ge(mdio), pcie0(clkreq), sdio(v18_en), sei(out_cp2cp)141mpp50 50 gpio, ge1(rxclk), mss_i2c(sda), spi1(csn0), uart2(txd), uart0(rxd), xg(mdio), sdio(pwr11)142mpp51 51 gpio, ge1(rxd0), mss_i2c(sck), spi1(csn1), uart2(rxd), uart0(cts), sdio(pwr10)143mpp52 52 gpio, ge1(rxd1), synce1(clk), synce2(clk), spi1(csn2), uart1(cts), led(clk), pcie(rstoutn), pcie0(clkreq)144mpp53 53 gpio, ge1(rxd2), ptp(clk), spi1(csn3), uart1(rxd), led(stb), sdio(led)145mpp54 54 gpio, ge1(rxd3), synce2(clk), ptp(pclk_out), synce1(clk), led(data), sdio(hw_rst), sdio_wp(wr_protect)146mpp55 55 gpio, ge1(rxctl_rxdv), ptp(pulse), sdio(led), sdio_cd(card_detect)147mpp56 56 gpio, tdm(drx), au(i2sdo_spdifo), spi0(clk), uart1(rxd), sata1(present_act), sdio(clk)148mpp57 57 gpio, mss_i2c(sda), ptp(pclk_out), tdm(intn), au(i2sbclk), spi0(mosi), uart1(txd), sata0(present_act), sdio(cmd)149mpp58 58 gpio, mss_i2c(sck), ptp(clk), tdm(rstn), au(i2sdi), spi0(miso), uart1(cts), led(clk), sdio(d0)150mpp59 59 gpio, mss_gpio7, synce2(clk), tdm(fsync), au(i2slrclk), spi0(csn0), uart0(cts), led(stb), uart1(txd), sdio(d1)151mpp60 60 gpio, mss_gpio6, ptp(pulse), tdm(dtx), au(i2smclk), spi0(csn1), uart0(rts), led(data), uart1(rxd), sdio(d2)152mpp61 61 gpio, mss_gpio5, ptp(clk), tdm(pclk), au(i2sextclk), spi0(csn2), uart0(txd), uart2(txd), sata1(present_act), ge(mdio), sdio(d3)153mpp62 62 gpio, mss_gpio4, synce1(clk), ptp(pclk_out), sata1(present_act), spi0(csn3), uart0(rxd), uart2(rxd), sata0(present_act), ge(mdc)154 155GPIO:156-----157 158For common binding part and usage, refer to159Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml.160 161Required properties:162 163- compatible: "marvell,armada-8k-gpio"164 165- offset: offset address inside the syscon block166 167Example:168 169CP110_LABEL(syscon0): system-controller@440000 {170 compatible = "syscon", "simple-mfd";171 reg = <0x440000 0x1000>;172 173 CP110_LABEL(clk): clock {174 compatible = "marvell,cp110-clock";175 #clock-cells = <2>;176 };177 178 CP110_LABEL(pinctrl): pinctrl {179 compatible = "marvell,armada-8k-cpm-pinctrl";180 };181 182 CP110_LABEL(gpio1): gpio@100 {183 compatible = "marvell,armada-8k-gpio";184 offset = <0x100>;185 ngpios = <32>;186 gpio-controller;187 #gpio-cells = <2>;188 gpio-ranges = <&CP110_LABEL(pinctrl) 0 0 32>;189 };190 191};192 193SYSTEM CONTROLLER 1194===================195 196Thermal:197--------198 199The thermal IP can probe the temperature all around the processor. It200may feature several channels, each of them wired to one sensor.201 202It is possible to setup an overheat interrupt by giving at least one203critical point to any subnode of the thermal-zone node.204 205For common binding part and usage, refer to206Documentation/devicetree/bindings/thermal/thermal*.yaml207 208Required properties:209- compatible: must be one of:210 * marvell,armada-cp110-thermal211- reg: register range associated with the thermal functions.212 213Optional properties:214- interrupts-extended: overheat interrupt handle. Should point to215 a line of the ICU-SEI irqchip (116 is what is usually used by the216 firmware). The ICU-SEI will redirect towards interrupt line #37 of the217 AP SEI which is shared across all CPs.218 See interrupt-controller/interrupts.txt219- #thermal-sensor-cells: shall be <1> when thermal-zones subnodes refer220 to this IP and represents the channel ID. There is one sensor per221 channel. O refers to the thermal IP internal channel.222 223Example:224CP110_LABEL(syscon1): system-controller@6f8000 {225 compatible = "syscon", "simple-mfd";226 reg = <0x6f8000 0x1000>;227 228 CP110_LABEL(thermal): thermal-sensor@70 {229 compatible = "marvell,armada-cp110-thermal";230 reg = <0x70 0x10>;231 interrupts-extended = <&CP110_LABEL(icu_sei) 116 IRQ_TYPE_LEVEL_HIGH>;232 #thermal-sensor-cells = <1>;233 };234};235