1b4b8f2c9SClément Péron// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2cabbaed7SClément Péron// Copyright (C) 2017 Jagan Teki <jteki@openedev.com>
3ea43d9b8SJagan Teki
4ea43d9b8SJagan Teki/dts-v1/;
5ea43d9b8SJagan Teki
6ea43d9b8SJagan Teki#include "sun50i-h5.dtsi"
7ea43d9b8SJagan Teki
8ea43d9b8SJagan Teki#include <dt-bindings/gpio/gpio.h>
9ea43d9b8SJagan Teki
10ea43d9b8SJagan Teki/ {
11ea43d9b8SJagan Teki	model = "OrangePi Zero Plus2";
12ea43d9b8SJagan Teki	compatible = "xunlong,orangepi-zero-plus2", "allwinner,sun50i-h5";
13ea43d9b8SJagan Teki
14ea43d9b8SJagan Teki	aliases {
15ea43d9b8SJagan Teki		serial0 = &uart0;
16ea43d9b8SJagan Teki	};
17ea43d9b8SJagan Teki
18ea43d9b8SJagan Teki	chosen {
19ea43d9b8SJagan Teki		stdout-path = "serial0:115200n8";
20ea43d9b8SJagan Teki	};
21ea43d9b8SJagan Teki
2222821975SJernej Skrabec	connector {
2322821975SJernej Skrabec		compatible = "hdmi-connector";
2422821975SJernej Skrabec		type = "a";
2522821975SJernej Skrabec
2622821975SJernej Skrabec		port {
2722821975SJernej Skrabec			hdmi_con_in: endpoint {
2822821975SJernej Skrabec				remote-endpoint = <&hdmi_out_con>;
2922821975SJernej Skrabec			};
3022821975SJernej Skrabec		};
3122821975SJernej Skrabec	};
3222821975SJernej Skrabec
33ea43d9b8SJagan Teki	reg_vcc3v3: vcc3v3 {
34ea43d9b8SJagan Teki		compatible = "regulator-fixed";
35ea43d9b8SJagan Teki		regulator-name = "vcc3v3";
36ea43d9b8SJagan Teki		regulator-min-microvolt = <3300000>;
37ea43d9b8SJagan Teki		regulator-max-microvolt = <3300000>;
38ea43d9b8SJagan Teki	};
39cf8e19e1SSergey Matyukevich
40cf8e19e1SSergey Matyukevich	wifi_pwrseq: wifi_pwrseq {
41cf8e19e1SSergey Matyukevich		compatible = "mmc-pwrseq-simple";
42cf8e19e1SSergey Matyukevich		reset-gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */
43cf8e19e1SSergey Matyukevich		post-power-on-delay-ms = <200>;
44cf8e19e1SSergey Matyukevich	};
45ea43d9b8SJagan Teki};
46ea43d9b8SJagan Teki
4722821975SJernej Skrabec&de {
4822821975SJernej Skrabec	status = "okay";
4922821975SJernej Skrabec};
5022821975SJernej Skrabec
5143aad09cSDiego Rondini&ehci0 {
5243aad09cSDiego Rondini	status = "okay";
5343aad09cSDiego Rondini};
5443aad09cSDiego Rondini
5522821975SJernej Skrabec&hdmi {
5622821975SJernej Skrabec	status = "okay";
5722821975SJernej Skrabec};
5822821975SJernej Skrabec
5922821975SJernej Skrabec&hdmi_out {
6022821975SJernej Skrabec	hdmi_out_con: endpoint {
6122821975SJernej Skrabec		remote-endpoint = <&hdmi_con_in>;
6222821975SJernej Skrabec	};
6322821975SJernej Skrabec};
6422821975SJernej Skrabec
65ea43d9b8SJagan Teki&mmc0 {
66ea43d9b8SJagan Teki	vmmc-supply = <&reg_vcc3v3>;
67ea43d9b8SJagan Teki	bus-width = <4>;
68f88e9301SSergey Matyukevich	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
69ea43d9b8SJagan Teki	status = "okay";
70ea43d9b8SJagan Teki};
71ea43d9b8SJagan Teki
72cf8e19e1SSergey Matyukevich&mmc1 {
73cf8e19e1SSergey Matyukevich	vmmc-supply = <&reg_vcc3v3>;
74cf8e19e1SSergey Matyukevich	vqmmc-supply = <&reg_vcc3v3>;
75cf8e19e1SSergey Matyukevich	mmc-pwrseq = <&wifi_pwrseq>;
76cf8e19e1SSergey Matyukevich	bus-width = <4>;
77cf8e19e1SSergey Matyukevich	non-removable;
78cf8e19e1SSergey Matyukevich	status = "okay";
79cf8e19e1SSergey Matyukevich
80cf8e19e1SSergey Matyukevich	brcmf: wifi@1 {
81cf8e19e1SSergey Matyukevich		reg = <1>;
82cf8e19e1SSergey Matyukevich		compatible = "brcm,bcm4329-fmac";
83cf8e19e1SSergey Matyukevich		interrupt-parent = <&r_pio>;
84cf8e19e1SSergey Matyukevich		interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>;	/* PL7 */
85cf8e19e1SSergey Matyukevich		interrupt-names = "host-wake";
86cf8e19e1SSergey Matyukevich	};
87cf8e19e1SSergey Matyukevich};
88cf8e19e1SSergey Matyukevich
89ea43d9b8SJagan Teki&mmc2 {
90ea43d9b8SJagan Teki	pinctrl-names = "default";
91ea43d9b8SJagan Teki	pinctrl-0 = <&mmc2_8bit_pins>;
92ea43d9b8SJagan Teki	vmmc-supply = <&reg_vcc3v3>;
93ea43d9b8SJagan Teki	bus-width = <8>;
94ea43d9b8SJagan Teki	non-removable;
95ea43d9b8SJagan Teki	cap-mmc-hw-reset;
96ea43d9b8SJagan Teki	status = "okay";
97ea43d9b8SJagan Teki};
98ea43d9b8SJagan Teki
9943aad09cSDiego Rondini&ohci0 {
10043aad09cSDiego Rondini	status = "okay";
10143aad09cSDiego Rondini};
10243aad09cSDiego Rondini
103ea43d9b8SJagan Teki&uart0 {
104ea43d9b8SJagan Teki	pinctrl-names = "default";
105a4dc7919SMaxime Ripard	pinctrl-0 = <&uart0_pa_pins>;
106ea43d9b8SJagan Teki	status = "okay";
107ea43d9b8SJagan Teki};
108cf8e19e1SSergey Matyukevich
109cf8e19e1SSergey Matyukevich&uart1 {
110cf8e19e1SSergey Matyukevich	pinctrl-names = "default";
111cf8e19e1SSergey Matyukevich	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
112cf8e19e1SSergey Matyukevich	status = "okay";
113cf8e19e1SSergey Matyukevich};
11443aad09cSDiego Rondini
11543aad09cSDiego Rondini&usb_otg {
11643aad09cSDiego Rondini	/*
11743aad09cSDiego Rondini	 * According to schematics CN1 MicroUSB port can be used to take
11843aad09cSDiego Rondini	 * external 5V to power up the board VBUS. On the contrary CN1 MicroUSB
11943aad09cSDiego Rondini	 * port cannot provide power externally even if the board is powered
12043aad09cSDiego Rondini	 * via GPIO pins. It thus makes sense to force peripheral mode.
12143aad09cSDiego Rondini	 */
12243aad09cSDiego Rondini	dr_mode = "peripheral";
12343aad09cSDiego Rondini	status = "okay";
12443aad09cSDiego Rondini};
12543aad09cSDiego Rondini
12643aad09cSDiego Rondini&usbphy {
12743aad09cSDiego Rondini	status = "okay";
12843aad09cSDiego Rondini};
129