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";
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 = <0 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", "AIF1 Slot 0 Left",
334			"Right DAC", "AIF1 Slot 0 Right",
335			"AIF1 Slot 0 Left ADC", "Left ADC",
336			"AIF1 Slot 0 Right ADC", "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};
414