1ab0156c5SMiquel RaynalMarvell Armada CP110 System Controller 2ab0156c5SMiquel Raynal====================================== 34aa54969SMiquel Raynal 44aa54969SMiquel RaynalThe CP110 is one of the two core HW blocks of the Marvell Armada 7K/8K 5ab0156c5SMiquel RaynalSoCs. It contains system controllers, which provide several registers 6ab0156c5SMiquel Raynalgiving access to numerous features: clocks, pin-muxing and many other 7ab0156c5SMiquel RaynalSoC configuration items. This DT binding allows to describe these 8ab0156c5SMiquel Raynalsystem controllers. 94aa54969SMiquel Raynal 104aa54969SMiquel RaynalFor the top level node: 114aa54969SMiquel Raynal - compatible: must be: "syscon", "simple-mfd"; 12ab0156c5SMiquel Raynal - reg: register area of the CP110 system controller 134aa54969SMiquel Raynal 14c3ab5dffSMiquel RaynalSYSTEM CONTROLLER 0 15c3ab5dffSMiquel Raynal=================== 16c3ab5dffSMiquel Raynal 174aa54969SMiquel RaynalClocks: 184aa54969SMiquel Raynal------- 194aa54969SMiquel Raynal 204aa54969SMiquel RaynalThe Device Tree node representing this System Controller 0 provides a 214aa54969SMiquel Raynalnumber of clocks: 224aa54969SMiquel Raynal 234aa54969SMiquel Raynal - a set of core clocks 24*47aab533SBjorn Helgaas - a set of gateable clocks 254aa54969SMiquel Raynal 264aa54969SMiquel RaynalThose clocks can be referenced by other Device Tree nodes using two 274aa54969SMiquel Raynalcells: 284aa54969SMiquel Raynal - The first cell must be 0 or 1. 0 for the core clocks and 1 for the 29*47aab533SBjorn Helgaas gateable clocks. 30*47aab533SBjorn Helgaas - The second cell identifies the particular core clock or gateable 314aa54969SMiquel Raynal clocks. 324aa54969SMiquel Raynal 334aa54969SMiquel RaynalThe following clocks are available: 344aa54969SMiquel Raynal - Core clocks 354aa54969SMiquel Raynal - 0 0 APLL 364aa54969SMiquel Raynal - 0 1 PPv2 core 374aa54969SMiquel Raynal - 0 2 EIP 384aa54969SMiquel Raynal - 0 3 Core 394aa54969SMiquel Raynal - 0 4 NAND core 404aa54969SMiquel Raynal - 0 5 SDIO core 41*47aab533SBjorn Helgaas - Gateable clocks 424aa54969SMiquel Raynal - 1 0 Audio 434aa54969SMiquel Raynal - 1 1 Comm Unit 444aa54969SMiquel Raynal - 1 2 NAND 454aa54969SMiquel Raynal - 1 3 PPv2 464aa54969SMiquel Raynal - 1 4 SDIO 474aa54969SMiquel Raynal - 1 5 MG Domain 484aa54969SMiquel Raynal - 1 6 MG Core 494aa54969SMiquel Raynal - 1 7 XOR1 504aa54969SMiquel Raynal - 1 8 XOR0 514aa54969SMiquel Raynal - 1 9 GOP DP 524aa54969SMiquel Raynal - 1 11 PCIe x1 0 534aa54969SMiquel Raynal - 1 12 PCIe x1 1 544aa54969SMiquel Raynal - 1 13 PCIe x4 554aa54969SMiquel Raynal - 1 14 PCIe / XOR 564aa54969SMiquel Raynal - 1 15 SATA 574aa54969SMiquel Raynal - 1 16 SATA USB 584aa54969SMiquel Raynal - 1 17 Main 594aa54969SMiquel Raynal - 1 18 SD/MMC/GOP 604aa54969SMiquel Raynal - 1 21 Slow IO (SPI, NOR, BootROM, I2C, UART) 614aa54969SMiquel Raynal - 1 22 USB3H0 624aa54969SMiquel Raynal - 1 23 USB3H1 634aa54969SMiquel Raynal - 1 24 USB3 Device 644aa54969SMiquel Raynal - 1 25 EIP150 654aa54969SMiquel Raynal - 1 26 EIP197 664aa54969SMiquel Raynal 674aa54969SMiquel RaynalRequired properties: 684aa54969SMiquel Raynal 694aa54969SMiquel Raynal - compatible: must be: 704aa54969SMiquel Raynal "marvell,cp110-clock" 714aa54969SMiquel Raynal - #clock-cells: must be set to 2 724aa54969SMiquel Raynal 734aa54969SMiquel RaynalPinctrl: 744aa54969SMiquel Raynal-------- 754aa54969SMiquel Raynal 764aa54969SMiquel RaynalFor common binding part and usage, refer to the file 774aa54969SMiquel RaynalDocumentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt. 784aa54969SMiquel Raynal 794aa54969SMiquel RaynalRequired properties: 804aa54969SMiquel Raynal 812dcf5d9aSGrzegorz Jaszczyk- compatible: "marvell,armada-7k-pinctrl", "marvell,armada-8k-cpm-pinctrl", 822dcf5d9aSGrzegorz Jaszczyk "marvell,armada-8k-cps-pinctrl" or "marvell,cp115-standalone-pinctrl" 834aa54969SMiquel Raynal depending on the specific variant of the SoC being used. 844aa54969SMiquel Raynal 854aa54969SMiquel RaynalAvailable mpp pins/groups and functions: 864aa54969SMiquel RaynalNote: brackets (x) are not part of the mpp name for marvell,function and given 874aa54969SMiquel Raynalonly for more detailed description in this document. 884aa54969SMiquel Raynal 894aa54969SMiquel Raynalname pins functions 904aa54969SMiquel Raynal================================================================================ 914aa54969SMiquel Raynalmpp0 0 gpio, dev(ale1), au(i2smclk), ge0(rxd3), tdm(pclk), ptp(pulse), mss_i2c(sda), uart0(rxd), sata0(present_act), ge(mdio) 924aa54969SMiquel Raynalmpp1 1 gpio, dev(ale0), au(i2sdo_spdifo), ge0(rxd2), tdm(drx), ptp(clk), mss_i2c(sck), uart0(txd), sata1(present_act), ge(mdc) 934aa54969SMiquel Raynalmpp2 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) 944aa54969SMiquel Raynalmpp3 3 gpio, dev(ad14), au(i2slrclk), ge0(rxd0), tdm(fsync), mss_uart(txd), pcie(rstoutn), i2c1(sda), uart1(txd), sata1(present_act), xg(mdio) 954aa54969SMiquel Raynalmpp4 4 gpio, dev(ad13), au(i2sbclk), ge0(rxctl), tdm(rstn), mss_uart(rxd), uart1(cts), pcie0(clkreq), uart3(rxd), ge(mdc) 964aa54969SMiquel Raynalmpp5 5 gpio, dev(ad12), au(i2sdi), ge0(rxclk), tdm(intn), mss_uart(txd), uart1(rts), pcie1(clkreq), uart3(txd), ge(mdio) 974aa54969SMiquel Raynalmpp6 6 gpio, dev(ad11), ge0(txd3), spi0(csn2), au(i2sextclk), sata1(present_act), pcie2(clkreq), uart0(rxd), ptp(pulse) 984aa54969SMiquel Raynalmpp7 7 gpio, dev(ad10), ge0(txd2), spi0(csn1), spi1(csn1), sata0(present_act), led(data), uart0(txd), ptp(clk) 994aa54969SMiquel Raynalmpp8 8 gpio, dev(ad9), ge0(txd1), spi0(csn0), spi1(csn0), uart0(cts), led(stb), uart2(rxd), ptp(pclk_out), synce1(clk) 1004aa54969SMiquel Raynalmpp9 9 gpio, dev(ad8), ge0(txd0), spi0(mosi), spi1(mosi), pcie(rstoutn), synce2(clk) 1014aa54969SMiquel Raynalmpp10 10 gpio, dev(readyn), ge0(txctl), spi0(miso), spi1(miso), uart0(cts), sata1(present_act) 1024aa54969SMiquel Raynalmpp11 11 gpio, dev(wen1), ge0(txclkout), spi0(clk), spi1(clk), uart0(rts), led(clk), uart2(txd), sata0(present_act) 1034aa54969SMiquel Raynalmpp12 12 gpio, dev(clk_out), nf(rbn1), spi1(csn1), ge0(rxclk) 1044aa54969SMiquel Raynalmpp13 13 gpio, dev(burstn), nf(rbn0), spi1(miso), ge0(rxctl), mss_spi(miso) 1054aa54969SMiquel Raynalmpp14 14 gpio, dev(bootcsn), dev(csn0), spi1(csn0), spi0(csn3), au(i2sextclk), spi0(miso), sata0(present_act), mss_spi(csn) 1064aa54969SMiquel Raynalmpp15 15 gpio, dev(ad7), spi1(mosi), spi0(mosi), mss_spi(mosi), ptp(pulse_cp2cp) 1074aa54969SMiquel Raynalmpp16 16 gpio, dev(ad6), spi1(clk), mss_spi(clk) 1084aa54969SMiquel Raynalmpp17 17 gpio, dev(ad5), ge0(txd3) 1094aa54969SMiquel Raynalmpp18 18 gpio, dev(ad4), ge0(txd2), ptp(clk_cp2cp) 1104aa54969SMiquel Raynalmpp19 19 gpio, dev(ad3), ge0(txd1), wakeup(out_cp2cp) 1114aa54969SMiquel Raynalmpp20 20 gpio, dev(ad2), ge0(txd0) 1124aa54969SMiquel Raynalmpp21 21 gpio, dev(ad1), ge0(txctl), sei(in_cp2cp) 1134aa54969SMiquel Raynalmpp22 22 gpio, dev(ad0), ge0(txclkout), wakeup(in_cp2cp) 1144aa54969SMiquel Raynalmpp23 23 gpio, dev(a1), au(i2smclk), link(rd_in_cp2cp) 1154aa54969SMiquel Raynalmpp24 24 gpio, dev(a0), au(i2slrclk) 1164aa54969SMiquel Raynalmpp25 25 gpio, dev(oen), au(i2sdo_spdifo) 1174aa54969SMiquel Raynalmpp26 26 gpio, dev(wen0), au(i2sbclk) 1184aa54969SMiquel Raynalmpp27 27 gpio, dev(csn0), spi1(miso), mss_gpio4, ge0(rxd3), spi0(csn4), ge(mdio), sata0(present_act), uart0(rts), rei(in_cp2cp) 1194aa54969SMiquel Raynalmpp28 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) 1204aa54969SMiquel Raynalmpp29 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) 1214aa54969SMiquel Raynalmpp30 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) 1224aa54969SMiquel Raynalmpp31 31 gpio, dev(a2), mss_gpio4, pcie(rstoutn), ge(mdc) 1234aa54969SMiquel Raynalmpp32 32 gpio, mii(col), mii(txerr), mss_spi(miso), tdm(drx), au(i2sextclk), au(i2sdi), ge(mdio), sdio(v18_en), pcie1(clkreq), mss_gpio0 1244aa54969SMiquel Raynalmpp33 33 gpio, mii(txclk), sdio(pwr10), mss_spi(csn), tdm(fsync), au(i2smclk), sdio(bus_pwr), xg(mdio), pcie2(clkreq), mss_gpio1 1254aa54969SMiquel Raynalmpp34 34 gpio, mii(rxerr), sdio(pwr11), mss_spi(mosi), tdm(dtx), au(i2slrclk), sdio(wr_protect), ge(mdc), pcie0(clkreq), mss_gpio2 1264aa54969SMiquel Raynalmpp35 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 1274aa54969SMiquel Raynalmpp36 36 gpio, synce2(clk), i2c1(sck), ptp(clk), synce1(clk), au(i2sbclk), sata0(present_act), xg(mdc), ge(mdc), pcie2(clkreq), mss_gpio5 1284aa54969SMiquel Raynalmpp37 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) 1294aa54969SMiquel Raynalmpp38 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) 1304aa54969SMiquel Raynalmpp39 39 gpio, sdio(wr_protect), au(i2sbclk), ptp(clk), spi0(csn1), sata1(present_act), mss_gpio0 1314aa54969SMiquel Raynalmpp40 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 1324aa54969SMiquel Raynalmpp41 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) 1334aa54969SMiquel Raynalmpp42 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 1344aa54969SMiquel Raynalmpp43 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) 1354aa54969SMiquel Raynalmpp44 44 gpio, ge1(txd2), uart0(rts), ptp(clk_cp2cp) 1364aa54969SMiquel Raynalmpp45 45 gpio, ge1(txd3), uart0(txd), pcie(rstoutn) 1374aa54969SMiquel Raynalmpp46 46 gpio, ge1(txd1), uart1(rts) 1384aa54969SMiquel Raynalmpp47 47 gpio, ge1(txd0), spi1(clk), uart1(txd), ge(mdc) 1394aa54969SMiquel Raynalmpp48 48 gpio, ge1(txctl_txen), spi1(mosi), xg(mdc), wakeup(in_cp2cp) 1404aa54969SMiquel Raynalmpp49 49 gpio, ge1(txclkout), mii(crs), spi1(miso), uart1(rxd), ge(mdio), pcie0(clkreq), sdio(v18_en), sei(out_cp2cp) 1414aa54969SMiquel Raynalmpp50 50 gpio, ge1(rxclk), mss_i2c(sda), spi1(csn0), uart2(txd), uart0(rxd), xg(mdio), sdio(pwr11) 1424aa54969SMiquel Raynalmpp51 51 gpio, ge1(rxd0), mss_i2c(sck), spi1(csn1), uart2(rxd), uart0(cts), sdio(pwr10) 1434aa54969SMiquel Raynalmpp52 52 gpio, ge1(rxd1), synce1(clk), synce2(clk), spi1(csn2), uart1(cts), led(clk), pcie(rstoutn), pcie0(clkreq) 1444aa54969SMiquel Raynalmpp53 53 gpio, ge1(rxd2), ptp(clk), spi1(csn3), uart1(rxd), led(stb), sdio(led) 145b24236f5SKonstantin Porotchkinmpp54 54 gpio, ge1(rxd3), synce2(clk), ptp(pclk_out), synce1(clk), led(data), sdio(hw_rst), sdio_wp(wr_protect) 146b24236f5SKonstantin Porotchkinmpp55 55 gpio, ge1(rxctl_rxdv), ptp(pulse), sdio(led), sdio_cd(card_detect) 1474aa54969SMiquel Raynalmpp56 56 gpio, tdm(drx), au(i2sdo_spdifo), spi0(clk), uart1(rxd), sata1(present_act), sdio(clk) 1484aa54969SMiquel Raynalmpp57 57 gpio, mss_i2c(sda), ptp(pclk_out), tdm(intn), au(i2sbclk), spi0(mosi), uart1(txd), sata0(present_act), sdio(cmd) 1494aa54969SMiquel Raynalmpp58 58 gpio, mss_i2c(sck), ptp(clk), tdm(rstn), au(i2sdi), spi0(miso), uart1(cts), led(clk), sdio(d0) 1504aa54969SMiquel Raynalmpp59 59 gpio, mss_gpio7, synce2(clk), tdm(fsync), au(i2slrclk), spi0(csn0), uart0(cts), led(stb), uart1(txd), sdio(d1) 1514aa54969SMiquel Raynalmpp60 60 gpio, mss_gpio6, ptp(pulse), tdm(dtx), au(i2smclk), spi0(csn1), uart0(rts), led(data), uart1(rxd), sdio(d2) 1524aa54969SMiquel Raynalmpp61 61 gpio, mss_gpio5, ptp(clk), tdm(pclk), au(i2sextclk), spi0(csn2), uart0(txd), uart2(txd), sata1(present_act), ge(mdio), sdio(d3) 1534aa54969SMiquel Raynalmpp62 62 gpio, mss_gpio4, synce1(clk), ptp(pclk_out), sata1(present_act), spi0(csn3), uart0(rxd), uart2(rxd), sata0(present_act), ge(mdc) 1544aa54969SMiquel Raynal 1554aa54969SMiquel RaynalGPIO: 1564aa54969SMiquel Raynal----- 1574aa54969SMiquel Raynal 1584aa54969SMiquel RaynalFor common binding part and usage, refer to 1591282157aSChris PackhamDocumentation/devicetree/bindings/gpio/gpio-mvebu.yaml. 1604aa54969SMiquel Raynal 1614aa54969SMiquel RaynalRequired properties: 1624aa54969SMiquel Raynal 1634aa54969SMiquel Raynal- compatible: "marvell,armada-8k-gpio" 1644aa54969SMiquel Raynal 1654aa54969SMiquel Raynal- offset: offset address inside the syscon block 1664aa54969SMiquel Raynal 1674aa54969SMiquel RaynalExample: 1684aa54969SMiquel Raynal 169e1ea68beSMiquel RaynalCP110_LABEL(syscon0): system-controller@440000 { 1704aa54969SMiquel Raynal compatible = "syscon", "simple-mfd"; 1714aa54969SMiquel Raynal reg = <0x440000 0x1000>; 1724aa54969SMiquel Raynal 173e1ea68beSMiquel Raynal CP110_LABEL(clk): clock { 1744aa54969SMiquel Raynal compatible = "marvell,cp110-clock"; 1754aa54969SMiquel Raynal #clock-cells = <2>; 1764aa54969SMiquel Raynal }; 1774aa54969SMiquel Raynal 178e1ea68beSMiquel Raynal CP110_LABEL(pinctrl): pinctrl { 1794aa54969SMiquel Raynal compatible = "marvell,armada-8k-cpm-pinctrl"; 1804aa54969SMiquel Raynal }; 1814aa54969SMiquel Raynal 182e1ea68beSMiquel Raynal CP110_LABEL(gpio1): gpio@100 { 1834aa54969SMiquel Raynal compatible = "marvell,armada-8k-gpio"; 1844aa54969SMiquel Raynal offset = <0x100>; 1854aa54969SMiquel Raynal ngpios = <32>; 1864aa54969SMiquel Raynal gpio-controller; 1874aa54969SMiquel Raynal #gpio-cells = <2>; 188e1ea68beSMiquel Raynal gpio-ranges = <&CP110_LABEL(pinctrl) 0 0 32>; 1894aa54969SMiquel Raynal }; 1904aa54969SMiquel Raynal 1914aa54969SMiquel Raynal}; 192c3ab5dffSMiquel Raynal 193c3ab5dffSMiquel RaynalSYSTEM CONTROLLER 1 194c3ab5dffSMiquel Raynal=================== 195c3ab5dffSMiquel Raynal 196c3ab5dffSMiquel RaynalThermal: 197c3ab5dffSMiquel Raynal-------- 198c3ab5dffSMiquel Raynal 199c3ab5dffSMiquel RaynalThe thermal IP can probe the temperature all around the processor. It 200c3ab5dffSMiquel Raynalmay feature several channels, each of them wired to one sensor. 201c3ab5dffSMiquel Raynal 202bf9ff83fSMiquel RaynalIt is possible to setup an overheat interrupt by giving at least one 203bf9ff83fSMiquel Raynalcritical point to any subnode of the thermal-zone node. 204bf9ff83fSMiquel Raynal 205c3ab5dffSMiquel RaynalFor common binding part and usage, refer to 206cff1d293SAmit KucheriaDocumentation/devicetree/bindings/thermal/thermal*.yaml 207c3ab5dffSMiquel Raynal 208c3ab5dffSMiquel RaynalRequired properties: 209c3ab5dffSMiquel Raynal- compatible: must be one of: 210c3ab5dffSMiquel Raynal * marvell,armada-cp110-thermal 211c3ab5dffSMiquel Raynal- reg: register range associated with the thermal functions. 212c3ab5dffSMiquel Raynal 213c3ab5dffSMiquel RaynalOptional properties: 214bf9ff83fSMiquel Raynal- interrupts-extended: overheat interrupt handle. Should point to 215bf9ff83fSMiquel Raynal a line of the ICU-SEI irqchip (116 is what is usually used by the 216bf9ff83fSMiquel Raynal firmware). The ICU-SEI will redirect towards interrupt line #37 of the 217bf9ff83fSMiquel Raynal AP SEI which is shared across all CPs. 218bf9ff83fSMiquel Raynal See interrupt-controller/interrupts.txt 219c3ab5dffSMiquel Raynal- #thermal-sensor-cells: shall be <1> when thermal-zones subnodes refer 220c3ab5dffSMiquel Raynal to this IP and represents the channel ID. There is one sensor per 221c3ab5dffSMiquel Raynal channel. O refers to the thermal IP internal channel. 222c3ab5dffSMiquel Raynal 223c3ab5dffSMiquel RaynalExample: 224c3ab5dffSMiquel RaynalCP110_LABEL(syscon1): system-controller@6f8000 { 225c3ab5dffSMiquel Raynal compatible = "syscon", "simple-mfd"; 226c3ab5dffSMiquel Raynal reg = <0x6f8000 0x1000>; 227c3ab5dffSMiquel Raynal 228c3ab5dffSMiquel Raynal CP110_LABEL(thermal): thermal-sensor@70 { 229c3ab5dffSMiquel Raynal compatible = "marvell,armada-cp110-thermal"; 230c3ab5dffSMiquel Raynal reg = <0x70 0x10>; 231bf9ff83fSMiquel Raynal interrupts-extended = <&CP110_LABEL(icu_sei) 116 IRQ_TYPE_LEVEL_HIGH>; 232c3ab5dffSMiquel Raynal #thermal-sensor-cells = <1>; 233c3ab5dffSMiquel Raynal }; 234c3ab5dffSMiquel Raynal}; 235