blob: d729b7c705db54d9cf9f40cda299fc71abc1cef1 [file] [log] [blame]
Jun Nie8db67122018-10-27 13:11:00 +08001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io>
4 *
5 * Based on sun8i-h3-bananapi-m2-plus.dts, which is:
6 * Copyright (C) 2016 Chen-Yu Tsai <wens@csie.org>
7 */
8
9/dts-v1/;
10#include "sun8i-h3.dtsi"
11#include "sunxi-common-regulators.dtsi"
12
13#include <dt-bindings/gpio/gpio.h>
14#include <dt-bindings/input/input.h>
15
16/ {
17 model = "Banana Pi BPI-M2-Zero";
18 compatible = "sinovoip,bpi-m2-zero", "allwinner,sun8i-h2-plus";
19
20 aliases {
21 serial0 = &uart0;
22 serial1 = &uart1;
23 };
24
25 chosen {
26 stdout-path = "serial0:115200n8";
27 };
28
Samuel Hollandeef99ea2022-04-27 15:31:27 -050029 connector {
30 compatible = "hdmi-connector";
31 type = "c";
32
33 port {
34 hdmi_con_in: endpoint {
35 remote-endpoint = <&hdmi_out_con>;
36 };
37 };
38 };
39
Jun Nie8db67122018-10-27 13:11:00 +080040 leds {
41 compatible = "gpio-leds";
Jun Nie8db67122018-10-27 13:11:00 +080042
43 pwr_led {
44 label = "bananapi-m2-zero:red:pwr";
Andre Przywarac4b526c2021-05-25 01:20:25 +010045 gpios = <&r_pio 0 10 GPIO_ACTIVE_LOW>; /* PL10 */
Jun Nie8db67122018-10-27 13:11:00 +080046 default-state = "on";
47 };
48 };
49
Andre Przywarafa15e502022-09-13 00:52:52 +010050 gpio-keys {
Jun Nie8db67122018-10-27 13:11:00 +080051 compatible = "gpio-keys";
Jun Nie8db67122018-10-27 13:11:00 +080052
Andre Przywarafa15e502022-09-13 00:52:52 +010053 switch-4 {
Jun Nie8db67122018-10-27 13:11:00 +080054 label = "power";
Samuel Hollandeef99ea2022-04-27 15:31:27 -050055 linux,code = <KEY_POWER>;
Jun Nie8db67122018-10-27 13:11:00 +080056 gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>;
Samuel Hollandeef99ea2022-04-27 15:31:27 -050057 wakeup-source;
Jun Nie8db67122018-10-27 13:11:00 +080058 };
59 };
60
Chen-Yu Tsai8d7da692020-01-12 23:36:13 +080061 reg_vdd_cpux: vdd-cpux-regulator {
62 compatible = "regulator-gpio";
63 regulator-name = "vdd-cpux";
64 regulator-type = "voltage";
65 regulator-boot-on;
66 regulator-always-on;
67 regulator-min-microvolt = <1100000>;
68 regulator-max-microvolt = <1300000>;
69 regulator-ramp-delay = <50>; /* 4ms */
70
71 gpios = <&r_pio 0 1 GPIO_ACTIVE_HIGH>; /* PL1 */
72 enable-active-high;
73 gpios-states = <0x1>;
74 states = <1100000 0>, <1300000 1>;
75 };
76
Andre Przywarac4b526c2021-05-25 01:20:25 +010077 reg_vcc_dram: vcc-dram {
78 compatible = "regulator-fixed";
79 regulator-name = "vcc-dram";
80 regulator-min-microvolt = <1500000>;
81 regulator-max-microvolt = <1500000>;
82 regulator-always-on;
83 regulator-boot-on;
84 enable-active-high;
85 gpio = <&r_pio 0 9 GPIO_ACTIVE_HIGH>; /* PL9 */
86 vin-supply = <&reg_vcc5v0>;
87 };
88
89 reg_vcc1v2: vcc1v2 {
90 compatible = "regulator-fixed";
91 regulator-name = "vcc1v2";
92 regulator-min-microvolt = <1200000>;
93 regulator-max-microvolt = <1200000>;
94 regulator-always-on;
95 regulator-boot-on;
96 enable-active-high;
97 gpio = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */
98 vin-supply = <&reg_vcc5v0>;
99 };
100
101 poweroff {
102 compatible = "regulator-poweroff";
103 cpu-supply = <&reg_vcc1v2>;
104 };
105
Jun Nie8db67122018-10-27 13:11:00 +0800106 wifi_pwrseq: wifi_pwrseq {
107 compatible = "mmc-pwrseq-simple";
Jun Nie8db67122018-10-27 13:11:00 +0800108 reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
Andre Przywarafa15e502022-09-13 00:52:52 +0100109 clocks = <&rtc CLK_OSC32K_FANOUT>;
Chen-Yu Tsai8d7da692020-01-12 23:36:13 +0800110 clock-names = "ext_clock";
Jun Nie8db67122018-10-27 13:11:00 +0800111 };
112};
113
Chen-Yu Tsai8d7da692020-01-12 23:36:13 +0800114&cpu0 {
115 cpu-supply = <&reg_vdd_cpux>;
116};
117
Samuel Hollandeef99ea2022-04-27 15:31:27 -0500118&de {
119 status = "okay";
120};
121
Jun Nie8db67122018-10-27 13:11:00 +0800122&ehci0 {
123 status = "okay";
124};
125
Samuel Hollandeef99ea2022-04-27 15:31:27 -0500126&hdmi {
127 status = "okay";
128};
129
130&hdmi_out {
131 hdmi_out_con: endpoint {
132 remote-endpoint = <&hdmi_con_in>;
133 };
134};
135
Jun Nie8db67122018-10-27 13:11:00 +0800136&mmc0 {
137 vmmc-supply = <&reg_vcc3v3>;
138 bus-width = <4>;
139 /*
140 * On the production batch of this board the card detect GPIO is
141 * high active (card inserted), although on the early samples it's
142 * low active.
143 */
144 cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; /* PF6 */
145 status = "okay";
146};
147
148&mmc1 {
149 vmmc-supply = <&reg_vcc3v3>;
150 vqmmc-supply = <&reg_vcc3v3>;
151 mmc-pwrseq = <&wifi_pwrseq>;
152 bus-width = <4>;
153 non-removable;
154 status = "okay";
155
156 brcmf: wifi@1 {
157 reg = <1>;
158 compatible = "brcm,bcm4329-fmac";
159 interrupt-parent = <&pio>;
160 interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10 / EINT10 */
161 interrupt-names = "host-wake";
162 };
163};
164
165&ohci0 {
166 status = "okay";
167};
168
169&uart0 {
170 pinctrl-names = "default";
Chen-Yu Tsai8d7da692020-01-12 23:36:13 +0800171 pinctrl-0 = <&uart0_pa_pins>;
Jun Nie8db67122018-10-27 13:11:00 +0800172 status = "okay";
173};
174
175&uart1 {
176 pinctrl-names = "default";
177 pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
Chen-Yu Tsai8d7da692020-01-12 23:36:13 +0800178 uart-has-rtscts;
Jun Nie8db67122018-10-27 13:11:00 +0800179 status = "okay";
Chen-Yu Tsai8d7da692020-01-12 23:36:13 +0800180
181 bluetooth {
182 compatible = "brcm,bcm43438-bt";
Andre Przywarac4b526c2021-05-25 01:20:25 +0100183 max-speed = <1500000>;
Andre Przywarafa15e502022-09-13 00:52:52 +0100184 clocks = <&rtc CLK_OSC32K_FANOUT>;
Chen-Yu Tsai8d7da692020-01-12 23:36:13 +0800185 clock-names = "lpo";
186 vbat-supply = <&reg_vcc3v3>;
187 vddio-supply = <&reg_vcc3v3>;
188 device-wakeup-gpios = <&pio 6 13 GPIO_ACTIVE_HIGH>; /* PG13 */
189 host-wakeup-gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */
190 shutdown-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
191 };
192
Andre Przywarac4b526c2021-05-25 01:20:25 +0100193};
194
195&pio {
196 gpio-line-names =
197 /* PA */
198 "CON2-P13", "CON2-P11", "CON2-P22", "CON2-P15",
199 "CON3-P03", "CON3-P02", "CON2-P07", "CON2-P29",
200 "CON2-P31", "CON2-P33", "CON2-P35", "CON2-P05",
201 "CON2-P03", "CON2-P08", "CON2-P10", "CON2-P16",
202 "CON2-P12", "CON2-P37", "CON2-P28", "CON2-P27",
203 "CON2-P40", "CON2-P38", "", "",
204 "", "", "", "", "", "", "", "",
205
206 /* PB */
207 "", "", "", "", "", "", "", "",
208 "", "", "", "", "", "", "", "",
209 "", "", "", "", "", "", "", "",
210 "", "", "", "", "", "", "", "",
211
212 /* PC */
213 "CON2-P19", "CON2-P21", "CON2-P23", "CON2-P24",
214 "CON2-P18", "", "", "CON2-P26",
215 "", "", "", "", "", "", "", "",
216 "", "", "", "", "", "", "", "",
217 "", "", "", "", "", "", "", "",
218
219 /* PD */
220 "", "", "", "", "", "", "", "",
221 "", "", "", "", "", "", "CSI-PWR-EN", "",
222 "", "", "", "", "", "", "", "",
223 "", "", "", "", "", "", "", "",
224
225 /* PE */
226 "CN3-P17", "CN3-P13", "CN3-P09", "CN3-P07",
227 "CN3-P19", "CN3-P21", "CN3-P22", "CN3-P20",
228 "CN3-P18", "CN3-P16", "CN3-P14", "CN3-P12",
229 "CN3-P05", "CN3-P03", "CN3-P06", "CN3-P08",
230 "", "", "", "", "", "", "", "",
231 "", "", "", "", "", "", "", "",
232
233 /* PF */
234 "SDC0-D1", "SDC0-D0", "SDC0-CLK", "SDC0-CMD", "SDC0-D3",
235 "SDC0-D2", "SDC0-DET", "",
236 "", "", "", "", "", "", "", "",
237 "", "", "", "", "", "", "", "",
238 "", "", "", "", "", "", "", "",
239
240 /* PG */
241 "WL-SDIO-CLK", "WL-SDIO-CMD", "WL-SDIO-D0", "WL-SDIO-D1",
242 "WL-SDIO-D2", "WL-SDIO-D3", "BT-UART-TX", "BT-UART-RX",
243 "BT-UART-RTS", "BT-UART-CTS", "WL-WAKE-AP", "BT-WAKE-AP",
244 "BT-RST-N", "AP-WAKE-BT", "", "",
245 "", "", "", "", "", "", "", "",
246 "", "", "", "", "", "", "", "";
247};
248
249&r_pio {
250 gpio-line-names =
251 /* PL */
252 "", "CPUX-SET", "CON2-P32", "POWER-KEY", "CON2-P36",
253 "VCC-IO-EN", "USB0-ID", "WL-PWR-EN",
254 "PWR-STB", "PWR-DRAM", "PWR-LED", "IR-RX", "", "", "", "",
255 "", "", "", "", "", "", "", "",
256 "", "", "", "", "", "", "", "";
Jun Nie8db67122018-10-27 13:11:00 +0800257};
258
259&usb_otg {
260 dr_mode = "otg";
261 status = "okay";
262};
263
264&usbphy {
265 usb0_id_det-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
266 /*
267 * There're two micro-USB connectors, one is power-only and another is
268 * OTG. The Vbus of these two connectors are connected together, so
269 * the external USB device will be powered just by the power input
270 * from the power-only USB port.
271 */
272 status = "okay";
273};