1Marvell Armada AP80x System Controller 2====================================== 3 4The AP806/AP807 is one of the two core HW blocks of the Marvell Armada 57K/8K/931x SoCs. It contains system controllers, which provide several 6registers giving access to numerous features: clocks, pin-muxing and 7many other SoC configuration items. This DT binding allows to describe 8these system controllers. 9 10For the top level node: 11 - compatible: must be: "syscon", "simple-mfd"; 12 - reg: register area of the AP80x system controller 13 14SYSTEM CONTROLLER 0 15=================== 16 17Clocks: 18------- 19 20 21The Device Tree node representing the AP806/AP807 system controller 22provides a number of clocks: 23 24 - 0: reference clock of CPU cluster 0 25 - 1: reference clock of CPU cluster 1 26 - 2: fixed PLL at 1200 Mhz 27 - 3: MSS clock, derived from the fixed PLL 28 29Required properties: 30 31 - compatible: must be one of: 32 * "marvell,ap806-clock" 33 * "marvell,ap807-clock" 34 - #clock-cells: must be set to 1 35 36Pinctrl: 37-------- 38 39For common binding part and usage, refer to 40Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt. 41 42Required properties: 43- compatible must be "marvell,ap806-pinctrl", 44 45Available mpp pins/groups and functions: 46Note: brackets (x) are not part of the mpp name for marvell,function and given 47only for more detailed description in this document. 48 49name pins functions 50================================================================================ 51mpp0 0 gpio, sdio(clk), spi0(clk) 52mpp1 1 gpio, sdio(cmd), spi0(miso) 53mpp2 2 gpio, sdio(d0), spi0(mosi) 54mpp3 3 gpio, sdio(d1), spi0(cs0n) 55mpp4 4 gpio, sdio(d2), i2c0(sda) 56mpp5 5 gpio, sdio(d3), i2c0(sdk) 57mpp6 6 gpio, sdio(ds) 58mpp7 7 gpio, sdio(d4), uart1(rxd) 59mpp8 8 gpio, sdio(d5), uart1(txd) 60mpp9 9 gpio, sdio(d6), spi0(cs1n) 61mpp10 10 gpio, sdio(d7) 62mpp11 11 gpio, uart0(txd) 63mpp12 12 gpio, sdio(pw_off), sdio(hw_rst) 64mpp13 13 gpio 65mpp14 14 gpio 66mpp15 15 gpio 67mpp16 16 gpio 68mpp17 17 gpio 69mpp18 18 gpio 70mpp19 19 gpio, uart0(rxd), sdio(pw_off) 71 72GPIO: 73----- 74For common binding part and usage, refer to 75Documentation/devicetree/bindings/gpio/gpio-mvebu.txt. 76 77Required properties: 78 79- compatible: "marvell,armada-8k-gpio" 80 81- offset: offset address inside the syscon block 82 83Example: 84ap_syscon: system-controller@6f4000 { 85 compatible = "syscon", "simple-mfd"; 86 reg = <0x6f4000 0x1000>; 87 88 ap_clk: clock { 89 compatible = "marvell,ap806-clock"; 90 #clock-cells = <1>; 91 }; 92 93 ap_pinctrl: pinctrl { 94 compatible = "marvell,ap806-pinctrl"; 95 }; 96 97 ap_gpio: gpio { 98 compatible = "marvell,armada-8k-gpio"; 99 offset = <0x1040>; 100 ngpios = <19>; 101 gpio-controller; 102 #gpio-cells = <2>; 103 gpio-ranges = <&ap_pinctrl 0 0 19>; 104 }; 105}; 106 107SYSTEM CONTROLLER 1 108=================== 109 110Thermal: 111-------- 112 113For common binding part and usage, refer to 114Documentation/devicetree/bindings/thermal/thermal*.yaml 115 116The thermal IP can probe the temperature all around the processor. It 117may feature several channels, each of them wired to one sensor. 118 119It is possible to setup an overheat interrupt by giving at least one 120critical point to any subnode of the thermal-zone node. 121 122Required properties: 123- compatible: must be one of: 124 * marvell,armada-ap806-thermal 125- reg: register range associated with the thermal functions. 126 127Optional properties: 128- interrupts: overheat interrupt handle. Should point to line 18 of the 129 SEI irqchip. See interrupt-controller/interrupts.txt 130- #thermal-sensor-cells: shall be <1> when thermal-zones subnodes refer 131 to this IP and represents the channel ID. There is one sensor per 132 channel. O refers to the thermal IP internal channel, while positive 133 IDs refer to each CPU. 134 135Example: 136ap_syscon1: system-controller@6f8000 { 137 compatible = "syscon", "simple-mfd"; 138 reg = <0x6f8000 0x1000>; 139 140 ap_thermal: thermal-sensor@80 { 141 compatible = "marvell,armada-ap806-thermal"; 142 reg = <0x80 0x10>; 143 interrupt-parent = <&sei>; 144 interrupts = <18>; 145 #thermal-sensor-cells = <1>; 146 }; 147}; 148 149Cluster clocks: 150--------------- 151 152Device Tree Clock bindings for cluster clock of Marvell 153AP806/AP807. Each cluster contain up to 2 CPUs running at the same 154frequency. 155 156Required properties: 157 - compatible: must be one of: 158 * "marvell,ap806-cpu-clock" 159 * "marvell,ap807-cpu-clock" 160- #clock-cells : should be set to 1. 161 162- clocks : shall be the input parent clock(s) phandle for the clock 163 (one per cluster) 164 165- reg: register range associated with the cluster clocks 166 167ap_syscon1: system-controller@6f8000 { 168 compatible = "marvell,armada-ap806-syscon1", "syscon", "simple-mfd"; 169 reg = <0x6f8000 0x1000>; 170 171 cpu_clk: clock-cpu@278 { 172 compatible = "marvell,ap806-cpu-clock"; 173 clocks = <&ap_clk 0>, <&ap_clk 1>; 174 #clock-cells = <1>; 175 reg = <0x278 0xa30>; 176 }; 177}; 178