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