xref: /linux/Documentation/devicetree/bindings/arm/marvell/cp110-system-controller.txt (revision a1c613ae4c322ddd58d5a8539dbfba2a0380a8c0)
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