Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
[linux-2.6-microblaze.git] / arch / arm / boot / dts / sun8i-h2-plus-bananapi-m2-zero.dts
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 = <&reg_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 = <&reg_vcc5v0>;
98         };
99
100         poweroff {
101                 compatible = "regulator-poweroff";
102                 cpu-supply = <&reg_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 = <&reg_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 = <&reg_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 = <&reg_vcc3v3>;
149         vqmmc-supply = <&reg_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 = <&reg_vcc3v3>;
186                 vddio-supply = <&reg_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 };