Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: armada388-helios4

The helios4 is a Armada388 based nas board designed by SolidRun and
based on their SOM. It is sold by kobol.io the dts file came from
https://raw.githubusercontent.com/armbian/build/master/patch/kernel/mvebu-default/95-helios4-device-tree.patch
I added a SPDX license line to match the clearfog it says it was based
on and a compatible line for "kobol,helios4"

Signed-off-by: Dennis Gilmore <dennis@ausil.us>
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>

authored by

Dennis Gilmore and committed by
Gregory CLEMENT
ced8025b ce397d21

+314
+1
arch/arm/boot/dts/Makefile
··· 1138 1138 armada-388-clearfog-pro.dtb \ 1139 1139 armada-388-db.dtb \ 1140 1140 armada-388-gp.dtb \ 1141 + armada-388-helios4.dtb \ 1141 1142 armada-388-rd.dtb 1142 1143 dtb-$(CONFIG_MACH_ARMADA_39X) += \ 1143 1144 armada-398-db.dtb
+313
arch/arm/boot/dts/armada-388-helios4.dts
··· 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 = &eth0; 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 = <&reg_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 = <&reg_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 = <&reg_12v>; 69 + }; 70 + 71 + system-leds { 72 + compatible = "gpio-leds"; 73 + status-led { 74 + label = "helios4:green:status"; 75 + gpios = <&gpio0 24 GPIO_ACTIVE_LOW>; 76 + linux,default-trigger = "heartbeat"; 77 + default-state = "on"; 78 + }; 79 + 80 + fault-led { 81 + label = "helios4:red:fault"; 82 + gpios = <&gpio0 25 GPIO_ACTIVE_LOW>; 83 + default-state = "keep"; 84 + }; 85 + }; 86 + 87 + io-leds { 88 + compatible = "gpio-leds"; 89 + sata1-led { 90 + label = "helios4:green:ata1"; 91 + gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; 92 + linux,default-trigger = "ata1"; 93 + default-state = "off"; 94 + }; 95 + sata2-led { 96 + label = "helios4:green:ata2"; 97 + gpios = <&gpio1 18 GPIO_ACTIVE_LOW>; 98 + linux,default-trigger = "ata2"; 99 + default-state = "off"; 100 + }; 101 + sata3-led { 102 + label = "helios4:green:ata3"; 103 + gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; 104 + linux,default-trigger = "ata3"; 105 + default-state = "off"; 106 + }; 107 + sata4-led { 108 + label = "helios4:green:ata4"; 109 + gpios = <&gpio1 21 GPIO_ACTIVE_LOW>; 110 + linux,default-trigger = "ata4"; 111 + default-state = "off"; 112 + }; 113 + usb-led { 114 + label = "helios4:green:usb"; 115 + gpios = <&gpio1 22 GPIO_ACTIVE_LOW>; 116 + linux,default-trigger = "usb-host"; 117 + default-state = "off"; 118 + }; 119 + }; 120 + 121 + fan1: j10-pwm { 122 + compatible = "pwm-fan"; 123 + pwms = <&gpio1 9 40000>; /* Target freq:25 kHz */ 124 + }; 125 + 126 + fan2: j17-pwm { 127 + compatible = "pwm-fan"; 128 + pwms = <&gpio1 23 40000>; /* Target freq:25 kHz */ 129 + }; 130 + 131 + usb2_phy: usb2-phy { 132 + compatible = "usb-nop-xceiv"; 133 + vbus-regulator = <&reg_5p0v_usb>; 134 + }; 135 + 136 + usb3_phy: usb3-phy { 137 + compatible = "usb-nop-xceiv"; 138 + }; 139 + 140 + soc { 141 + internal-regs { 142 + i2c@11000 { 143 + clock-frequency = <400000>; 144 + pinctrl-0 = <&i2c0_pins>; 145 + pinctrl-names = "default"; 146 + status = "okay"; 147 + 148 + /* 149 + * PCA9655 GPIO expander, up to 1MHz clock. 150 + * 0-Board Revision bit 0 # 151 + * 1-Board Revision bit 1 # 152 + * 5-USB3 overcurrent 153 + * 6-USB3 power 154 + */ 155 + expander0: gpio-expander@20 { 156 + /* 157 + * This is how it should be: 158 + * compatible = "onnn,pca9655", 159 + * "nxp,pca9555"; 160 + * but you can't do this because of 161 + * the way I2C works. 162 + */ 163 + compatible = "nxp,pca9555"; 164 + gpio-controller; 165 + #gpio-cells = <2>; 166 + reg = <0x20>; 167 + pinctrl-names = "default"; 168 + pinctrl-0 = <&pca0_pins>; 169 + interrupt-parent = <&gpio0>; 170 + interrupts = <23 IRQ_TYPE_EDGE_FALLING>; 171 + interrupt-controller; 172 + #interrupt-cells = <2>; 173 + 174 + board_rev_bit_0 { 175 + gpio-hog; 176 + gpios = <0 GPIO_ACTIVE_LOW>; 177 + input; 178 + line-name = "board-rev-0"; 179 + }; 180 + board_rev_bit_1 { 181 + gpio-hog; 182 + gpios = <1 GPIO_ACTIVE_LOW>; 183 + input; 184 + line-name = "board-rev-1"; 185 + }; 186 + usb3_ilimit { 187 + gpio-hog; 188 + gpios = <5 GPIO_ACTIVE_HIGH>; 189 + input; 190 + line-name = "usb-overcurrent-status"; 191 + }; 192 + }; 193 + 194 + temp_sensor: temp@4c { 195 + compatible = "ti,lm75"; 196 + reg = <0x4c>; 197 + vcc-supply = <&reg_3p3v>; 198 + }; 199 + }; 200 + 201 + i2c@11100 { 202 + /* 203 + * External I2C Bus for user peripheral 204 + */ 205 + clock-frequency = <400000>; 206 + pinctrl-0 = <&helios_i2c1_pins>; 207 + pinctrl-names = "default"; 208 + status = "okay"; 209 + }; 210 + 211 + sata@a8000 { 212 + status = "okay"; 213 + #address-cells = <1>; 214 + #size-cells = <0>; 215 + 216 + sata0: sata-port@0 { 217 + reg = <0>; 218 + }; 219 + 220 + sata1: sata-port@1 { 221 + reg = <1>; 222 + }; 223 + }; 224 + 225 + sata@e0000 { 226 + status = "okay"; 227 + #address-cells = <1>; 228 + #size-cells = <0>; 229 + 230 + sata2: sata-port@0 { 231 + reg = <0>; 232 + }; 233 + 234 + sata3: sata-port@1 { 235 + reg = <1>; 236 + }; 237 + }; 238 + 239 + spi@10680 { 240 + pinctrl-0 = <&spi1_pins 241 + &microsom_spi1_cs_pins>; 242 + pinctrl-names = "default"; 243 + status = "okay"; 244 + }; 245 + 246 + sdhci@d8000 { 247 + bus-width = <4>; 248 + cd-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; 249 + no-1-8-v; 250 + pinctrl-0 = <&helios_sdhci_pins 251 + &helios_sdhci_cd_pins>; 252 + pinctrl-names = "default"; 253 + status = "okay"; 254 + vmmc = <&reg_3p3v>; 255 + wp-inverted; 256 + }; 257 + 258 + usb@58000 { 259 + usb-phy = <&usb2_phy>; 260 + status = "okay"; 261 + }; 262 + 263 + usb3@f0000 { 264 + status = "okay"; 265 + }; 266 + 267 + usb3@f8000 { 268 + status = "okay"; 269 + }; 270 + 271 + pinctrl@18000 { 272 + pca0_pins: pca0-pins { 273 + marvell,pins = "mpp23"; 274 + marvell,function = "gpio"; 275 + }; 276 + microsom_phy0_int_pins: microsom-phy0-int-pins { 277 + marvell,pins = "mpp18"; 278 + marvell,function = "gpio"; 279 + }; 280 + helios_i2c1_pins: i2c1-pins { 281 + marvell,pins = "mpp26", "mpp27"; 282 + marvell,function = "i2c1"; 283 + }; 284 + helios_sdhci_cd_pins: helios-sdhci-cd-pins { 285 + marvell,pins = "mpp20"; 286 + marvell,function = "gpio"; 287 + }; 288 + helios_sdhci_pins: helios-sdhci-pins { 289 + marvell,pins = "mpp21", "mpp28", 290 + "mpp37", "mpp38", 291 + "mpp39", "mpp40"; 292 + marvell,function = "sd0"; 293 + }; 294 + helios_led_pins: helios-led-pins { 295 + marvell,pins = "mpp24", "mpp25", 296 + "mpp49", "mpp50", 297 + "mpp52", "mpp53", 298 + "mpp54"; 299 + marvell,function = "gpio"; 300 + }; 301 + helios_fan_pins: helios-fan-pins { 302 + marvell,pins = "mpp41", "mpp43", 303 + "mpp48", "mpp55"; 304 + marvell,function = "gpio"; 305 + }; 306 + microsom_spi1_cs_pins: spi1-cs-pins { 307 + marvell,pins = "mpp59"; 308 + marvell,function = "spi1"; 309 + }; 310 + }; 311 + }; 312 + }; 313 + };