1d6b1d7d8SJagan Teki/*
2d6b1d7d8SJagan Teki * Copyright (C) 2017 Jagan Teki <jteki@openedev.com>
3d6b1d7d8SJagan Teki *
4d6b1d7d8SJagan Teki * This file is dual-licensed: you can use it either under the terms
5d6b1d7d8SJagan Teki * of the GPL or the X11 license, at your option. Note that this dual
6d6b1d7d8SJagan Teki * licensing only applies to this file, and not this project as a
7d6b1d7d8SJagan Teki * whole.
8d6b1d7d8SJagan Teki *
9d6b1d7d8SJagan Teki *  a) This library is free software; you can redistribute it and/or
10d6b1d7d8SJagan Teki *     modify it under the terms of the GNU General Public License as
11d6b1d7d8SJagan Teki *     published by the Free Software Foundation; either version 2 of the
12d6b1d7d8SJagan Teki *     License, or (at your option) any later version.
13d6b1d7d8SJagan Teki *
14d6b1d7d8SJagan Teki *     This library is distributed in the hope that it will be useful,
15d6b1d7d8SJagan Teki *     but WITHOUT ANY WARRANTY; without even the implied warranty of
16d6b1d7d8SJagan Teki *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17d6b1d7d8SJagan Teki *     GNU General Public License for more details.
18d6b1d7d8SJagan Teki *
19d6b1d7d8SJagan Teki * Or, alternatively,
20d6b1d7d8SJagan Teki *
21d6b1d7d8SJagan Teki *  b) Permission is hereby granted, free of charge, to any person
22d6b1d7d8SJagan Teki *     obtaining a copy of this software and associated documentation
23d6b1d7d8SJagan Teki *     files (the "Software"), to deal in the Software without
24d6b1d7d8SJagan Teki *     restriction, including without limitation the rights to use,
25d6b1d7d8SJagan Teki *     copy, modify, merge, publish, distribute, sublicense, and/or
26d6b1d7d8SJagan Teki *     sell copies of the Software, and to permit persons to whom the
27d6b1d7d8SJagan Teki *     Software is furnished to do so, subject to the following
28d6b1d7d8SJagan Teki *     conditions:
29d6b1d7d8SJagan Teki *
30d6b1d7d8SJagan Teki *     The above copyright notice and this permission notice shall be
31d6b1d7d8SJagan Teki *     included in all copies or substantial portions of the Software.
32d6b1d7d8SJagan Teki *
33d6b1d7d8SJagan Teki *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
34d6b1d7d8SJagan Teki *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
35d6b1d7d8SJagan Teki *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
36d6b1d7d8SJagan Teki *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
37d6b1d7d8SJagan Teki *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
38d6b1d7d8SJagan Teki *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
39d6b1d7d8SJagan Teki *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
40d6b1d7d8SJagan Teki *     OTHER DEALINGS IN THE SOFTWARE.
41d6b1d7d8SJagan Teki */
42d6b1d7d8SJagan Teki
43d6b1d7d8SJagan Teki/dts-v1/;
44d6b1d7d8SJagan Teki
45d6b1d7d8SJagan Teki#include "sun50i-h5.dtsi"
46d6b1d7d8SJagan Teki
47d6b1d7d8SJagan Teki#include <dt-bindings/gpio/gpio.h>
48d6b1d7d8SJagan Teki
49d6b1d7d8SJagan Teki/ {
50d6b1d7d8SJagan Teki	model = "OrangePi Zero Plus2";
51d6b1d7d8SJagan Teki	compatible = "xunlong,orangepi-zero-plus2", "allwinner,sun50i-h5";
52d6b1d7d8SJagan Teki
53d6b1d7d8SJagan Teki	aliases {
54d6b1d7d8SJagan Teki		serial0 = &uart0;
55d6b1d7d8SJagan Teki	};
56d6b1d7d8SJagan Teki
57d6b1d7d8SJagan Teki	chosen {
58d6b1d7d8SJagan Teki		stdout-path = "serial0:115200n8";
59d6b1d7d8SJagan Teki	};
60d6b1d7d8SJagan Teki
61*1caeae37SAndre Przywara	connector {
62*1caeae37SAndre Przywara		compatible = "hdmi-connector";
63*1caeae37SAndre Przywara		type = "a";
64*1caeae37SAndre Przywara
65*1caeae37SAndre Przywara		port {
66*1caeae37SAndre Przywara			hdmi_con_in: endpoint {
67*1caeae37SAndre Przywara				remote-endpoint = <&hdmi_out_con>;
68*1caeae37SAndre Przywara			};
69*1caeae37SAndre Przywara		};
70*1caeae37SAndre Przywara	};
71*1caeae37SAndre Przywara
72d6b1d7d8SJagan Teki	reg_vcc3v3: vcc3v3 {
73d6b1d7d8SJagan Teki		compatible = "regulator-fixed";
74d6b1d7d8SJagan Teki		regulator-name = "vcc3v3";
75d6b1d7d8SJagan Teki		regulator-min-microvolt = <3300000>;
76d6b1d7d8SJagan Teki		regulator-max-microvolt = <3300000>;
77d6b1d7d8SJagan Teki	};
78*1caeae37SAndre Przywara
79*1caeae37SAndre Przywara	wifi_pwrseq: wifi_pwrseq {
80*1caeae37SAndre Przywara		compatible = "mmc-pwrseq-simple";
81*1caeae37SAndre Przywara		pinctrl-names = "default";
82*1caeae37SAndre Przywara		reset-gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */
83*1caeae37SAndre Przywara		post-power-on-delay-ms = <200>;
84*1caeae37SAndre Przywara	};
85*1caeae37SAndre Przywara};
86*1caeae37SAndre Przywara
87*1caeae37SAndre Przywara&de {
88*1caeae37SAndre Przywara	status = "okay";
89*1caeae37SAndre Przywara};
90*1caeae37SAndre Przywara
91*1caeae37SAndre Przywara&hdmi {
92*1caeae37SAndre Przywara	status = "okay";
93*1caeae37SAndre Przywara};
94*1caeae37SAndre Przywara
95*1caeae37SAndre Przywara&hdmi_out {
96*1caeae37SAndre Przywara	hdmi_out_con: endpoint {
97*1caeae37SAndre Przywara		remote-endpoint = <&hdmi_con_in>;
98*1caeae37SAndre Przywara	};
99d6b1d7d8SJagan Teki};
100d6b1d7d8SJagan Teki
101d6b1d7d8SJagan Teki&mmc0 {
102d6b1d7d8SJagan Teki	vmmc-supply = <&reg_vcc3v3>;
103d6b1d7d8SJagan Teki	bus-width = <4>;
104*1caeae37SAndre Przywara	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
105d6b1d7d8SJagan Teki	status = "okay";
106d6b1d7d8SJagan Teki};
107d6b1d7d8SJagan Teki
108*1caeae37SAndre Przywara&mmc1 {
109*1caeae37SAndre Przywara	vmmc-supply = <&reg_vcc3v3>;
110*1caeae37SAndre Przywara	vqmmc-supply = <&reg_vcc3v3>;
111*1caeae37SAndre Przywara	mmc-pwrseq = <&wifi_pwrseq>;
112*1caeae37SAndre Przywara	bus-width = <4>;
113*1caeae37SAndre Przywara	non-removable;
114*1caeae37SAndre Przywara	status = "okay";
115*1caeae37SAndre Przywara
116*1caeae37SAndre Przywara	brcmf: wifi@1 {
117*1caeae37SAndre Przywara		reg = <1>;
118*1caeae37SAndre Przywara		compatible = "brcm,bcm4329-fmac";
119*1caeae37SAndre Przywara		interrupt-parent = <&r_pio>;
120*1caeae37SAndre Przywara		interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>;	/* PL7 */
121*1caeae37SAndre Przywara		interrupt-names = "host-wake";
122*1caeae37SAndre Przywara	};
123*1caeae37SAndre Przywara};
124*1caeae37SAndre Przywara
125d6b1d7d8SJagan Teki&mmc2 {
126d6b1d7d8SJagan Teki	pinctrl-names = "default";
127d6b1d7d8SJagan Teki	pinctrl-0 = <&mmc2_8bit_pins>;
128d6b1d7d8SJagan Teki	vmmc-supply = <&reg_vcc3v3>;
129d6b1d7d8SJagan Teki	bus-width = <8>;
130d6b1d7d8SJagan Teki	non-removable;
131d6b1d7d8SJagan Teki	cap-mmc-hw-reset;
132d6b1d7d8SJagan Teki	status = "okay";
133d6b1d7d8SJagan Teki};
134d6b1d7d8SJagan Teki
135d6b1d7d8SJagan Teki&uart0 {
136d6b1d7d8SJagan Teki	pinctrl-names = "default";
137d6b1d7d8SJagan Teki	pinctrl-0 = <&uart0_pins_a>;
138d6b1d7d8SJagan Teki	status = "okay";
139d6b1d7d8SJagan Teki};
140*1caeae37SAndre Przywara
141*1caeae37SAndre Przywara&uart1 {
142*1caeae37SAndre Przywara	pinctrl-names = "default";
143*1caeae37SAndre Przywara	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
144*1caeae37SAndre Przywara	status = "okay";
145*1caeae37SAndre Przywara};
146