Home | History | Annotate | Download | only in 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 (a] 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 =
    191 						"usb-overcurrent-status";
    192 					};
    193 				};
    194 
    195 				temp_sensor: temp@4c {
    196 					compatible = "ti,lm75";
    197 					reg = <0x4c>;
    198 					vcc-supply = <&reg_3p3v>;
    199 				};
    200 			};
    201 
    202 			i2c@11100 {
    203 				/*
    204 				 * External I2C Bus for user peripheral
    205 				 */
    206 				clock-frequency = <400000>;
    207 				pinctrl-0 = <&helios_i2c1_pins>;
    208 				pinctrl-names = "default";
    209 				status = "okay";
    210 			};
    211 
    212 			sata@a8000 {
    213 				status = "okay";
    214 				#address-cells = <1>;
    215 				#size-cells = <0>;
    216 
    217 				sata0: sata-port@0 {
    218 					reg = <0>;
    219 				};
    220 
    221 				sata1: sata-port@1 {
    222 					reg = <1>;
    223 				};
    224 			};
    225 
    226 			sata@e0000 {
    227 				status = "okay";
    228 				#address-cells = <1>;
    229 				#size-cells = <0>;
    230 
    231 				sata2: sata-port@0 {
    232 					reg = <0>;
    233 				};
    234 
    235 				sata3: sata-port@1 {
    236 					reg = <1>;
    237 				};
    238 			};
    239 
    240 			spi@10680 {
    241 				pinctrl-0 = <&spi1_pins
    242 					     &microsom_spi1_cs_pins>;
    243 				pinctrl-names = "default";
    244 				status = "okay";
    245 			};
    246 
    247 			sdhci@d8000 {
    248 				bus-width = <4>;
    249 				cd-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
    250 				no-1-8-v;
    251 				pinctrl-0 = <&helios_sdhci_pins
    252 					     &helios_sdhci_cd_pins>;
    253 				pinctrl-names = "default";
    254 				status = "okay";
    255 				vmmc = <&reg_3p3v>;
    256 				wp-inverted;
    257 			};
    258 
    259 			usb@58000 {
    260 				usb-phy = <&usb2_phy>;
    261 				status = "okay";
    262 			};
    263 
    264 			usb3@f0000 {
    265 				status = "okay";
    266 			};
    267 
    268 			usb3@f8000 {
    269 				status = "okay";
    270 			};
    271 
    272 			pinctrl@18000 {
    273 				pca0_pins: pca0-pins {
    274 					marvell,pins = "mpp23";
    275 					marvell,function = "gpio";
    276 				};
    277 				microsom_phy0_int_pins: microsom-phy0-int-pins {
    278 					marvell,pins = "mpp18";
    279 					marvell,function = "gpio";
    280 				};
    281 				helios_i2c1_pins: i2c1-pins {
    282 					marvell,pins = "mpp26", "mpp27";
    283 					marvell,function = "i2c1";
    284 				};
    285 				helios_sdhci_cd_pins: helios-sdhci-cd-pins {
    286 					marvell,pins = "mpp20";
    287 					marvell,function = "gpio";
    288 				};
    289 				helios_sdhci_pins: helios-sdhci-pins {
    290 					marvell,pins = "mpp21", "mpp28",
    291 						       "mpp37", "mpp38",
    292 						       "mpp39", "mpp40";
    293 					marvell,function = "sd0";
    294 				};
    295 				helios_led_pins: helios-led-pins {
    296 					marvell,pins = "mpp24", "mpp25",
    297 						       "mpp49", "mpp50",
    298 						       "mpp52", "mpp53",
    299 						       "mpp54";
    300 					marvell,function = "gpio";
    301 				};
    302 				helios_fan_pins: helios-fan-pins {
    303 					marvell,pins = "mpp41", "mpp43",
    304 						       "mpp48", "mpp55";
    305 					marvell,function = "gpio";
    306 				};
    307 				microsom_spi1_cs_pins: spi1-cs-pins {
    308 					marvell,pins = "mpp59";
    309 					marvell,function = "spi1";
    310 				};
    311 			};
    312 		};
    313 	};
    314 };
    315