Back to home page

OSCL-LXR

 
 

    


0001 Marvell Armada CP110 System Controller
0002 ======================================
0003 
0004 The CP110 is one of the two core HW blocks of the Marvell Armada 7K/8K
0005 SoCs. It contains system controllers, which provide several registers
0006 giving access to numerous features: clocks, pin-muxing and many other
0007 SoC configuration items. This DT binding allows to describe these
0008 system controllers.
0009 
0010 For the top level node:
0011  - compatible: must be: "syscon", "simple-mfd";
0012  - reg: register area of the CP110 system controller
0013 
0014 SYSTEM CONTROLLER 0
0015 ===================
0016 
0017 Clocks:
0018 -------
0019 
0020 The Device Tree node representing this System Controller 0 provides a
0021 number of clocks:
0022 
0023  - a set of core clocks
0024  - a set of gatable clocks
0025 
0026 Those clocks can be referenced by other Device Tree nodes using two
0027 cells:
0028  - The first cell must be 0 or 1. 0 for the core clocks and 1 for the
0029    gatable clocks.
0030  - The second cell identifies the particular core clock or gatable
0031    clocks.
0032 
0033 The following clocks are available:
0034  - Core clocks
0035    - 0 0        APLL
0036    - 0 1        PPv2 core
0037    - 0 2        EIP
0038    - 0 3        Core
0039    - 0 4        NAND core
0040    - 0 5        SDIO core
0041  - Gatable clocks
0042    - 1 0        Audio
0043    - 1 1        Comm Unit
0044    - 1 2        NAND
0045    - 1 3        PPv2
0046    - 1 4        SDIO
0047    - 1 5        MG Domain
0048    - 1 6        MG Core
0049    - 1 7        XOR1
0050    - 1 8        XOR0
0051    - 1 9        GOP DP
0052    - 1 11       PCIe x1 0
0053    - 1 12       PCIe x1 1
0054    - 1 13       PCIe x4
0055    - 1 14       PCIe / XOR
0056    - 1 15       SATA
0057    - 1 16       SATA USB
0058    - 1 17       Main
0059    - 1 18       SD/MMC/GOP
0060    - 1 21       Slow IO (SPI, NOR, BootROM, I2C, UART)
0061    - 1 22       USB3H0
0062    - 1 23       USB3H1
0063    - 1 24       USB3 Device
0064    - 1 25       EIP150
0065    - 1 26       EIP197
0066 
0067 Required properties:
0068 
0069  - compatible: must be:
0070      "marvell,cp110-clock"
0071  - #clock-cells: must be set to 2
0072 
0073 Pinctrl:
0074 --------
0075 
0076 For common binding part and usage, refer to the file
0077 Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt.
0078 
0079 Required properties:
0080 
0081 - compatible: "marvell,armada-7k-pinctrl", "marvell,armada-8k-cpm-pinctrl",
0082   "marvell,armada-8k-cps-pinctrl" or "marvell,cp115-standalone-pinctrl"
0083   depending on the specific variant of the SoC being used.
0084 
0085 Available mpp pins/groups and functions:
0086 Note: brackets (x) are not part of the mpp name for marvell,function and given
0087 only for more detailed description in this document.
0088 
0089 name    pins    functions
0090 ================================================================================
0091 mpp0    0       gpio, dev(ale1), au(i2smclk), ge0(rxd3), tdm(pclk), ptp(pulse), mss_i2c(sda), uart0(rxd), sata0(present_act), ge(mdio)
0092 mpp1    1       gpio, dev(ale0), au(i2sdo_spdifo), ge0(rxd2), tdm(drx), ptp(clk), mss_i2c(sck), uart0(txd), sata1(present_act), ge(mdc)
0093 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)
0094 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)
0095 mpp4    4       gpio, dev(ad13), au(i2sbclk), ge0(rxctl), tdm(rstn), mss_uart(rxd), uart1(cts), pcie0(clkreq), uart3(rxd), ge(mdc)
0096 mpp5    5       gpio, dev(ad12), au(i2sdi), ge0(rxclk), tdm(intn), mss_uart(txd), uart1(rts), pcie1(clkreq), uart3(txd), ge(mdio)
0097 mpp6    6       gpio, dev(ad11), ge0(txd3), spi0(csn2), au(i2sextclk), sata1(present_act), pcie2(clkreq), uart0(rxd), ptp(pulse)
0098 mpp7    7       gpio, dev(ad10), ge0(txd2), spi0(csn1), spi1(csn1), sata0(present_act), led(data), uart0(txd), ptp(clk)
0099 mpp8    8       gpio, dev(ad9), ge0(txd1), spi0(csn0), spi1(csn0), uart0(cts), led(stb), uart2(rxd), ptp(pclk_out), synce1(clk)
0100 mpp9    9       gpio, dev(ad8), ge0(txd0), spi0(mosi), spi1(mosi), pcie(rstoutn), synce2(clk)
0101 mpp10   10      gpio, dev(readyn), ge0(txctl), spi0(miso), spi1(miso), uart0(cts), sata1(present_act)
0102 mpp11   11      gpio, dev(wen1), ge0(txclkout), spi0(clk), spi1(clk), uart0(rts), led(clk), uart2(txd), sata0(present_act)
0103 mpp12   12      gpio, dev(clk_out), nf(rbn1), spi1(csn1), ge0(rxclk)
0104 mpp13   13      gpio, dev(burstn), nf(rbn0), spi1(miso), ge0(rxctl), mss_spi(miso)
0105 mpp14   14      gpio, dev(bootcsn), dev(csn0), spi1(csn0), spi0(csn3), au(i2sextclk), spi0(miso), sata0(present_act), mss_spi(csn)
0106 mpp15   15      gpio, dev(ad7), spi1(mosi), spi0(mosi), mss_spi(mosi), ptp(pulse_cp2cp)
0107 mpp16   16      gpio, dev(ad6), spi1(clk), mss_spi(clk)
0108 mpp17   17      gpio, dev(ad5), ge0(txd3)
0109 mpp18   18      gpio, dev(ad4), ge0(txd2), ptp(clk_cp2cp)
0110 mpp19   19      gpio, dev(ad3), ge0(txd1), wakeup(out_cp2cp)
0111 mpp20   20      gpio, dev(ad2), ge0(txd0)
0112 mpp21   21      gpio, dev(ad1), ge0(txctl), sei(in_cp2cp)
0113 mpp22   22      gpio, dev(ad0), ge0(txclkout), wakeup(in_cp2cp)
0114 mpp23   23      gpio, dev(a1), au(i2smclk), link(rd_in_cp2cp)
0115 mpp24   24      gpio, dev(a0), au(i2slrclk)
0116 mpp25   25      gpio, dev(oen), au(i2sdo_spdifo)
0117 mpp26   26      gpio, dev(wen0), au(i2sbclk)
0118 mpp27   27      gpio, dev(csn0), spi1(miso), mss_gpio4, ge0(rxd3), spi0(csn4), ge(mdio), sata0(present_act), uart0(rts), rei(in_cp2cp)
0119 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)
0120 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)
0121 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)
0122 mpp31   31      gpio, dev(a2), mss_gpio4, pcie(rstoutn), ge(mdc)
0123 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
0124 mpp33   33      gpio, mii(txclk), sdio(pwr10), mss_spi(csn), tdm(fsync), au(i2smclk), sdio(bus_pwr), xg(mdio), pcie2(clkreq), mss_gpio1
0125 mpp34   34      gpio, mii(rxerr), sdio(pwr11), mss_spi(mosi), tdm(dtx), au(i2slrclk), sdio(wr_protect), ge(mdc), pcie0(clkreq), mss_gpio2
0126 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
0127 mpp36   36      gpio, synce2(clk), i2c1(sck), ptp(clk), synce1(clk), au(i2sbclk), sata0(present_act), xg(mdc), ge(mdc), pcie2(clkreq), mss_gpio5
0128 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)
0129 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)
0130 mpp39   39      gpio, sdio(wr_protect), au(i2sbclk), ptp(clk), spi0(csn1), sata1(present_act), mss_gpio0
0131 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
0132 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)
0133 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
0134 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)
0135 mpp44   44      gpio, ge1(txd2), uart0(rts), ptp(clk_cp2cp)
0136 mpp45   45      gpio, ge1(txd3), uart0(txd), pcie(rstoutn)
0137 mpp46   46      gpio, ge1(txd1), uart1(rts)
0138 mpp47   47      gpio, ge1(txd0), spi1(clk), uart1(txd), ge(mdc)
0139 mpp48   48      gpio, ge1(txctl_txen), spi1(mosi), xg(mdc), wakeup(in_cp2cp)
0140 mpp49   49      gpio, ge1(txclkout), mii(crs), spi1(miso), uart1(rxd), ge(mdio), pcie0(clkreq), sdio(v18_en), sei(out_cp2cp)
0141 mpp50   50      gpio, ge1(rxclk), mss_i2c(sda), spi1(csn0), uart2(txd), uart0(rxd), xg(mdio), sdio(pwr11)
0142 mpp51   51      gpio, ge1(rxd0), mss_i2c(sck), spi1(csn1), uart2(rxd), uart0(cts), sdio(pwr10)
0143 mpp52   52      gpio, ge1(rxd1), synce1(clk), synce2(clk), spi1(csn2), uart1(cts), led(clk), pcie(rstoutn), pcie0(clkreq)
0144 mpp53   53      gpio, ge1(rxd2), ptp(clk), spi1(csn3), uart1(rxd), led(stb), sdio(led)
0145 mpp54   54      gpio, ge1(rxd3), synce2(clk), ptp(pclk_out), synce1(clk), led(data), sdio(hw_rst), sdio_wp(wr_protect)
0146 mpp55   55      gpio, ge1(rxctl_rxdv), ptp(pulse), sdio(led), sdio_cd(card_detect)
0147 mpp56   56      gpio, tdm(drx), au(i2sdo_spdifo), spi0(clk), uart1(rxd), sata1(present_act), sdio(clk)
0148 mpp57   57      gpio, mss_i2c(sda), ptp(pclk_out), tdm(intn), au(i2sbclk), spi0(mosi), uart1(txd), sata0(present_act), sdio(cmd)
0149 mpp58   58      gpio, mss_i2c(sck), ptp(clk), tdm(rstn), au(i2sdi), spi0(miso), uart1(cts), led(clk), sdio(d0)
0150 mpp59   59      gpio, mss_gpio7, synce2(clk), tdm(fsync), au(i2slrclk), spi0(csn0), uart0(cts), led(stb), uart1(txd), sdio(d1)
0151 mpp60   60      gpio, mss_gpio6, ptp(pulse), tdm(dtx), au(i2smclk), spi0(csn1), uart0(rts), led(data), uart1(rxd), sdio(d2)
0152 mpp61   61      gpio, mss_gpio5, ptp(clk), tdm(pclk), au(i2sextclk), spi0(csn2), uart0(txd), uart2(txd), sata1(present_act), ge(mdio), sdio(d3)
0153 mpp62   62      gpio, mss_gpio4, synce1(clk), ptp(pclk_out), sata1(present_act), spi0(csn3), uart0(rxd), uart2(rxd), sata0(present_act), ge(mdc)
0154 
0155 GPIO:
0156 -----
0157 
0158 For common binding part and usage, refer to
0159 Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml.
0160 
0161 Required properties:
0162 
0163 - compatible: "marvell,armada-8k-gpio"
0164 
0165 - offset: offset address inside the syscon block
0166 
0167 Example:
0168 
0169 CP110_LABEL(syscon0): system-controller@440000 {
0170         compatible = "syscon", "simple-mfd";
0171         reg = <0x440000 0x1000>;
0172 
0173         CP110_LABEL(clk): clock {
0174                 compatible = "marvell,cp110-clock";
0175                 #clock-cells = <2>;
0176         };
0177 
0178         CP110_LABEL(pinctrl): pinctrl {
0179                 compatible = "marvell,armada-8k-cpm-pinctrl";
0180         };
0181 
0182         CP110_LABEL(gpio1): gpio@100 {
0183                 compatible = "marvell,armada-8k-gpio";
0184                 offset = <0x100>;
0185                 ngpios = <32>;
0186                 gpio-controller;
0187                 #gpio-cells = <2>;
0188                 gpio-ranges = <&CP110_LABEL(pinctrl) 0 0 32>;
0189         };
0190 
0191 };
0192 
0193 SYSTEM CONTROLLER 1
0194 ===================
0195 
0196 Thermal:
0197 --------
0198 
0199 The thermal IP can probe the temperature all around the processor. It
0200 may feature several channels, each of them wired to one sensor.
0201 
0202 It is possible to setup an overheat interrupt by giving at least one
0203 critical point to any subnode of the thermal-zone node.
0204 
0205 For common binding part and usage, refer to
0206 Documentation/devicetree/bindings/thermal/thermal*.yaml
0207 
0208 Required properties:
0209 - compatible: must be one of:
0210   * marvell,armada-cp110-thermal
0211 - reg: register range associated with the thermal functions.
0212 
0213 Optional properties:
0214 - interrupts-extended: overheat interrupt handle. Should point to
0215   a line of the ICU-SEI irqchip (116 is what is usually used by the
0216   firmware). The ICU-SEI will redirect towards interrupt line #37 of the
0217   AP SEI which is shared across all CPs.
0218   See interrupt-controller/interrupts.txt
0219 - #thermal-sensor-cells: shall be <1> when thermal-zones subnodes refer
0220   to this IP and represents the channel ID. There is one sensor per
0221   channel. O refers to the thermal IP internal channel.
0222 
0223 Example:
0224 CP110_LABEL(syscon1): system-controller@6f8000 {
0225         compatible = "syscon", "simple-mfd";
0226         reg = <0x6f8000 0x1000>;
0227 
0228         CP110_LABEL(thermal): thermal-sensor@70 {
0229                 compatible = "marvell,armada-cp110-thermal";
0230                 reg = <0x70 0x10>;
0231                 interrupts-extended = <&CP110_LABEL(icu_sei) 116 IRQ_TYPE_LEVEL_HIGH>;
0232                 #thermal-sensor-cells = <1>;
0233         };
0234 };