Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[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         leds {
30                 compatible = "gpio-leds";
31
32                 pwr_led {
33                         label = "bananapi-m2-zero:red:pwr";
34                         gpios = <&r_pio 0 10 GPIO_ACTIVE_LOW>; /* 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 = <&reg_vdd_cpux>;
75 };
76
77 &ehci0 {
78         status = "okay";
79 };
80
81 &mmc0 {
82         vmmc-supply = <&reg_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 = <&reg_vcc3v3>;
95         vqmmc-supply = <&reg_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 = <&reg_vcc3v3>;
131                 vddio-supply = <&reg_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 &pio {
140         gpio-line-names =
141                 /* PA */
142                 "CON2-P13", "CON2-P11", "CON2-P22", "CON2-P15",
143                         "CON3-P03", "CON3-P02", "CON2-P07", "CON2-P29",
144                 "CON2-P31", "CON2-P33", "CON2-P35", "CON2-P05",
145                         "CON2-P03", "CON2-P08", "CON2-P10", "CON2-P16",
146                 "CON2-P12", "CON2-P37", "CON2-P28", "CON2-P27",
147                         "CON2-P40", "CON2-P38", "", "",
148                 "", "", "", "", "", "", "", "",
149
150                 /* PB */
151                 "", "", "", "", "", "", "", "",
152                 "", "", "", "", "", "", "", "",
153                 "", "", "", "", "", "", "", "",
154                 "", "", "", "", "", "", "", "",
155
156                 /* PC */
157                 "CON2-P19", "CON2-P21", "CON2-P23", "CON2-P24",
158                         "CON2-P18", "", "", "CON2-P26",
159                 "", "", "", "", "", "", "", "",
160                 "", "", "", "", "", "", "", "",
161                 "", "", "", "", "", "", "", "",
162
163                 /* PD */
164                 "", "", "", "", "", "", "", "",
165                 "", "", "", "", "", "", "CSI-PWR-EN", "",
166                 "", "", "", "", "", "", "", "",
167                 "", "", "", "", "", "", "", "",
168
169                 /* PE */
170                 "CN3-P17", "CN3-P13", "CN3-P09", "CN3-P07",
171                         "CN3-P19", "CN3-P21", "CN3-P22", "CN3-P20",
172                 "CN3-P18", "CN3-P16", "CN3-P14", "CN3-P12",
173                         "CN3-P05", "CN3-P03", "CN3-P06", "CN3-P08",
174                 "", "", "", "", "", "", "", "",
175                 "", "", "", "", "", "", "", "",
176
177                 /* PF */
178                 "SDC0-D1", "SDC0-D0", "SDC0-CLK", "SDC0-CMD", "SDC0-D3",
179                         "SDC0-D2", "SDC0-DET", "",
180                 "", "", "", "", "", "", "", "",
181                 "", "", "", "", "", "", "", "",
182                 "", "", "", "", "", "", "", "",
183
184                 /* PG */
185                 "WL-SDIO-CLK", "WL-SDIO-CMD", "WL-SDIO-D0", "WL-SDIO-D1",
186                         "WL-SDIO-D2", "WL-SDIO-D3", "BT-UART-TX", "BT-UART-RX",
187                 "BT-UART-RTS", "BT-UART-CTS", "WL-WAKE-AP", "BT-WAKE-AP",
188                         "BT-RST-N", "AP-WAKE-BT", "", "",
189                 "", "", "", "", "", "", "", "",
190                 "", "", "", "", "", "", "", "";
191 };
192
193 &r_pio {
194         gpio-line-names =
195                 /* PL */
196                 "", "CPUX-SET", "CON2-P32", "POWER-KEY", "CON2-P36",
197                         "VCC-IO-EN", "USB0-ID", "WL-PWR-EN",
198                 "PWR-STB", "PWR-DRAM", "PWR-LED", "IR-RX", "", "", "", "",
199                 "", "", "", "", "", "", "", "",
200                 "", "", "", "", "", "", "", "";
201 };
202
203 &usb_otg {
204         dr_mode = "otg";
205         status = "okay";
206 };
207
208 &usbphy {
209         usb0_id_det-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
210         /*
211          * There're two micro-USB connectors, one is power-only and another is
212          * OTG. The Vbus of these two connectors are connected together, so
213          * the external USB device will be powered just by the power input
214          * from the power-only USB port.
215          */
216         status = "okay";
217 };