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