]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blob - arch/arm/boot/dts/armada-388-helios4.dts
5a6af7e83e44551369259451eb69f6a24d302f89
[mirror_ubuntu-hirsute-kernel.git] / arch / arm / boot / dts / armada-388-helios4.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@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 };
131
132 fan2: j17-pwm {
133 compatible = "pwm-fan";
134 pwms = <&gpio1 23 40000>; /* Target freq:25 kHz */
135 };
136
137 usb2_phy: usb2-phy {
138 compatible = "usb-nop-xceiv";
139 vbus-regulator = <&reg_5p0v_usb>;
140 };
141
142 usb3_phy: usb3-phy {
143 compatible = "usb-nop-xceiv";
144 };
145
146 soc {
147 internal-regs {
148 i2c@11000 {
149 /*
150 * PCA9655 GPIO expander, up to 1MHz clock.
151 * 0-Board Revision bit 0 #
152 * 1-Board Revision bit 1 #
153 * 5-USB3 overcurrent
154 * 6-USB3 power
155 */
156 expander0: gpio-expander@20 {
157 /*
158 * This is how it should be:
159 * compatible = "onnn,pca9655",
160 * "nxp,pca9555";
161 * but you can't do this because of
162 * the way I2C works.
163 */
164 compatible = "nxp,pca9555";
165 gpio-controller;
166 #gpio-cells = <2>;
167 reg = <0x20>;
168 pinctrl-names = "default";
169 pinctrl-0 = <&pca0_pins>;
170 interrupt-parent = <&gpio0>;
171 interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
172 interrupt-controller;
173 #interrupt-cells = <2>;
174
175 board-rev-bit-0-hog {
176 gpio-hog;
177 gpios = <0 GPIO_ACTIVE_LOW>;
178 input;
179 line-name = "board-rev-0";
180 };
181 board-rev-bit-1-hog {
182 gpio-hog;
183 gpios = <1 GPIO_ACTIVE_LOW>;
184 input;
185 line-name = "board-rev-1";
186 };
187 usb3-ilimit-hog {
188 gpio-hog;
189 gpios = <5 GPIO_ACTIVE_HIGH>;
190 input;
191 line-name = "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_system_led_pins: helios-system-led-pins {
296 marvell,pins = "mpp24", "mpp25";
297 marvell,function = "gpio";
298 };
299 helios_io_led_pins: helios-io-led-pins {
300 marvell,pins = "mpp49", "mpp50",
301 "mpp52", "mpp53",
302 "mpp54";
303 marvell,function = "gpio";
304 };
305 helios_fan_pins: helios-fan-pins {
306 marvell,pins = "mpp41", "mpp43",
307 "mpp48", "mpp55";
308 marvell,function = "gpio";
309 };
310 microsom_spi1_cs_pins: spi1-cs-pins {
311 marvell,pins = "mpp59";
312 marvell,function = "spi1";
313 };
314 };
315 };
316 };
317 };