Merge branch 'for-5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
[linux-2.6-microblaze.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                 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                                 /*
144                                  * PCA9655 GPIO expander, up to 1MHz clock.
145                                  *  0-Board Revision bit 0 #
146                                  *  1-Board Revision bit 1 #
147                                  *  5-USB3 overcurrent
148                                  *  6-USB3 power
149                                  */
150                                 expander0: gpio-expander@20 {
151                                         /*
152                                          * This is how it should be:
153                                          * compatible = "onnn,pca9655",
154                                          *       "nxp,pca9555";
155                                          * but you can't do this because of
156                                          * the way I2C works.
157                                          */
158                                         compatible = "nxp,pca9555";
159                                         gpio-controller;
160                                         #gpio-cells = <2>;
161                                         reg = <0x20>;
162                                         pinctrl-names = "default";
163                                         pinctrl-0 = <&pca0_pins>;
164                                         interrupt-parent = <&gpio0>;
165                                         interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
166                                         interrupt-controller;
167                                         #interrupt-cells = <2>;
168
169                                         board-rev-bit-0-hog {
170                                                 gpio-hog;
171                                                 gpios = <0 GPIO_ACTIVE_LOW>;
172                                                 input;
173                                                 line-name = "board-rev-0";
174                                         };
175                                         board-rev-bit-1-hog {
176                                                 gpio-hog;
177                                                 gpios = <1 GPIO_ACTIVE_LOW>;
178                                                 input;
179                                                 line-name = "board-rev-1";
180                                         };
181                                         usb3-ilimit-hog {
182                                                 gpio-hog;
183                                                 gpios = <5 GPIO_ACTIVE_HIGH>;
184                                                 input;
185                                                 line-name = "usb-overcurrent-status";
186                                         };
187                                 };
188
189                                 temp_sensor: temp@4c {
190                                         compatible = "ti,lm75";
191                                         reg = <0x4c>;
192                                         vcc-supply = <&reg_3p3v>;
193                                 };
194                         };
195
196                         i2c@11100 {
197                                 /*
198                                  * External I2C Bus for user peripheral
199                                  */
200                                 clock-frequency = <400000>;
201                                 pinctrl-0 = <&helios_i2c1_pins>;
202                                 pinctrl-names = "default";
203                                 status = "okay";
204                         };
205
206                         sata@a8000 {
207                                 status = "okay";
208                                 #address-cells = <1>;
209                                 #size-cells = <0>;
210
211                                 sata0: sata-port@0 {
212                                         reg = <0>;
213                                 };
214
215                                 sata1: sata-port@1 {
216                                         reg = <1>;
217                                 };
218                         };
219
220                         sata@e0000 {
221                                 status = "okay";
222                                 #address-cells = <1>;
223                                 #size-cells = <0>;
224
225                                 sata2: sata-port@0 {
226                                         reg = <0>;
227                                 };
228
229                                 sata3: sata-port@1 {
230                                         reg = <1>;
231                                 };
232                         };
233
234                         spi@10680 {
235                                 pinctrl-0 = <&spi1_pins
236                                              &microsom_spi1_cs_pins>;
237                                 pinctrl-names = "default";
238                                 status = "okay";
239                         };
240
241                         sdhci@d8000 {
242                                 bus-width = <4>;
243                                 cd-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
244                                 no-1-8-v;
245                                 pinctrl-0 = <&helios_sdhci_pins
246                                              &helios_sdhci_cd_pins>;
247                                 pinctrl-names = "default";
248                                 status = "okay";
249                                 vmmc = <&reg_3p3v>;
250                                 wp-inverted;
251                         };
252
253                         usb@58000 {
254                                 usb-phy = <&usb2_phy>;
255                                 status = "okay";
256                         };
257
258                         usb3@f0000 {
259                                 status = "okay";
260                         };
261
262                         usb3@f8000 {
263                                 status = "okay";
264                         };
265
266                         pinctrl@18000 {
267                                 pca0_pins: pca0-pins {
268                                         marvell,pins = "mpp23";
269                                         marvell,function = "gpio";
270                                 };
271                                 microsom_phy0_int_pins: microsom-phy0-int-pins {
272                                         marvell,pins = "mpp18";
273                                         marvell,function = "gpio";
274                                 };
275                                 helios_i2c1_pins: i2c1-pins {
276                                         marvell,pins = "mpp26", "mpp27";
277                                         marvell,function = "i2c1";
278                                 };
279                                 helios_sdhci_cd_pins: helios-sdhci-cd-pins {
280                                         marvell,pins = "mpp20";
281                                         marvell,function = "gpio";
282                                 };
283                                 helios_sdhci_pins: helios-sdhci-pins {
284                                         marvell,pins = "mpp21", "mpp28",
285                                                        "mpp37", "mpp38",
286                                                        "mpp39", "mpp40";
287                                         marvell,function = "sd0";
288                                 };
289                                 helios_led_pins: helios-led-pins {
290                                         marvell,pins = "mpp24", "mpp25",
291                                                        "mpp49", "mpp50",
292                                                        "mpp52", "mpp53",
293                                                        "mpp54";
294                                         marvell,function = "gpio";
295                                 };
296                                 helios_fan_pins: helios-fan-pins {
297                                         marvell,pins = "mpp41", "mpp43",
298                                                        "mpp48", "mpp55";
299                                         marvell,function = "gpio";
300                                 };
301                                 microsom_spi1_cs_pins: spi1-cs-pins {
302                                         marvell,pins = "mpp59";
303                                         marvell,function = "spi1";
304                                 };
305                         };
306                 };
307         };
308 };