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