// SPDX-License-Identifier: (GPL-2.0 OR MIT) /* * Device Tree file for Helios4 * based on SolidRun Clearfog revision A1 rev 2.0 (88F6828) * * Copyright (C) 2017 Aditya Prayoga * */ /dts-v1/; #include "armada-388.dtsi" #include "armada-38x-solidrun-microsom.dtsi" / { model = "Helios4"; compatible = "kobol,helios4", "marvell,armada388", "marvell,armada385", "marvell,armada380"; memory { device_type = "memory"; reg = <0x00000000 0x80000000>; /* 2 GB */ }; aliases { /* So that mvebu u-boot can update the MAC addresses */ ethernet1 = ð0; }; chosen { stdout-path = "serial0:115200n8"; }; reg_12v: regulator-12v { compatible = "regulator-fixed"; regulator-name = "power_brick_12V"; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; regulator-always-on; }; reg_3p3v: regulator-3p3v { compatible = "regulator-fixed"; regulator-name = "3P3V"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; vin-supply = <®_12v>; }; reg_5p0v_hdd: regulator-5v-hdd { compatible = "regulator-fixed"; regulator-name = "5V_HDD"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; regulator-always-on; vin-supply = <®_12v>; }; reg_5p0v_usb: regulator-5v-usb { compatible = "regulator-fixed"; regulator-name = "USB-PWR"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; regulator-boot-on; regulator-always-on; enable-active-high; gpio = <&expander0 6 GPIO_ACTIVE_HIGH>; vin-supply = <®_12v>; }; system-leds { compatible = "gpio-leds"; status-led { label = "helios4:green:status"; gpios = <&gpio0 24 GPIO_ACTIVE_LOW>; linux,default-trigger = "heartbeat"; default-state = "on"; }; fault-led { label = "helios4:red:fault"; gpios = <&gpio0 25 GPIO_ACTIVE_LOW>; default-state = "keep"; }; }; io-leds { compatible = "gpio-leds"; sata1-led { label = "helios4:green:ata1"; gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; linux,default-trigger = "ata1"; default-state = "off"; }; sata2-led { label = "helios4:green:ata2"; gpios = <&gpio1 18 GPIO_ACTIVE_LOW>; linux,default-trigger = "ata2"; default-state = "off"; }; sata3-led { label = "helios4:green:ata3"; gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; linux,default-trigger = "ata3"; default-state = "off"; }; sata4-led { label = "helios4:green:ata4"; gpios = <&gpio1 21 GPIO_ACTIVE_LOW>; linux,default-trigger = "ata4"; default-state = "off"; }; usb-led { label = "helios4:green:usb"; gpios = <&gpio1 22 GPIO_ACTIVE_LOW>; linux,default-trigger = "usb-host"; default-state = "off"; }; }; fan1: j10-pwm { compatible = "pwm-fan"; pwms = <&gpio1 9 40000>; /* Target freq:25 kHz */ }; fan2: j17-pwm { compatible = "pwm-fan"; pwms = <&gpio1 23 40000>; /* Target freq:25 kHz */ }; usb2_phy: usb2-phy { compatible = "usb-nop-xceiv"; vbus-regulator = <®_5p0v_usb>; }; usb3_phy: usb3-phy { compatible = "usb-nop-xceiv"; }; soc { internal-regs { i2c@11000 { clock-frequency = <400000>; pinctrl-0 = <&i2c0_pins>; pinctrl-names = "default"; status = "okay"; /* * PCA9655 GPIO expander, up to 1MHz clock. * 0-Board Revision bit 0 # * 1-Board Revision bit 1 # * 5-USB3 overcurrent * 6-USB3 power */ expander0: gpio-expander@20 { /* * This is how it should be: * compatible = "onnn,pca9655", * "nxp,pca9555"; * but you can't do this because of * the way I2C works. */ compatible = "nxp,pca9555"; gpio-controller; #gpio-cells = <2>; reg = <0x20>; pinctrl-names = "default"; pinctrl-0 = <&pca0_pins>; interrupt-parent = <&gpio0>; interrupts = <23 IRQ_TYPE_EDGE_FALLING>; interrupt-controller; #interrupt-cells = <2>; board_rev_bit_0 { gpio-hog; gpios = <0 GPIO_ACTIVE_LOW>; input; line-name = "board-rev-0"; }; board_rev_bit_1 { gpio-hog; gpios = <1 GPIO_ACTIVE_LOW>; input; line-name = "board-rev-1"; }; usb3_ilimit { gpio-hog; gpios = <5 GPIO_ACTIVE_HIGH>; input; line-name = "usb-overcurrent-status"; }; }; temp_sensor: temp@4c { compatible = "ti,lm75"; reg = <0x4c>; vcc-supply = <®_3p3v>; }; }; i2c@11100 { /* * External I2C Bus for user peripheral */ clock-frequency = <400000>; pinctrl-0 = <&helios_i2c1_pins>; pinctrl-names = "default"; status = "okay"; }; sata@a8000 { status = "okay"; #address-cells = <1>; #size-cells = <0>; sata0: sata-port@0 { reg = <0>; }; sata1: sata-port@1 { reg = <1>; }; }; sata@e0000 { status = "okay"; #address-cells = <1>; #size-cells = <0>; sata2: sata-port@0 { reg = <0>; }; sata3: sata-port@1 { reg = <1>; }; }; spi@10680 { pinctrl-0 = <&spi1_pins µsom_spi1_cs_pins>; pinctrl-names = "default"; status = "okay"; }; sdhci@d8000 { bus-width = <4>; cd-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; no-1-8-v; pinctrl-0 = <&helios_sdhci_pins &helios_sdhci_cd_pins>; pinctrl-names = "default"; status = "okay"; vmmc = <®_3p3v>; wp-inverted; }; usb@58000 { usb-phy = <&usb2_phy>; status = "okay"; }; usb3@f0000 { status = "okay"; }; usb3@f8000 { status = "okay"; }; pinctrl@18000 { pca0_pins: pca0-pins { marvell,pins = "mpp23"; marvell,function = "gpio"; }; microsom_phy0_int_pins: microsom-phy0-int-pins { marvell,pins = "mpp18"; marvell,function = "gpio"; }; helios_i2c1_pins: i2c1-pins { marvell,pins = "mpp26", "mpp27"; marvell,function = "i2c1"; }; helios_sdhci_cd_pins: helios-sdhci-cd-pins { marvell,pins = "mpp20"; marvell,function = "gpio"; }; helios_sdhci_pins: helios-sdhci-pins { marvell,pins = "mpp21", "mpp28", "mpp37", "mpp38", "mpp39", "mpp40"; marvell,function = "sd0"; }; helios_led_pins: helios-led-pins { marvell,pins = "mpp24", "mpp25", "mpp49", "mpp50", "mpp52", "mpp53", "mpp54"; marvell,function = "gpio"; }; helios_fan_pins: helios-fan-pins { marvell,pins = "mpp41", "mpp43", "mpp48", "mpp55"; marvell,function = "gpio"; }; microsom_spi1_cs_pins: spi1-cs-pins { marvell,pins = "mpp59"; marvell,function = "spi1"; }; }; }; }; };