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
3321a827bfSDiego Rondini	leds {
3421a827bfSDiego Rondini		compatible = "gpio-leds";
3521a827bfSDiego Rondini
36*e299e6ddSMaxime Ripard		led-0 {
3721a827bfSDiego Rondini			label = "orangepi:green:pwr";
3821a827bfSDiego Rondini			gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
3921a827bfSDiego Rondini			default-state = "on";
4021a827bfSDiego Rondini		};
4121a827bfSDiego Rondini
42*e299e6ddSMaxime Ripard		led-1 {
4321a827bfSDiego Rondini			label = "orangepi:red:status";
4421a827bfSDiego Rondini			gpios = <&pio 0 17 GPIO_ACTIVE_HIGH>;
4521a827bfSDiego Rondini		};
4621a827bfSDiego Rondini	};
4721a827bfSDiego Rondini
48ea43d9b8SJagan Teki	reg_vcc3v3: vcc3v3 {
49ea43d9b8SJagan Teki		compatible = "regulator-fixed";
50ea43d9b8SJagan Teki		regulator-name = "vcc3v3";
51ea43d9b8SJagan Teki		regulator-min-microvolt = <3300000>;
52ea43d9b8SJagan Teki		regulator-max-microvolt = <3300000>;
53ea43d9b8SJagan Teki	};
54cf8e19e1SSergey Matyukevich
55cf8e19e1SSergey Matyukevich	wifi_pwrseq: wifi_pwrseq {
56cf8e19e1SSergey Matyukevich		compatible = "mmc-pwrseq-simple";
57cf8e19e1SSergey Matyukevich		reset-gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */
58cf8e19e1SSergey Matyukevich		post-power-on-delay-ms = <200>;
59cf8e19e1SSergey Matyukevich	};
60ea43d9b8SJagan Teki};
61ea43d9b8SJagan Teki
6222821975SJernej Skrabec&de {
6322821975SJernej Skrabec	status = "okay";
6422821975SJernej Skrabec};
6522821975SJernej Skrabec
6643aad09cSDiego Rondini&ehci0 {
6743aad09cSDiego Rondini	status = "okay";
6843aad09cSDiego Rondini};
6943aad09cSDiego Rondini
7022821975SJernej Skrabec&hdmi {
7122821975SJernej Skrabec	status = "okay";
7222821975SJernej Skrabec};
7322821975SJernej Skrabec
7422821975SJernej Skrabec&hdmi_out {
7522821975SJernej Skrabec	hdmi_out_con: endpoint {
7622821975SJernej Skrabec		remote-endpoint = <&hdmi_con_in>;
7722821975SJernej Skrabec	};
7822821975SJernej Skrabec};
7922821975SJernej Skrabec
80ea43d9b8SJagan Teki&mmc0 {
81ea43d9b8SJagan Teki	vmmc-supply = <&reg_vcc3v3>;
82ea43d9b8SJagan Teki	bus-width = <4>;
83f88e9301SSergey Matyukevich	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
84ea43d9b8SJagan Teki	status = "okay";
85ea43d9b8SJagan Teki};
86ea43d9b8SJagan Teki
87cf8e19e1SSergey Matyukevich&mmc1 {
88cf8e19e1SSergey Matyukevich	vmmc-supply = <&reg_vcc3v3>;
89cf8e19e1SSergey Matyukevich	vqmmc-supply = <&reg_vcc3v3>;
90cf8e19e1SSergey Matyukevich	mmc-pwrseq = <&wifi_pwrseq>;
91cf8e19e1SSergey Matyukevich	bus-width = <4>;
92cf8e19e1SSergey Matyukevich	non-removable;
93cf8e19e1SSergey Matyukevich	status = "okay";
94cf8e19e1SSergey Matyukevich
95cf8e19e1SSergey Matyukevich	brcmf: wifi@1 {
96cf8e19e1SSergey Matyukevich		reg = <1>;
97cf8e19e1SSergey Matyukevich		compatible = "brcm,bcm4329-fmac";
98cf8e19e1SSergey Matyukevich		interrupt-parent = <&r_pio>;
99cf8e19e1SSergey Matyukevich		interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>;	/* PL7 */
100cf8e19e1SSergey Matyukevich		interrupt-names = "host-wake";
101cf8e19e1SSergey Matyukevich	};
102cf8e19e1SSergey Matyukevich};
103cf8e19e1SSergey Matyukevich
104ea43d9b8SJagan Teki&mmc2 {
105ea43d9b8SJagan Teki	pinctrl-names = "default";
106ea43d9b8SJagan Teki	pinctrl-0 = <&mmc2_8bit_pins>;
107ea43d9b8SJagan Teki	vmmc-supply = <&reg_vcc3v3>;
108ea43d9b8SJagan Teki	bus-width = <8>;
109ea43d9b8SJagan Teki	non-removable;
110ea43d9b8SJagan Teki	cap-mmc-hw-reset;
111ea43d9b8SJagan Teki	status = "okay";
112ea43d9b8SJagan Teki};
113ea43d9b8SJagan Teki
11443aad09cSDiego Rondini&ohci0 {
11543aad09cSDiego Rondini	status = "okay";
11643aad09cSDiego Rondini};
11743aad09cSDiego Rondini
118ea43d9b8SJagan Teki&uart0 {
119ea43d9b8SJagan Teki	pinctrl-names = "default";
120a4dc7919SMaxime Ripard	pinctrl-0 = <&uart0_pa_pins>;
121ea43d9b8SJagan Teki	status = "okay";
122ea43d9b8SJagan Teki};
123cf8e19e1SSergey Matyukevich
124cf8e19e1SSergey Matyukevich&uart1 {
125cf8e19e1SSergey Matyukevich	pinctrl-names = "default";
126cf8e19e1SSergey Matyukevich	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
127cf8e19e1SSergey Matyukevich	status = "okay";
128cf8e19e1SSergey Matyukevich};
12943aad09cSDiego Rondini
13043aad09cSDiego Rondini&usb_otg {
13143aad09cSDiego Rondini	/*
13243aad09cSDiego Rondini	 * According to schematics CN1 MicroUSB port can be used to take
13343aad09cSDiego Rondini	 * external 5V to power up the board VBUS. On the contrary CN1 MicroUSB
13443aad09cSDiego Rondini	 * port cannot provide power externally even if the board is powered
13543aad09cSDiego Rondini	 * via GPIO pins. It thus makes sense to force peripheral mode.
13643aad09cSDiego Rondini	 */
13743aad09cSDiego Rondini	dr_mode = "peripheral";
13843aad09cSDiego Rondini	status = "okay";
13943aad09cSDiego Rondini};
14043aad09cSDiego Rondini
14143aad09cSDiego Rondini&usbphy {
14243aad09cSDiego Rondini	status = "okay";
14343aad09cSDiego Rondini};
144