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 = <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", "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};
414