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}; 273