1// SPDX-License-Identifier: (GPL-2.0 OR MIT) 2/* 3 * Device Tree file for Helios4 4 * based on SolidRun Clearfog revision A1 rev 2.0 (88F6828) 5 * 6 * Copyright (C) 2017 Aditya Prayoga <aditya@kobol.io> 7 * 8 */ 9 10/dts-v1/; 11#include "armada-388.dtsi" 12#include "armada-38x-solidrun-microsom.dtsi" 13 14/ { 15 model = "Helios4"; 16 compatible = "kobol,helios4", "marvell,armada388", 17 "marvell,armada385", "marvell,armada380"; 18 19 memory { 20 device_type = "memory"; 21 reg = <0x00000000 0x80000000>; /* 2 GB */ 22 }; 23 24 aliases { 25 /* So that mvebu u-boot can update the MAC addresses */ 26 ethernet1 = ð0; 27 }; 28 29 chosen { 30 stdout-path = "serial0:115200n8"; 31 }; 32 33 reg_12v: regulator-12v { 34 compatible = "regulator-fixed"; 35 regulator-name = "power_brick_12V"; 36 regulator-min-microvolt = <12000000>; 37 regulator-max-microvolt = <12000000>; 38 regulator-always-on; 39 }; 40 41 reg_3p3v: regulator-3p3v { 42 compatible = "regulator-fixed"; 43 regulator-name = "3P3V"; 44 regulator-min-microvolt = <3300000>; 45 regulator-max-microvolt = <3300000>; 46 regulator-always-on; 47 vin-supply = <®_12v>; 48 }; 49 50 reg_5p0v_hdd: regulator-5v-hdd { 51 compatible = "regulator-fixed"; 52 regulator-name = "5V_HDD"; 53 regulator-min-microvolt = <5000000>; 54 regulator-max-microvolt = <5000000>; 55 regulator-always-on; 56 vin-supply = <®_12v>; 57 }; 58 59 reg_5p0v_usb: regulator-5v-usb { 60 compatible = "regulator-fixed"; 61 regulator-name = "USB-PWR"; 62 regulator-min-microvolt = <5000000>; 63 regulator-max-microvolt = <5000000>; 64 regulator-boot-on; 65 regulator-always-on; 66 enable-active-high; 67 gpio = <&expander0 6 GPIO_ACTIVE_HIGH>; 68 vin-supply = <®_12v>; 69 }; 70 71 system-leds { 72 compatible = "gpio-leds"; 73 pinctrl-names = "default"; 74 pinctrl-0 = <&helios_system_led_pins>; 75 76 status-led { 77 label = "helios4:green:status"; 78 gpios = <&gpio0 24 GPIO_ACTIVE_LOW>; 79 linux,default-trigger = "heartbeat"; 80 default-state = "on"; 81 }; 82 83 fault-led { 84 label = "helios4:red:fault"; 85 gpios = <&gpio0 25 GPIO_ACTIVE_LOW>; 86 default-state = "keep"; 87 }; 88 }; 89 90 io-leds { 91 compatible = "gpio-leds"; 92 pinctrl-names = "default"; 93 pinctrl-0 = <&helios_io_led_pins>; 94 95 sata1-led { 96 label = "helios4:green:ata1"; 97 gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; 98 linux,default-trigger = "ata1"; 99 default-state = "off"; 100 }; 101 sata2-led { 102 label = "helios4:green:ata2"; 103 gpios = <&gpio1 18 GPIO_ACTIVE_LOW>; 104 linux,default-trigger = "ata2"; 105 default-state = "off"; 106 }; 107 sata3-led { 108 label = "helios4:green:ata3"; 109 gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; 110 linux,default-trigger = "ata3"; 111 default-state = "off"; 112 }; 113 sata4-led { 114 label = "helios4:green:ata4"; 115 gpios = <&gpio1 21 GPIO_ACTIVE_LOW>; 116 linux,default-trigger = "ata4"; 117 default-state = "off"; 118 }; 119 usb-led { 120 label = "helios4:green:usb"; 121 gpios = <&gpio1 22 GPIO_ACTIVE_LOW>; 122 linux,default-trigger = "usb-host"; 123 default-state = "off"; 124 }; 125 }; 126 127 fan1: j10-pwm { 128 compatible = "pwm-fan"; 129 pwms = <&gpio1 9 40000>; /* Target freq:25 kHz */ 130 pinctrl-names = "default"; 131 pinctrl-0 = <&helios_fan1_pins>; 132 }; 133 134 fan2: j17-pwm { 135 compatible = "pwm-fan"; 136 pwms = <&gpio1 23 40000>; /* Target freq:25 kHz */ 137 pinctrl-names = "default"; 138 pinctrl-0 = <&helios_fan2_pins>; 139 }; 140 141 usb2_phy: usb2-phy { 142 compatible = "usb-nop-xceiv"; 143 vbus-regulator = <®_5p0v_usb>; 144 }; 145 146 usb3_phy: usb3-phy { 147 compatible = "usb-nop-xceiv"; 148 }; 149 150 soc { 151 internal-regs { 152 i2c@11000 { 153 /* 154 * PCA9655 GPIO expander, up to 1MHz clock. 155 * 0-Board Revision bit 0 # 156 * 1-Board Revision bit 1 # 157 * 5-USB3 overcurrent 158 * 6-USB3 power 159 */ 160 expander0: gpio-expander@20 { 161 /* 162 * This is how it should be: 163 * compatible = "onnn,pca9655", 164 * "nxp,pca9555"; 165 * but you can't do this because of 166 * the way I2C works. 167 */ 168 compatible = "nxp,pca9555"; 169 gpio-controller; 170 #gpio-cells = <2>; 171 reg = <0x20>; 172 pinctrl-names = "default"; 173 pinctrl-0 = <&pca0_pins>; 174 interrupt-parent = <&gpio0>; 175 interrupts = <23 IRQ_TYPE_EDGE_FALLING>; 176 interrupt-controller; 177 #interrupt-cells = <2>; 178 179 board-rev-bit-0-hog { 180 gpio-hog; 181 gpios = <0 GPIO_ACTIVE_LOW>; 182 input; 183 line-name = "board-rev-0"; 184 }; 185 board-rev-bit-1-hog { 186 gpio-hog; 187 gpios = <1 GPIO_ACTIVE_LOW>; 188 input; 189 line-name = "board-rev-1"; 190 }; 191 usb3-ilimit-hog { 192 gpio-hog; 193 gpios = <5 GPIO_ACTIVE_HIGH>; 194 input; 195 line-name = "usb-overcurrent-status"; 196 }; 197 }; 198 199 temp_sensor: temp@4c { 200 compatible = "ti,lm75"; 201 reg = <0x4c>; 202 vcc-supply = <®_3p3v>; 203 }; 204 }; 205 206 i2c@11100 { 207 /* 208 * External I2C Bus for user peripheral 209 */ 210 clock-frequency = <400000>; 211 pinctrl-0 = <&helios_i2c1_pins>; 212 pinctrl-names = "default"; 213 status = "okay"; 214 }; 215 216 sata@a8000 { 217 status = "okay"; 218 #address-cells = <1>; 219 #size-cells = <0>; 220 221 sata0: sata-port@0 { 222 reg = <0>; 223 }; 224 225 sata1: sata-port@1 { 226 reg = <1>; 227 }; 228 }; 229 230 sata@e0000 { 231 status = "okay"; 232 #address-cells = <1>; 233 #size-cells = <0>; 234 235 sata2: sata-port@0 { 236 reg = <0>; 237 }; 238 239 sata3: sata-port@1 { 240 reg = <1>; 241 }; 242 }; 243 244 spi@10680 { 245 pinctrl-0 = <&spi1_pins 246 µsom_spi1_cs_pins>; 247 pinctrl-names = "default"; 248 status = "okay"; 249 }; 250 251 sdhci@d8000 { 252 bus-width = <4>; 253 cd-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; 254 no-1-8-v; 255 pinctrl-0 = <&helios_sdhci_pins 256 &helios_sdhci_cd_pins>; 257 pinctrl-names = "default"; 258 status = "okay"; 259 vmmc = <®_3p3v>; 260 wp-inverted; 261 }; 262 263 usb@58000 { 264 usb-phy = <&usb2_phy>; 265 status = "okay"; 266 }; 267 268 usb3@f0000 { 269 status = "okay"; 270 }; 271 272 usb3@f8000 { 273 status = "okay"; 274 }; 275 276 pinctrl@18000 { 277 pca0_pins: pca0-pins { 278 marvell,pins = "mpp23"; 279 marvell,function = "gpio"; 280 }; 281 microsom_phy0_int_pins: microsom-phy0-int-pins { 282 marvell,pins = "mpp18"; 283 marvell,function = "gpio"; 284 }; 285 helios_i2c1_pins: i2c1-pins { 286 marvell,pins = "mpp26", "mpp27"; 287 marvell,function = "i2c1"; 288 }; 289 helios_sdhci_cd_pins: helios-sdhci-cd-pins { 290 marvell,pins = "mpp20"; 291 marvell,function = "gpio"; 292 }; 293 helios_sdhci_pins: helios-sdhci-pins { 294 marvell,pins = "mpp21", "mpp28", 295 "mpp37", "mpp38", 296 "mpp39", "mpp40"; 297 marvell,function = "sd0"; 298 }; 299 helios_system_led_pins: helios-system-led-pins { 300 marvell,pins = "mpp24", "mpp25"; 301 marvell,function = "gpio"; 302 }; 303 helios_io_led_pins: helios-io-led-pins { 304 marvell,pins = "mpp49", "mpp50", 305 "mpp52", "mpp53", 306 "mpp54"; 307 marvell,function = "gpio"; 308 }; 309 helios_fan1_pins: helios_fan1_pins { 310 marvell,pins = "mpp41", "mpp43"; 311 marvell,function = "gpio"; 312 }; 313 helios_fan2_pins: helios_fan2_pins { 314 marvell,pins = "mpp48", "mpp55"; 315 marvell,function = "gpio"; 316 }; 317 microsom_spi1_cs_pins: spi1-cs-pins { 318 marvell,pins = "mpp59"; 319 marvell,function = "spi1"; 320 }; 321 }; 322 }; 323 }; 324}; 325