xref: /freebsd/sys/contrib/device-tree/src/arm/marvell/armada-388-helios4.dts (revision f126890ac5386406dadf7c4cfa9566cbb56537c5)
1*f126890aSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2*f126890aSEmmanuel Vadot/*
3*f126890aSEmmanuel Vadot * Device Tree file for Helios4
4*f126890aSEmmanuel Vadot * based on SolidRun Clearfog revision A1 rev 2.0 (88F6828)
5*f126890aSEmmanuel Vadot *
6*f126890aSEmmanuel Vadot *  Copyright (C) 2017 Aditya Prayoga <aditya@kobol.io>
7*f126890aSEmmanuel Vadot *
8*f126890aSEmmanuel Vadot */
9*f126890aSEmmanuel Vadot
10*f126890aSEmmanuel Vadot/dts-v1/;
11*f126890aSEmmanuel Vadot#include "armada-388.dtsi"
12*f126890aSEmmanuel Vadot#include "armada-38x-solidrun-microsom.dtsi"
13*f126890aSEmmanuel Vadot
14*f126890aSEmmanuel Vadot/ {
15*f126890aSEmmanuel Vadot	model = "Helios4";
16*f126890aSEmmanuel Vadot	compatible = "kobol,helios4", "marvell,armada388",
17*f126890aSEmmanuel Vadot		"marvell,armada385", "marvell,armada380";
18*f126890aSEmmanuel Vadot
19*f126890aSEmmanuel Vadot	memory {
20*f126890aSEmmanuel Vadot		device_type = "memory";
21*f126890aSEmmanuel Vadot		reg = <0x00000000 0x80000000>; /* 2 GB */
22*f126890aSEmmanuel Vadot	};
23*f126890aSEmmanuel Vadot
24*f126890aSEmmanuel Vadot	aliases {
25*f126890aSEmmanuel Vadot		/* So that mvebu u-boot can update the MAC addresses */
26*f126890aSEmmanuel Vadot		ethernet1 = &eth0;
27*f126890aSEmmanuel Vadot	};
28*f126890aSEmmanuel Vadot
29*f126890aSEmmanuel Vadot	chosen {
30*f126890aSEmmanuel Vadot		stdout-path = "serial0:115200n8";
31*f126890aSEmmanuel Vadot	};
32*f126890aSEmmanuel Vadot
33*f126890aSEmmanuel Vadot	reg_12v: regulator-12v {
34*f126890aSEmmanuel Vadot		compatible = "regulator-fixed";
35*f126890aSEmmanuel Vadot		regulator-name = "power_brick_12V";
36*f126890aSEmmanuel Vadot		regulator-min-microvolt = <12000000>;
37*f126890aSEmmanuel Vadot		regulator-max-microvolt = <12000000>;
38*f126890aSEmmanuel Vadot		regulator-always-on;
39*f126890aSEmmanuel Vadot	};
40*f126890aSEmmanuel Vadot
41*f126890aSEmmanuel Vadot	reg_3p3v: regulator-3p3v {
42*f126890aSEmmanuel Vadot		compatible = "regulator-fixed";
43*f126890aSEmmanuel Vadot		regulator-name = "3P3V";
44*f126890aSEmmanuel Vadot		regulator-min-microvolt = <3300000>;
45*f126890aSEmmanuel Vadot		regulator-max-microvolt = <3300000>;
46*f126890aSEmmanuel Vadot		regulator-always-on;
47*f126890aSEmmanuel Vadot		vin-supply = <&reg_12v>;
48*f126890aSEmmanuel Vadot	};
49*f126890aSEmmanuel Vadot
50*f126890aSEmmanuel Vadot	reg_5p0v_hdd: regulator-5v-hdd {
51*f126890aSEmmanuel Vadot		compatible = "regulator-fixed";
52*f126890aSEmmanuel Vadot		regulator-name = "5V_HDD";
53*f126890aSEmmanuel Vadot		regulator-min-microvolt = <5000000>;
54*f126890aSEmmanuel Vadot		regulator-max-microvolt = <5000000>;
55*f126890aSEmmanuel Vadot		regulator-always-on;
56*f126890aSEmmanuel Vadot		vin-supply = <&reg_12v>;
57*f126890aSEmmanuel Vadot	};
58*f126890aSEmmanuel Vadot
59*f126890aSEmmanuel Vadot	reg_5p0v_usb: regulator-5v-usb {
60*f126890aSEmmanuel Vadot		compatible = "regulator-fixed";
61*f126890aSEmmanuel Vadot		regulator-name = "USB-PWR";
62*f126890aSEmmanuel Vadot		regulator-min-microvolt = <5000000>;
63*f126890aSEmmanuel Vadot		regulator-max-microvolt = <5000000>;
64*f126890aSEmmanuel Vadot		regulator-boot-on;
65*f126890aSEmmanuel Vadot		regulator-always-on;
66*f126890aSEmmanuel Vadot		enable-active-high;
67*f126890aSEmmanuel Vadot		gpio = <&expander0 6 GPIO_ACTIVE_HIGH>;
68*f126890aSEmmanuel Vadot		vin-supply = <&reg_12v>;
69*f126890aSEmmanuel Vadot	};
70*f126890aSEmmanuel Vadot
71*f126890aSEmmanuel Vadot	system-leds {
72*f126890aSEmmanuel Vadot		compatible = "gpio-leds";
73*f126890aSEmmanuel Vadot		pinctrl-names = "default";
74*f126890aSEmmanuel Vadot		pinctrl-0 = <&helios_system_led_pins>;
75*f126890aSEmmanuel Vadot
76*f126890aSEmmanuel Vadot		status-led {
77*f126890aSEmmanuel Vadot			label = "helios4:green:status";
78*f126890aSEmmanuel Vadot			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
79*f126890aSEmmanuel Vadot			linux,default-trigger = "heartbeat";
80*f126890aSEmmanuel Vadot			default-state = "on";
81*f126890aSEmmanuel Vadot		};
82*f126890aSEmmanuel Vadot
83*f126890aSEmmanuel Vadot		fault-led {
84*f126890aSEmmanuel Vadot			label = "helios4:red:fault";
85*f126890aSEmmanuel Vadot			gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
86*f126890aSEmmanuel Vadot			default-state = "keep";
87*f126890aSEmmanuel Vadot		};
88*f126890aSEmmanuel Vadot	};
89*f126890aSEmmanuel Vadot
90*f126890aSEmmanuel Vadot	io-leds {
91*f126890aSEmmanuel Vadot		compatible = "gpio-leds";
92*f126890aSEmmanuel Vadot		pinctrl-names = "default";
93*f126890aSEmmanuel Vadot		pinctrl-0 = <&helios_io_led_pins>;
94*f126890aSEmmanuel Vadot
95*f126890aSEmmanuel Vadot		sata1-led {
96*f126890aSEmmanuel Vadot			label = "helios4:green:ata1";
97*f126890aSEmmanuel Vadot			gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
98*f126890aSEmmanuel Vadot			linux,default-trigger = "ata1";
99*f126890aSEmmanuel Vadot			default-state = "off";
100*f126890aSEmmanuel Vadot		};
101*f126890aSEmmanuel Vadot		sata2-led {
102*f126890aSEmmanuel Vadot			label = "helios4:green:ata2";
103*f126890aSEmmanuel Vadot			gpios = <&gpio1 18 GPIO_ACTIVE_LOW>;
104*f126890aSEmmanuel Vadot			linux,default-trigger = "ata2";
105*f126890aSEmmanuel Vadot			default-state = "off";
106*f126890aSEmmanuel Vadot		};
107*f126890aSEmmanuel Vadot		sata3-led {
108*f126890aSEmmanuel Vadot			label = "helios4:green:ata3";
109*f126890aSEmmanuel Vadot			gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
110*f126890aSEmmanuel Vadot			linux,default-trigger = "ata3";
111*f126890aSEmmanuel Vadot			default-state = "off";
112*f126890aSEmmanuel Vadot		};
113*f126890aSEmmanuel Vadot		sata4-led {
114*f126890aSEmmanuel Vadot			label = "helios4:green:ata4";
115*f126890aSEmmanuel Vadot			gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;
116*f126890aSEmmanuel Vadot			linux,default-trigger = "ata4";
117*f126890aSEmmanuel Vadot			default-state = "off";
118*f126890aSEmmanuel Vadot		};
119*f126890aSEmmanuel Vadot		usb-led {
120*f126890aSEmmanuel Vadot			label = "helios4:green:usb";
121*f126890aSEmmanuel Vadot			gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;
122*f126890aSEmmanuel Vadot			linux,default-trigger = "usb-host";
123*f126890aSEmmanuel Vadot			default-state = "off";
124*f126890aSEmmanuel Vadot		};
125*f126890aSEmmanuel Vadot	};
126*f126890aSEmmanuel Vadot
127*f126890aSEmmanuel Vadot	fan1: j10-pwm {
128*f126890aSEmmanuel Vadot		compatible = "pwm-fan";
129*f126890aSEmmanuel Vadot		pwms = <&gpio1 9 40000>;	/* Target freq:25 kHz */
130*f126890aSEmmanuel Vadot		pinctrl-names = "default";
131*f126890aSEmmanuel Vadot		pinctrl-0 = <&helios_fan1_pins>;
132*f126890aSEmmanuel Vadot	};
133*f126890aSEmmanuel Vadot
134*f126890aSEmmanuel Vadot	fan2: j17-pwm {
135*f126890aSEmmanuel Vadot		compatible = "pwm-fan";
136*f126890aSEmmanuel Vadot		pwms = <&gpio1 23 40000>;	/* Target freq:25 kHz */
137*f126890aSEmmanuel Vadot		pinctrl-names = "default";
138*f126890aSEmmanuel Vadot		pinctrl-0 = <&helios_fan2_pins>;
139*f126890aSEmmanuel Vadot	};
140*f126890aSEmmanuel Vadot
141*f126890aSEmmanuel Vadot	usb2_phy: usb2-phy {
142*f126890aSEmmanuel Vadot		compatible = "usb-nop-xceiv";
143*f126890aSEmmanuel Vadot		vbus-regulator = <&reg_5p0v_usb>;
144*f126890aSEmmanuel Vadot	};
145*f126890aSEmmanuel Vadot
146*f126890aSEmmanuel Vadot	usb3_phy: usb3-phy {
147*f126890aSEmmanuel Vadot		compatible = "usb-nop-xceiv";
148*f126890aSEmmanuel Vadot	};
149*f126890aSEmmanuel Vadot
150*f126890aSEmmanuel Vadot	soc {
151*f126890aSEmmanuel Vadot		internal-regs {
152*f126890aSEmmanuel Vadot			i2c@11000 {
153*f126890aSEmmanuel Vadot				/*
154*f126890aSEmmanuel Vadot				 * PCA9655 GPIO expander, up to 1MHz clock.
155*f126890aSEmmanuel Vadot				 *  0-Board Revision bit 0 #
156*f126890aSEmmanuel Vadot				 *  1-Board Revision bit 1 #
157*f126890aSEmmanuel Vadot				 *  5-USB3 overcurrent
158*f126890aSEmmanuel Vadot				 *  6-USB3 power
159*f126890aSEmmanuel Vadot				 */
160*f126890aSEmmanuel Vadot				expander0: gpio-expander@20 {
161*f126890aSEmmanuel Vadot					/*
162*f126890aSEmmanuel Vadot					 * This is how it should be:
163*f126890aSEmmanuel Vadot					 * compatible = "onnn,pca9655",
164*f126890aSEmmanuel Vadot					 *	 "nxp,pca9555";
165*f126890aSEmmanuel Vadot					 * but you can't do this because of
166*f126890aSEmmanuel Vadot					 * the way I2C works.
167*f126890aSEmmanuel Vadot					 */
168*f126890aSEmmanuel Vadot					compatible = "nxp,pca9555";
169*f126890aSEmmanuel Vadot					gpio-controller;
170*f126890aSEmmanuel Vadot					#gpio-cells = <2>;
171*f126890aSEmmanuel Vadot					reg = <0x20>;
172*f126890aSEmmanuel Vadot					pinctrl-names = "default";
173*f126890aSEmmanuel Vadot					pinctrl-0 = <&pca0_pins>;
174*f126890aSEmmanuel Vadot					interrupt-parent = <&gpio0>;
175*f126890aSEmmanuel Vadot					interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
176*f126890aSEmmanuel Vadot					interrupt-controller;
177*f126890aSEmmanuel Vadot					#interrupt-cells = <2>;
178*f126890aSEmmanuel Vadot
179*f126890aSEmmanuel Vadot					board-rev-bit-0-hog {
180*f126890aSEmmanuel Vadot						gpio-hog;
181*f126890aSEmmanuel Vadot						gpios = <0 GPIO_ACTIVE_LOW>;
182*f126890aSEmmanuel Vadot						input;
183*f126890aSEmmanuel Vadot						line-name = "board-rev-0";
184*f126890aSEmmanuel Vadot					};
185*f126890aSEmmanuel Vadot					board-rev-bit-1-hog {
186*f126890aSEmmanuel Vadot						gpio-hog;
187*f126890aSEmmanuel Vadot						gpios = <1 GPIO_ACTIVE_LOW>;
188*f126890aSEmmanuel Vadot						input;
189*f126890aSEmmanuel Vadot						line-name = "board-rev-1";
190*f126890aSEmmanuel Vadot					};
191*f126890aSEmmanuel Vadot					usb3-ilimit-hog {
192*f126890aSEmmanuel Vadot						gpio-hog;
193*f126890aSEmmanuel Vadot						gpios = <5 GPIO_ACTIVE_HIGH>;
194*f126890aSEmmanuel Vadot						input;
195*f126890aSEmmanuel Vadot						line-name = "usb-overcurrent-status";
196*f126890aSEmmanuel Vadot					};
197*f126890aSEmmanuel Vadot				};
198*f126890aSEmmanuel Vadot
199*f126890aSEmmanuel Vadot				temp_sensor: temp@4c {
200*f126890aSEmmanuel Vadot					compatible = "ti,lm75";
201*f126890aSEmmanuel Vadot					reg = <0x4c>;
202*f126890aSEmmanuel Vadot					vcc-supply = <&reg_3p3v>;
203*f126890aSEmmanuel Vadot				};
204*f126890aSEmmanuel Vadot			};
205*f126890aSEmmanuel Vadot
206*f126890aSEmmanuel Vadot			i2c@11100 {
207*f126890aSEmmanuel Vadot				/*
208*f126890aSEmmanuel Vadot				 * External I2C Bus for user peripheral
209*f126890aSEmmanuel Vadot				 */
210*f126890aSEmmanuel Vadot				clock-frequency = <400000>;
211*f126890aSEmmanuel Vadot				pinctrl-0 = <&helios_i2c1_pins>;
212*f126890aSEmmanuel Vadot				pinctrl-names = "default";
213*f126890aSEmmanuel Vadot				status = "okay";
214*f126890aSEmmanuel Vadot			};
215*f126890aSEmmanuel Vadot
216*f126890aSEmmanuel Vadot			sata@a8000 {
217*f126890aSEmmanuel Vadot				status = "okay";
218*f126890aSEmmanuel Vadot				#address-cells = <1>;
219*f126890aSEmmanuel Vadot				#size-cells = <0>;
220*f126890aSEmmanuel Vadot
221*f126890aSEmmanuel Vadot				sata0: sata-port@0 {
222*f126890aSEmmanuel Vadot					reg = <0>;
223*f126890aSEmmanuel Vadot				};
224*f126890aSEmmanuel Vadot
225*f126890aSEmmanuel Vadot				sata1: sata-port@1 {
226*f126890aSEmmanuel Vadot					reg = <1>;
227*f126890aSEmmanuel Vadot				};
228*f126890aSEmmanuel Vadot			};
229*f126890aSEmmanuel Vadot
230*f126890aSEmmanuel Vadot			sata@e0000 {
231*f126890aSEmmanuel Vadot				status = "okay";
232*f126890aSEmmanuel Vadot				#address-cells = <1>;
233*f126890aSEmmanuel Vadot				#size-cells = <0>;
234*f126890aSEmmanuel Vadot
235*f126890aSEmmanuel Vadot				sata2: sata-port@0 {
236*f126890aSEmmanuel Vadot					reg = <0>;
237*f126890aSEmmanuel Vadot				};
238*f126890aSEmmanuel Vadot
239*f126890aSEmmanuel Vadot				sata3: sata-port@1 {
240*f126890aSEmmanuel Vadot					reg = <1>;
241*f126890aSEmmanuel Vadot				};
242*f126890aSEmmanuel Vadot			};
243*f126890aSEmmanuel Vadot
244*f126890aSEmmanuel Vadot			spi@10680 {
245*f126890aSEmmanuel Vadot				pinctrl-0 = <&spi1_pins
246*f126890aSEmmanuel Vadot					     &microsom_spi1_cs_pins>;
247*f126890aSEmmanuel Vadot				pinctrl-names = "default";
248*f126890aSEmmanuel Vadot				status = "okay";
249*f126890aSEmmanuel Vadot			};
250*f126890aSEmmanuel Vadot
251*f126890aSEmmanuel Vadot			sdhci@d8000 {
252*f126890aSEmmanuel Vadot				bus-width = <4>;
253*f126890aSEmmanuel Vadot				cd-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
254*f126890aSEmmanuel Vadot				no-1-8-v;
255*f126890aSEmmanuel Vadot				pinctrl-0 = <&helios_sdhci_pins
256*f126890aSEmmanuel Vadot					     &helios_sdhci_cd_pins>;
257*f126890aSEmmanuel Vadot				pinctrl-names = "default";
258*f126890aSEmmanuel Vadot				status = "okay";
259*f126890aSEmmanuel Vadot				vmmc = <&reg_3p3v>;
260*f126890aSEmmanuel Vadot				wp-inverted;
261*f126890aSEmmanuel Vadot			};
262*f126890aSEmmanuel Vadot
263*f126890aSEmmanuel Vadot			usb@58000 {
264*f126890aSEmmanuel Vadot				usb-phy = <&usb2_phy>;
265*f126890aSEmmanuel Vadot				status = "okay";
266*f126890aSEmmanuel Vadot			};
267*f126890aSEmmanuel Vadot
268*f126890aSEmmanuel Vadot			usb3@f0000 {
269*f126890aSEmmanuel Vadot				status = "okay";
270*f126890aSEmmanuel Vadot			};
271*f126890aSEmmanuel Vadot
272*f126890aSEmmanuel Vadot			usb3@f8000 {
273*f126890aSEmmanuel Vadot				status = "okay";
274*f126890aSEmmanuel Vadot			};
275*f126890aSEmmanuel Vadot
276*f126890aSEmmanuel Vadot			pinctrl@18000 {
277*f126890aSEmmanuel Vadot				pca0_pins: pca0-pins {
278*f126890aSEmmanuel Vadot					marvell,pins = "mpp23";
279*f126890aSEmmanuel Vadot					marvell,function = "gpio";
280*f126890aSEmmanuel Vadot				};
281*f126890aSEmmanuel Vadot				microsom_phy0_int_pins: microsom-phy0-int-pins {
282*f126890aSEmmanuel Vadot					marvell,pins = "mpp18";
283*f126890aSEmmanuel Vadot					marvell,function = "gpio";
284*f126890aSEmmanuel Vadot				};
285*f126890aSEmmanuel Vadot				helios_i2c1_pins: i2c1-pins {
286*f126890aSEmmanuel Vadot					marvell,pins = "mpp26", "mpp27";
287*f126890aSEmmanuel Vadot					marvell,function = "i2c1";
288*f126890aSEmmanuel Vadot				};
289*f126890aSEmmanuel Vadot				helios_sdhci_cd_pins: helios-sdhci-cd-pins {
290*f126890aSEmmanuel Vadot					marvell,pins = "mpp20";
291*f126890aSEmmanuel Vadot					marvell,function = "gpio";
292*f126890aSEmmanuel Vadot				};
293*f126890aSEmmanuel Vadot				helios_sdhci_pins: helios-sdhci-pins {
294*f126890aSEmmanuel Vadot					marvell,pins = "mpp21", "mpp28",
295*f126890aSEmmanuel Vadot						       "mpp37", "mpp38",
296*f126890aSEmmanuel Vadot						       "mpp39", "mpp40";
297*f126890aSEmmanuel Vadot					marvell,function = "sd0";
298*f126890aSEmmanuel Vadot				};
299*f126890aSEmmanuel Vadot				helios_system_led_pins: helios-system-led-pins {
300*f126890aSEmmanuel Vadot					marvell,pins = "mpp24", "mpp25";
301*f126890aSEmmanuel Vadot					marvell,function = "gpio";
302*f126890aSEmmanuel Vadot				};
303*f126890aSEmmanuel Vadot				helios_io_led_pins: helios-io-led-pins {
304*f126890aSEmmanuel Vadot					marvell,pins = "mpp49", "mpp50",
305*f126890aSEmmanuel Vadot						       "mpp52", "mpp53",
306*f126890aSEmmanuel Vadot						       "mpp54";
307*f126890aSEmmanuel Vadot					marvell,function = "gpio";
308*f126890aSEmmanuel Vadot				};
309*f126890aSEmmanuel Vadot				helios_fan1_pins: helios_fan1_pins {
310*f126890aSEmmanuel Vadot					marvell,pins = "mpp41", "mpp43";
311*f126890aSEmmanuel Vadot					marvell,function = "gpio";
312*f126890aSEmmanuel Vadot				};
313*f126890aSEmmanuel Vadot				helios_fan2_pins: helios_fan2_pins {
314*f126890aSEmmanuel Vadot					marvell,pins = "mpp48", "mpp55";
315*f126890aSEmmanuel Vadot					marvell,function = "gpio";
316*f126890aSEmmanuel Vadot				};
317*f126890aSEmmanuel Vadot				microsom_spi1_cs_pins: spi1-cs-pins {
318*f126890aSEmmanuel Vadot					marvell,pins = "mpp59";
319*f126890aSEmmanuel Vadot					marvell,function = "spi1";
320*f126890aSEmmanuel Vadot				};
321*f126890aSEmmanuel Vadot			};
322*f126890aSEmmanuel Vadot		};
323*f126890aSEmmanuel Vadot	};
324*f126890aSEmmanuel Vadot};
325