Loading...
1// 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
29 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
40 leds {
41 compatible = "gpio-leds";
42
43 pwr_led {
44 label = "bananapi-m2-zero:red:pwr";
45 gpios = <&r_pio 0 10 GPIO_ACTIVE_LOW>; /* PL10 */
46 default-state = "on";
47 };
48 };
49
50 gpio_keys {
51 compatible = "gpio-keys";
52
53 sw4 {
54 label = "power";
55 linux,code = <BTN_0>;
56 gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>;
57 };
58 };
59
60 reg_vdd_cpux: vdd-cpux-regulator {
61 compatible = "regulator-gpio";
62 regulator-name = "vdd-cpux";
63 regulator-type = "voltage";
64 regulator-boot-on;
65 regulator-always-on;
66 regulator-min-microvolt = <1100000>;
67 regulator-max-microvolt = <1300000>;
68 regulator-ramp-delay = <50>; /* 4ms */
69
70 gpios = <&r_pio 0 1 GPIO_ACTIVE_HIGH>; /* PL1 */
71 enable-active-high;
72 gpios-states = <0x1>;
73 states = <1100000 0>, <1300000 1>;
74 };
75
76 reg_vcc_dram: vcc-dram {
77 compatible = "regulator-fixed";
78 regulator-name = "vcc-dram";
79 regulator-min-microvolt = <1500000>;
80 regulator-max-microvolt = <1500000>;
81 regulator-always-on;
82 regulator-boot-on;
83 enable-active-high;
84 gpio = <&r_pio 0 9 GPIO_ACTIVE_HIGH>; /* PL9 */
85 vin-supply = <®_vcc5v0>;
86 };
87
88 reg_vcc1v2: vcc1v2 {
89 compatible = "regulator-fixed";
90 regulator-name = "vcc1v2";
91 regulator-min-microvolt = <1200000>;
92 regulator-max-microvolt = <1200000>;
93 regulator-always-on;
94 regulator-boot-on;
95 enable-active-high;
96 gpio = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */
97 vin-supply = <®_vcc5v0>;
98 };
99
100 poweroff {
101 compatible = "regulator-poweroff";
102 cpu-supply = <®_vcc1v2>;
103 };
104
105 wifi_pwrseq: wifi_pwrseq {
106 compatible = "mmc-pwrseq-simple";
107 reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
108 clocks = <&rtc 1>;
109 clock-names = "ext_clock";
110 };
111};
112
113&cpu0 {
114 cpu-supply = <®_vdd_cpux>;
115};
116
117&de {
118 status = "okay";
119};
120
121&ehci0 {
122 status = "okay";
123};
124
125&hdmi {
126 status = "okay";
127};
128
129&hdmi_out {
130 hdmi_out_con: endpoint {
131 remote-endpoint = <&hdmi_con_in>;
132 };
133};
134
135&mmc0 {
136 vmmc-supply = <®_vcc3v3>;
137 bus-width = <4>;
138 /*
139 * On the production batch of this board the card detect GPIO is
140 * high active (card inserted), although on the early samples it's
141 * low active.
142 */
143 cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; /* PF6 */
144 status = "okay";
145};
146
147&mmc1 {
148 vmmc-supply = <®_vcc3v3>;
149 vqmmc-supply = <®_vcc3v3>;
150 mmc-pwrseq = <&wifi_pwrseq>;
151 bus-width = <4>;
152 non-removable;
153 status = "okay";
154
155 brcmf: wifi@1 {
156 reg = <1>;
157 compatible = "brcm,bcm4329-fmac";
158 interrupt-parent = <&pio>;
159 interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10 / EINT10 */
160 interrupt-names = "host-wake";
161 };
162};
163
164&ohci0 {
165 status = "okay";
166};
167
168&uart0 {
169 pinctrl-names = "default";
170 pinctrl-0 = <&uart0_pa_pins>;
171 status = "okay";
172};
173
174&uart1 {
175 pinctrl-names = "default";
176 pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
177 uart-has-rtscts;
178 status = "okay";
179
180 bluetooth {
181 compatible = "brcm,bcm43438-bt";
182 max-speed = <1500000>;
183 clocks = <&rtc 1>;
184 clock-names = "lpo";
185 vbat-supply = <®_vcc3v3>;
186 vddio-supply = <®_vcc3v3>;
187 device-wakeup-gpios = <&pio 6 13 GPIO_ACTIVE_HIGH>; /* PG13 */
188 host-wakeup-gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */
189 shutdown-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
190 };
191
192};
193
194&pio {
195 gpio-line-names =
196 /* PA */
197 "CON2-P13", "CON2-P11", "CON2-P22", "CON2-P15",
198 "CON3-P03", "CON3-P02", "CON2-P07", "CON2-P29",
199 "CON2-P31", "CON2-P33", "CON2-P35", "CON2-P05",
200 "CON2-P03", "CON2-P08", "CON2-P10", "CON2-P16",
201 "CON2-P12", "CON2-P37", "CON2-P28", "CON2-P27",
202 "CON2-P40", "CON2-P38", "", "",
203 "", "", "", "", "", "", "", "",
204
205 /* PB */
206 "", "", "", "", "", "", "", "",
207 "", "", "", "", "", "", "", "",
208 "", "", "", "", "", "", "", "",
209 "", "", "", "", "", "", "", "",
210
211 /* PC */
212 "CON2-P19", "CON2-P21", "CON2-P23", "CON2-P24",
213 "CON2-P18", "", "", "CON2-P26",
214 "", "", "", "", "", "", "", "",
215 "", "", "", "", "", "", "", "",
216 "", "", "", "", "", "", "", "",
217
218 /* PD */
219 "", "", "", "", "", "", "", "",
220 "", "", "", "", "", "", "CSI-PWR-EN", "",
221 "", "", "", "", "", "", "", "",
222 "", "", "", "", "", "", "", "",
223
224 /* PE */
225 "CN3-P17", "CN3-P13", "CN3-P09", "CN3-P07",
226 "CN3-P19", "CN3-P21", "CN3-P22", "CN3-P20",
227 "CN3-P18", "CN3-P16", "CN3-P14", "CN3-P12",
228 "CN3-P05", "CN3-P03", "CN3-P06", "CN3-P08",
229 "", "", "", "", "", "", "", "",
230 "", "", "", "", "", "", "", "",
231
232 /* PF */
233 "SDC0-D1", "SDC0-D0", "SDC0-CLK", "SDC0-CMD", "SDC0-D3",
234 "SDC0-D2", "SDC0-DET", "",
235 "", "", "", "", "", "", "", "",
236 "", "", "", "", "", "", "", "",
237 "", "", "", "", "", "", "", "",
238
239 /* PG */
240 "WL-SDIO-CLK", "WL-SDIO-CMD", "WL-SDIO-D0", "WL-SDIO-D1",
241 "WL-SDIO-D2", "WL-SDIO-D3", "BT-UART-TX", "BT-UART-RX",
242 "BT-UART-RTS", "BT-UART-CTS", "WL-WAKE-AP", "BT-WAKE-AP",
243 "BT-RST-N", "AP-WAKE-BT", "", "",
244 "", "", "", "", "", "", "", "",
245 "", "", "", "", "", "", "", "";
246};
247
248&r_pio {
249 gpio-line-names =
250 /* PL */
251 "", "CPUX-SET", "CON2-P32", "POWER-KEY", "CON2-P36",
252 "VCC-IO-EN", "USB0-ID", "WL-PWR-EN",
253 "PWR-STB", "PWR-DRAM", "PWR-LED", "IR-RX", "", "", "", "",
254 "", "", "", "", "", "", "", "",
255 "", "", "", "", "", "", "", "";
256};
257
258&usb_otg {
259 dr_mode = "otg";
260 status = "okay";
261};
262
263&usbphy {
264 usb0_id_det-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
265 /*
266 * There're two micro-USB connectors, one is power-only and another is
267 * OTG. The Vbus of these two connectors are connected together, so
268 * the external USB device will be powered just by the power input
269 * from the power-only USB port.
270 */
271 status = "okay";
272};
1// 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
29 leds {
30 compatible = "gpio-leds";
31
32 pwr_led {
33 label = "bananapi-m2-zero:red:pwr";
34 gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
35 default-state = "on";
36 };
37 };
38
39 gpio_keys {
40 compatible = "gpio-keys";
41
42 sw4 {
43 label = "power";
44 linux,code = <BTN_0>;
45 gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>;
46 };
47 };
48
49 reg_vdd_cpux: vdd-cpux-regulator {
50 compatible = "regulator-gpio";
51 regulator-name = "vdd-cpux";
52 regulator-type = "voltage";
53 regulator-boot-on;
54 regulator-always-on;
55 regulator-min-microvolt = <1100000>;
56 regulator-max-microvolt = <1300000>;
57 regulator-ramp-delay = <50>; /* 4ms */
58
59 gpios = <&r_pio 0 1 GPIO_ACTIVE_HIGH>; /* PL1 */
60 enable-active-high;
61 gpios-states = <0x1>;
62 states = <1100000 0>, <1300000 1>;
63 };
64
65 wifi_pwrseq: wifi_pwrseq {
66 compatible = "mmc-pwrseq-simple";
67 reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
68 clocks = <&rtc 1>;
69 clock-names = "ext_clock";
70 };
71};
72
73&cpu0 {
74 cpu-supply = <®_vdd_cpux>;
75};
76
77&ehci0 {
78 status = "okay";
79};
80
81&mmc0 {
82 vmmc-supply = <®_vcc3v3>;
83 bus-width = <4>;
84 /*
85 * On the production batch of this board the card detect GPIO is
86 * high active (card inserted), although on the early samples it's
87 * low active.
88 */
89 cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; /* PF6 */
90 status = "okay";
91};
92
93&mmc1 {
94 vmmc-supply = <®_vcc3v3>;
95 vqmmc-supply = <®_vcc3v3>;
96 mmc-pwrseq = <&wifi_pwrseq>;
97 bus-width = <4>;
98 non-removable;
99 status = "okay";
100
101 brcmf: wifi@1 {
102 reg = <1>;
103 compatible = "brcm,bcm4329-fmac";
104 interrupt-parent = <&pio>;
105 interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10 / EINT10 */
106 interrupt-names = "host-wake";
107 };
108};
109
110&ohci0 {
111 status = "okay";
112};
113
114&uart0 {
115 pinctrl-names = "default";
116 pinctrl-0 = <&uart0_pa_pins>;
117 status = "okay";
118};
119
120&uart1 {
121 pinctrl-names = "default";
122 pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
123 uart-has-rtscts;
124 status = "okay";
125
126 bluetooth {
127 compatible = "brcm,bcm43438-bt";
128 clocks = <&rtc 1>;
129 clock-names = "lpo";
130 vbat-supply = <®_vcc3v3>;
131 vddio-supply = <®_vcc3v3>;
132 device-wakeup-gpios = <&pio 6 13 GPIO_ACTIVE_HIGH>; /* PG13 */
133 host-wakeup-gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */
134 shutdown-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
135 };
136
137};
138
139&usb_otg {
140 dr_mode = "otg";
141 status = "okay";
142};
143
144&usbphy {
145 usb0_id_det-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
146 /*
147 * There're two micro-USB connectors, one is power-only and another is
148 * OTG. The Vbus of these two connectors are connected together, so
149 * the external USB device will be powered just by the power input
150 * from the power-only USB port.
151 */
152 status = "okay";
153};