1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT) !! 1 /* 2 // Copyright (c) 2016 ARM Ltd. !! 2 * Copyright (c) 2016 ARM Ltd. >> 3 * >> 4 * This file is dual-licensed: you can use it either under the terms >> 5 * of the GPL or the X11 license, at your option. Note that this dual >> 6 * licensing only applies to this file, and not this project as a >> 7 * whole. >> 8 * >> 9 * a) This library is free software; you can redistribute it and/or >> 10 * modify it under the terms of the GNU General Public License as >> 11 * published by the Free Software Foundation; either version 2 of the >> 12 * License, or (at your option) any later version. >> 13 * >> 14 * This library is distributed in the hope that it will be useful, >> 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of >> 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> 17 * GNU General Public License for more details. >> 18 * >> 19 * Or, alternatively, >> 20 * >> 21 * b) Permission is hereby granted, free of charge, to any person >> 22 * obtaining a copy of this software and associated documentation >> 23 * files (the "Software"), to deal in the Software without >> 24 * restriction, including without limitation the rights to use, >> 25 * copy, modify, merge, publish, distribute, sublicense, and/or >> 26 * sell copies of the Software, and to permit persons to whom the >> 27 * Software is furnished to do so, subject to the following >> 28 * conditions: >> 29 * >> 30 * The above copyright notice and this permission notice shall be >> 31 * included in all copies or substantial portions of the Software. >> 32 * >> 33 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, >> 34 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES >> 35 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND >> 36 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT >> 37 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, >> 38 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING >> 39 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR >> 40 * OTHER DEALINGS IN THE SOFTWARE. >> 41 */ 3 42 4 /dts-v1/; 43 /dts-v1/; 5 44 6 #include "sun50i-a64.dtsi" 45 #include "sun50i-a64.dtsi" 7 #include "sun50i-a64-cpu-opp.dtsi" << 8 46 9 #include <dt-bindings/gpio/gpio.h> 47 #include <dt-bindings/gpio/gpio.h> 10 48 11 / { 49 / { 12 model = "BananaPi-M64"; 50 model = "BananaPi-M64"; 13 compatible = "sinovoip,bananapi-m64", 51 compatible = "sinovoip,bananapi-m64", "allwinner,sun50i-a64"; 14 52 15 aliases { 53 aliases { 16 ethernet0 = &emac; << 17 serial0 = &uart0; 54 serial0 = &uart0; 18 serial1 = &uart1; 55 serial1 = &uart1; 19 }; 56 }; 20 57 21 chosen { 58 chosen { 22 stdout-path = "serial0:115200n 59 stdout-path = "serial0:115200n8"; 23 }; 60 }; 24 61 25 hdmi-connector { !! 62 reg_vcc3v3: vcc3v3 { 26 compatible = "hdmi-connector"; !! 63 compatible = "regulator-fixed"; 27 type = "a"; !! 64 regulator-name = "vcc3v3"; 28 !! 65 regulator-min-microvolt = <3300000>; 29 port { !! 66 regulator-max-microvolt = <3300000>; 30 hdmi_con_in: endpoint << 31 remote-endpoin << 32 }; << 33 }; << 34 }; << 35 << 36 leds { << 37 compatible = "gpio-leds"; << 38 << 39 led-0 { << 40 label = "bananapi-m64: << 41 gpios = <&pio 3 24 GPI << 42 default-state = "on"; << 43 }; << 44 << 45 led-1 { << 46 label = "bananapi-m64: << 47 gpios = <&pio 4 14 GPI << 48 }; << 49 << 50 led-2 { << 51 label = "bananapi-m64: << 52 gpios = <&pio 4 15 GPI << 53 }; << 54 }; << 55 << 56 wifi_pwrseq: pwrseq { << 57 compatible = "mmc-pwrseq-simpl << 58 reset-gpios = <&r_pio 0 2 GPIO << 59 clocks = <&rtc CLK_OSC32K_FANO << 60 clock-names = "ext_clock"; << 61 }; << 62 }; << 63 << 64 &codec { << 65 status = "okay"; << 66 }; << 67 << 68 &codec_analog { << 69 cpvdd-supply = <®_eldo1>; << 70 status = "okay"; << 71 }; << 72 << 73 &cpu0 { << 74 cpu-supply = <®_dcdc2>; << 75 }; << 76 << 77 &cpu1 { << 78 cpu-supply = <®_dcdc2>; << 79 }; << 80 << 81 &cpu2 { << 82 cpu-supply = <®_dcdc2>; << 83 }; << 84 << 85 &cpu3 { << 86 cpu-supply = <®_dcdc2>; << 87 }; << 88 << 89 &dai { << 90 status = "okay"; << 91 }; << 92 << 93 &de { << 94 status = "okay"; << 95 }; << 96 << 97 &ehci0 { << 98 status = "okay"; << 99 }; << 100 << 101 &ehci1 { << 102 status = "okay"; << 103 }; << 104 << 105 &emac { << 106 pinctrl-names = "default"; << 107 pinctrl-0 = <&rgmii_pins>; << 108 phy-mode = "rgmii-id"; << 109 phy-handle = <&ext_rgmii_phy>; << 110 phy-supply = <®_dc1sw>; << 111 status = "okay"; << 112 }; << 113 << 114 &hdmi { << 115 hvcc-supply = <®_dldo1>; << 116 status = "okay"; << 117 }; << 118 << 119 &hdmi_out { << 120 hdmi_out_con: endpoint { << 121 remote-endpoint = <&hdmi_con_i << 122 }; 67 }; 123 }; 68 }; 124 69 125 &i2c1 { 70 &i2c1 { >> 71 pinctrl-names = "default"; >> 72 pinctrl-0 = <&i2c1_pins>; 126 status = "okay"; 73 status = "okay"; 127 }; 74 }; 128 75 129 &i2c1_pins { 76 &i2c1_pins { 130 bias-pull-up; 77 bias-pull-up; 131 }; 78 }; 132 79 133 &mdio { << 134 ext_rgmii_phy: ethernet-phy@1 { << 135 compatible = "ethernet-phy-iee << 136 reg = <1>; << 137 }; << 138 }; << 139 << 140 &mmc0 { 80 &mmc0 { 141 pinctrl-names = "default"; 81 pinctrl-names = "default"; 142 pinctrl-0 = <&mmc0_pins>; 82 pinctrl-0 = <&mmc0_pins>; 143 vmmc-supply = <®_dcdc1>; !! 83 vmmc-supply = <®_vcc3v3>; 144 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; !! 84 cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; >> 85 cd-inverted; 145 disable-wp; 86 disable-wp; 146 bus-width = <4>; 87 bus-width = <4>; 147 status = "okay"; 88 status = "okay"; 148 }; 89 }; 149 90 150 &mmc1 { 91 &mmc1 { 151 pinctrl-names = "default"; 92 pinctrl-names = "default"; 152 pinctrl-0 = <&mmc1_pins>; 93 pinctrl-0 = <&mmc1_pins>; 153 vmmc-supply = <®_dldo2>; !! 94 vmmc-supply = <®_vcc3v3>; 154 vqmmc-supply = <®_dldo4>; << 155 mmc-pwrseq = <&wifi_pwrseq>; << 156 bus-width = <4>; 95 bus-width = <4>; 157 non-removable; 96 non-removable; 158 status = "okay"; 97 status = "okay"; 159 << 160 brcmf: wifi@1 { << 161 reg = <1>; << 162 compatible = "brcm,bcm4329-fma << 163 interrupt-parent = <&r_pio>; << 164 interrupts = <0 3 IRQ_TYPE_LEV << 165 interrupt-names = "host-wake"; << 166 }; << 167 }; 98 }; 168 99 169 &mmc2 { 100 &mmc2 { 170 pinctrl-names = "default"; 101 pinctrl-names = "default"; 171 pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pi !! 102 pinctrl-0 = <&mmc2_pins>; 172 vmmc-supply = <®_dcdc1>; !! 103 vmmc-supply = <®_vcc3v3>; 173 bus-width = <8>; 104 bus-width = <8>; 174 non-removable; 105 non-removable; 175 cap-mmc-hw-reset; 106 cap-mmc-hw-reset; 176 status = "okay"; 107 status = "okay"; 177 }; 108 }; 178 109 179 &ohci0 { << 180 status = "okay"; << 181 }; << 182 << 183 &ohci1 { << 184 status = "okay"; << 185 }; << 186 << 187 &r_rsb { << 188 status = "okay"; << 189 << 190 axp803: pmic@3a3 { << 191 compatible = "x-powers,axp803" << 192 reg = <0x3a3>; << 193 interrupt-parent = <&r_intc>; << 194 interrupts = <GIC_SPI 32 IRQ_T << 195 x-powers,drive-vbus-en; /* set << 196 }; << 197 }; << 198 << 199 #include "axp803.dtsi" << 200 << 201 &ac_power_supply { << 202 status = "okay"; << 203 }; << 204 << 205 &battery_power_supply { << 206 status = "okay"; << 207 }; << 208 << 209 ®_aldo1 { << 210 /* << 211 * This regulator also drives the PE p << 212 * which also controls two LEDs. << 213 */ << 214 regulator-always-on; << 215 regulator-min-microvolt = <2800000>; << 216 regulator-max-microvolt = <2800000>; << 217 regulator-name = "afvcc-csi"; << 218 }; << 219 << 220 ®_aldo2 { << 221 regulator-always-on; << 222 regulator-min-microvolt = <1800000>; << 223 regulator-max-microvolt = <3300000>; << 224 regulator-name = "vcc-pl"; << 225 }; << 226 << 227 ®_aldo3 { << 228 regulator-always-on; << 229 regulator-min-microvolt = <3000000>; << 230 regulator-max-microvolt = <3000000>; << 231 regulator-name = "vcc-pll-avcc"; << 232 }; << 233 << 234 ®_dc1sw { << 235 /* << 236 * This regulator also indirectly driv << 237 * which also controls the power LED. << 238 */ << 239 regulator-always-on; << 240 regulator-name = "vcc-phy"; << 241 }; << 242 << 243 ®_dcdc1 { << 244 regulator-always-on; << 245 regulator-min-microvolt = <3300000>; << 246 regulator-max-microvolt = <3300000>; << 247 regulator-name = "vcc-3v3"; << 248 }; << 249 << 250 ®_dcdc2 { << 251 regulator-always-on; << 252 regulator-min-microvolt = <1040000>; << 253 regulator-max-microvolt = <1300000>; << 254 regulator-name = "vdd-cpux"; << 255 }; << 256 << 257 /* DCDC3 is polyphased with DCDC2 */ << 258 << 259 ®_dcdc5 { << 260 regulator-always-on; << 261 regulator-min-microvolt = <1500000>; << 262 regulator-max-microvolt = <1500000>; << 263 regulator-name = "vcc-dram"; << 264 }; << 265 << 266 ®_dcdc6 { << 267 regulator-always-on; << 268 regulator-min-microvolt = <1100000>; << 269 regulator-max-microvolt = <1100000>; << 270 regulator-name = "vdd-sys"; << 271 }; << 272 << 273 ®_dldo1 { << 274 regulator-min-microvolt = <3300000>; << 275 regulator-max-microvolt = <3300000>; << 276 regulator-name = "vcc-hdmi-dsi"; << 277 }; << 278 << 279 ®_dldo2 { << 280 regulator-min-microvolt = <3300000>; << 281 regulator-max-microvolt = <3300000>; << 282 regulator-name = "vcc-wifi"; << 283 }; << 284 << 285 ®_dldo4 { << 286 regulator-min-microvolt = <1800000>; << 287 regulator-max-microvolt = <3300000>; << 288 regulator-name = "vcc-wifi-io"; << 289 }; << 290 << 291 ®_drivevbus { << 292 regulator-name = "usb0-vbus"; << 293 status = "okay"; << 294 }; << 295 << 296 ®_eldo1 { << 297 regulator-min-microvolt = <1800000>; << 298 regulator-max-microvolt = <1800000>; << 299 regulator-name = "cpvdd"; << 300 }; << 301 << 302 ®_fldo1 { << 303 regulator-min-microvolt = <1200000>; << 304 regulator-max-microvolt = <1200000>; << 305 regulator-name = "vcc-1v2-hsic"; << 306 }; << 307 << 308 /* << 309 * The A64 chip cannot work without this regul << 310 * it seems to be only driving the AR100 core. << 311 * Maybe we don't still know well about CPUs d << 312 */ << 313 ®_fldo2 { << 314 regulator-always-on; << 315 regulator-min-microvolt = <1100000>; << 316 regulator-max-microvolt = <1100000>; << 317 regulator-name = "vdd-cpus"; << 318 }; << 319 << 320 ®_rtc_ldo { << 321 regulator-name = "vcc-rtc"; << 322 }; << 323 << 324 &simplefb_hdmi { << 325 vcc-hdmi-supply = <®_dldo1>; << 326 }; << 327 << 328 &sound { << 329 status = "okay"; << 330 simple-audio-card,widgets = "Headphone << 331 "Microphon << 332 "Microphon << 333 simple-audio-card,routing = << 334 "Left DAC", "DACL", << 335 "Right DAC", "DACR", << 336 "ADCL", "Left ADC", << 337 "ADCR", "Right ADC", << 338 "Headphone Jack", "HP" << 339 "MIC2", "Microphone Ja << 340 "Onboard Microphone", << 341 "MIC1", "Onboard Micro << 342 }; << 343 << 344 &uart0 { 110 &uart0 { 345 pinctrl-names = "default"; 111 pinctrl-names = "default"; 346 pinctrl-0 = <&uart0_pb_pins>; !! 112 pinctrl-0 = <&uart0_pins_a>; 347 status = "okay"; 113 status = "okay"; 348 }; 114 }; 349 115 350 &uart1 { 116 &uart1 { 351 pinctrl-names = "default"; 117 pinctrl-names = "default"; 352 pinctrl-0 = <&uart1_pins>, <&uart1_rts 118 pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; 353 uart-has-rtscts; << 354 status = "okay"; << 355 << 356 bluetooth { << 357 compatible = "brcm,bcm43438-bt << 358 clocks = <&rtc CLK_OSC32K_FANO << 359 clock-names = "lpo"; << 360 vbat-supply = <®_dldo2>; << 361 vddio-supply = <®_dldo4>; << 362 device-wakeup-gpios = <&r_pio << 363 host-wakeup-gpios = <&r_pio 0 << 364 shutdown-gpios = <&r_pio 0 4 G << 365 }; << 366 }; << 367 << 368 &usb_otg { << 369 dr_mode = "otg"; << 370 status = "okay"; << 371 }; << 372 << 373 &usb_power_supply { << 374 status = "okay"; << 375 }; << 376 << 377 &usbphy { << 378 usb0_id_det-gpios = <&pio 7 9 GPIO_ACT << 379 usb0_vbus_power-supply = <&usb_power_s << 380 usb0_vbus-supply = <®_drivevbus>; << 381 status = "okay"; 119 status = "okay"; 382 }; 120 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.