blob: 049d322964755e0a9eb5a214ee9b888a734a8e11 [file] [log] [blame]
Dennis Gilmore77c39402018-06-11 19:39:53 -05001// 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 =
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};