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