Merge tag 'linux-kselftest-kunit-5.15-rc1' of git://git.kernel.org/pub/scm/linux...
[linux-2.6-microblaze.git] / arch / arm64 / boot / dts / allwinner / sun50i-a64-orangepi-win.dts
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 // Copyright (C) 2017 Jagan Teki <jteki@openedev.com>
3 // Copyright (C) 2017-2018 Samuel Holland <samuel@sholland.org>
4
5 /dts-v1/;
6
7 #include "sun50i-a64.dtsi"
8 #include "sun50i-a64-cpu-opp.dtsi"
9
10 #include <dt-bindings/gpio/gpio.h>
11
12 / {
13         model = "OrangePi Win/Win Plus";
14         compatible = "xunlong,orangepi-win", "allwinner,sun50i-a64";
15
16         aliases {
17                 ethernet0 = &emac;
18                 serial0 = &uart0;
19                 serial1 = &uart1;
20                 serial2 = &uart2;
21                 serial3 = &uart3;
22                 serial4 = &uart4;
23         };
24
25         chosen {
26                 stdout-path = "serial0:115200n8";
27         };
28
29         hdmi-connector {
30                 compatible = "hdmi-connector";
31                 type = "a";
32
33                 port {
34                         hdmi_con_in: endpoint {
35                                 remote-endpoint = <&hdmi_out_con>;
36                         };
37                 };
38         };
39
40         leds {
41                 compatible = "gpio-leds";
42
43                 status {
44                         label = "orangepi:green:status";
45                         gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */
46                 };
47         };
48
49         reg_gmac_3v3: gmac-3v3 {
50                 compatible = "regulator-fixed";
51                 regulator-name = "gmac-3v3";
52                 regulator-min-microvolt = <3300000>;
53                 regulator-max-microvolt = <3300000>;
54                 regulator-boot-on;
55                 enable-active-high;
56                 gpio = <&pio 3 14 GPIO_ACTIVE_HIGH>; /* PD14 */
57                 status = "okay";
58         };
59
60         reg_usb1_vbus: usb1-vbus {
61                 compatible = "regulator-fixed";
62                 regulator-name = "usb1-vbus";
63                 regulator-min-microvolt = <5000000>;
64                 regulator-max-microvolt = <5000000>;
65                 regulator-boot-on;
66                 enable-active-high;
67                 gpio = <&pio 3 7 GPIO_ACTIVE_HIGH>; /* PD7 */
68                 status = "okay";
69         };
70
71         wifi_pwrseq: wifi_pwrseq {
72                 compatible = "mmc-pwrseq-simple";
73                 reset-gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */
74                 clocks = <&rtc 1>;
75                 clock-names = "ext_clock";
76         };
77 };
78
79 &codec {
80         status = "okay";
81 };
82
83 &codec_analog {
84         cpvdd-supply = <&reg_eldo1>;
85         status = "okay";
86 };
87
88 &cpu0 {
89         cpu-supply = <&reg_dcdc2>;
90 };
91
92 &cpu1 {
93         cpu-supply = <&reg_dcdc2>;
94 };
95
96 &cpu2 {
97         cpu-supply = <&reg_dcdc2>;
98 };
99
100 &cpu3 {
101         cpu-supply = <&reg_dcdc2>;
102 };
103
104 &dai {
105         status = "okay";
106 };
107
108 &de {
109         status = "okay";
110 };
111
112 &ehci0 {
113         status = "okay";
114 };
115
116 &ehci1 {
117         status = "okay";
118 };
119
120 &emac {
121         pinctrl-names = "default";
122         pinctrl-0 = <&rgmii_pins>;
123         phy-mode = "rgmii-id";
124         phy-handle = <&ext_rgmii_phy>;
125         phy-supply = <&reg_gmac_3v3>;
126         status = "okay";
127 };
128
129 &hdmi {
130         hvcc-supply = <&reg_dldo1>;
131         status = "okay";
132 };
133
134 &hdmi_out {
135         hdmi_out_con: endpoint {
136                 remote-endpoint = <&hdmi_con_in>;
137         };
138 };
139
140 &mdio {
141         ext_rgmii_phy: ethernet-phy@1 {
142                 compatible = "ethernet-phy-ieee802.3-c22";
143                 reg = <1>;
144         };
145 };
146
147 &mmc0 {
148         pinctrl-names = "default";
149         pinctrl-0 = <&mmc0_pins>;
150         vmmc-supply = <&reg_dcdc1>;
151         cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
152         disable-wp;
153         bus-width = <4>;
154         status = "okay";
155 };
156
157 &mmc1 {
158         pinctrl-names = "default";
159         pinctrl-0 = <&mmc1_pins>;
160         vmmc-supply = <&reg_dldo2>;
161         vqmmc-supply = <&reg_dldo4>;
162         mmc-pwrseq = <&wifi_pwrseq>;
163         bus-width = <4>;
164         non-removable;
165         status = "okay";
166
167         brcmf: wifi@1 {
168                 reg = <1>;
169                 compatible = "brcm,bcm4329-fmac";
170                 interrupt-parent = <&r_pio>;
171                 interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>; /* PL7 */
172                 interrupt-names = "host-wake";
173         };
174 };
175
176 &ohci0 {
177         status = "okay";
178 };
179
180 &ohci1 {
181         status = "okay";
182 };
183
184 &r_ir {
185         status = "okay";
186 };
187
188 &r_rsb {
189         status = "okay";
190
191         axp803: pmic@3a3 {
192                 compatible = "x-powers,axp803";
193                 reg = <0x3a3>;
194                 interrupt-parent = <&r_intc>;
195                 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
196                 x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */
197         };
198 };
199
200 #include "axp803.dtsi"
201
202 &ac_power_supply {
203         status = "okay";
204 };
205
206 &battery_power_supply {
207         status = "okay";
208 };
209
210 &reg_aldo1 {
211         regulator-min-microvolt = <2800000>;
212         regulator-max-microvolt = <2800000>;
213         regulator-name = "afvcc-csi";
214 };
215
216 &reg_aldo2 {
217         regulator-always-on;
218         regulator-min-microvolt = <1800000>;
219         regulator-max-microvolt = <3300000>;
220         regulator-name = "vcc-pl";
221 };
222
223 &reg_aldo3 {
224         regulator-always-on;
225         regulator-min-microvolt = <3000000>;
226         regulator-max-microvolt = <3000000>;
227         regulator-name = "vcc-pll-avcc";
228 };
229
230 &reg_dcdc1 {
231         regulator-always-on;
232         regulator-min-microvolt = <3300000>;
233         regulator-max-microvolt = <3300000>;
234         regulator-name = "vcc-3v3";
235 };
236
237 &reg_dcdc2 {
238         regulator-always-on;
239         regulator-min-microvolt = <1040000>;
240         regulator-max-microvolt = <1300000>;
241         regulator-name = "vdd-cpux";
242 };
243
244 /* DCDC3 is polyphased with DCDC2 */
245
246 &reg_dcdc5 {
247         regulator-always-on;
248         regulator-min-microvolt = <1500000>;
249         regulator-max-microvolt = <1500000>;
250         regulator-name = "vcc-dram";
251 };
252
253 &reg_dcdc6 {
254         regulator-always-on;
255         regulator-min-microvolt = <1100000>;
256         regulator-max-microvolt = <1100000>;
257         regulator-name = "vdd-sys";
258 };
259
260 &reg_dldo1 {
261         regulator-min-microvolt = <3300000>;
262         regulator-max-microvolt = <3300000>;
263         regulator-name = "vcc-hdmi-dsi";
264 };
265
266 &reg_dldo2 {
267         regulator-min-microvolt = <3300000>;
268         regulator-max-microvolt = <3300000>;
269         regulator-name = "vcc-wifi";
270 };
271
272 &reg_dldo3 {
273         regulator-min-microvolt = <3300000>;
274         regulator-max-microvolt = <3300000>;
275         regulator-name = "avdd-csi";
276 };
277
278 &reg_dldo4 {
279         regulator-min-microvolt = <3300000>;
280         regulator-max-microvolt = <3300000>;
281         regulator-name = "vcc-wifi-io";
282 };
283
284 &reg_drivevbus {
285         regulator-name = "usb0-vbus";
286         status = "okay";
287 };
288
289 &reg_eldo1 {
290         regulator-min-microvolt = <1800000>;
291         regulator-max-microvolt = <1800000>;
292         regulator-name = "cpvdd";
293 };
294
295 &reg_eldo3 {
296         regulator-min-microvolt = <1500000>;
297         regulator-max-microvolt = <1800000>;
298         regulator-name = "dvdd-csi";
299 };
300
301 &reg_fldo1 {
302         regulator-min-microvolt = <1200000>;
303         regulator-max-microvolt = <1200000>;
304         regulator-name = "vcc-1v2-hsic";
305 };
306
307 /*
308  * The A64 chip cannot work without this regulator off, although
309  * it seems to be only driving the AR100 core.
310  * Maybe we don't still know well about CPUs domain.
311  */
312 &reg_fldo2 {
313         regulator-always-on;
314         regulator-min-microvolt = <1100000>;
315         regulator-max-microvolt = <1100000>;
316         regulator-name = "vdd-cpus";
317 };
318
319 &reg_rtc_ldo {
320         regulator-name = "vcc-rtc";
321 };
322
323 &simplefb_hdmi {
324         vcc-hdmi-supply = <&reg_dldo1>;
325 };
326
327 &sound {
328         status = "okay";
329         simple-audio-card,widgets = "Headphone", "Headphone Jack",
330                                     "Microphone", "Microphone Jack",
331                                     "Microphone", "Onboard Microphone";
332         simple-audio-card,routing =
333                         "Left DAC", "DACL",
334                         "Right DAC", "DACR",
335                         "ADCL", "Left ADC",
336                         "ADCR", "Right ADC",
337                         "Headphone Jack", "HP",
338                         "MIC2", "Microphone Jack",
339                         "Onboard Microphone", "MBIAS",
340                         "MIC1", "Onboard Microphone";
341 };
342
343 &spi0 {
344         status = "okay";
345
346         spi-flash@0 {
347                 compatible = "mxicy,mx25l1606e", "jedec,spi-nor";
348                 reg = <0>;
349                 spi-max-frequency = <80000000>;
350                 m25p,fast-read;
351                 status = "okay";
352         };
353 };
354
355 /* On debug connector */
356 &uart0 {
357         pinctrl-names = "default";
358         pinctrl-0 = <&uart0_pb_pins>;
359         status = "okay";
360 };
361
362 /* Bluetooth */
363 &uart1 {
364         pinctrl-names = "default";
365         pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
366         uart-has-rtscts;
367         status = "okay";
368
369         bluetooth {
370                 compatible = "brcm,bcm43438-bt";
371                 max-speed = <1500000>;
372                 clocks = <&rtc 1>;
373                 clock-names = "lpo";
374                 vbat-supply = <&reg_dldo2>;
375                 vddio-supply = <&reg_dldo4>;
376                 device-wakeup-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
377                 host-wakeup-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */
378                 shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
379         };
380 };
381
382 /* On Pi-2 connector, RTS/CTS optional */
383 &uart2 {
384         pinctrl-names = "default";
385         pinctrl-0 = <&uart2_pins>;
386         status = "disabled";
387 };
388
389 /* On Pi-2 connector, RTS/CTS optional */
390 &uart3 {
391         pinctrl-names = "default";
392         pinctrl-0 = <&uart3_pins>;
393         status = "disabled";
394 };
395
396 /* On Pi-2 connector (labeled for SPI1), RTS/CTS optional */
397 &uart4 {
398         pinctrl-names = "default";
399         pinctrl-0 = <&uart4_pins>;
400         status = "disabled";
401 };
402
403 &usb_otg {
404         dr_mode = "otg";
405         status = "okay";
406 };
407
408 &usbphy {
409         usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
410         usb0_vbus-supply = <&reg_drivevbus>;
411         usb1_vbus-supply = <&reg_usb1_vbus>;
412         status = "okay";
413 };