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; 54 ethernet0 = &emac; 17 serial0 = &uart0; 55 serial0 = &uart0; 18 serial1 = &uart1; 56 serial1 = &uart1; 19 }; 57 }; 20 58 21 chosen { 59 chosen { 22 stdout-path = "serial0:115200n 60 stdout-path = "serial0:115200n8"; 23 }; 61 }; 24 62 25 hdmi-connector { 63 hdmi-connector { 26 compatible = "hdmi-connector"; 64 compatible = "hdmi-connector"; 27 type = "a"; 65 type = "a"; 28 66 29 port { 67 port { 30 hdmi_con_in: endpoint 68 hdmi_con_in: endpoint { 31 remote-endpoin 69 remote-endpoint = <&hdmi_out_con>; 32 }; 70 }; 33 }; 71 }; 34 }; 72 }; 35 73 36 leds { 74 leds { 37 compatible = "gpio-leds"; 75 compatible = "gpio-leds"; 38 76 39 led-0 { !! 77 pwr-led { 40 label = "bananapi-m64: 78 label = "bananapi-m64:red:pwr"; 41 gpios = <&pio 3 24 GPI 79 gpios = <&pio 3 24 GPIO_ACTIVE_HIGH>; /* PD24 */ 42 default-state = "on"; 80 default-state = "on"; 43 }; 81 }; 44 82 45 led-1 { !! 83 green { 46 label = "bananapi-m64: 84 label = "bananapi-m64:green:user"; 47 gpios = <&pio 4 14 GPI 85 gpios = <&pio 4 14 GPIO_ACTIVE_HIGH>; /* PE14 */ 48 }; 86 }; 49 87 50 led-2 { !! 88 blue { 51 label = "bananapi-m64: 89 label = "bananapi-m64:blue:user"; 52 gpios = <&pio 4 15 GPI 90 gpios = <&pio 4 15 GPIO_ACTIVE_HIGH>; /* PE15 */ 53 }; 91 }; 54 }; 92 }; 55 93 56 wifi_pwrseq: pwrseq { !! 94 wifi_pwrseq: wifi_pwrseq { 57 compatible = "mmc-pwrseq-simpl 95 compatible = "mmc-pwrseq-simple"; 58 reset-gpios = <&r_pio 0 2 GPIO 96 reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ 59 clocks = <&rtc CLK_OSC32K_FANO !! 97 clocks = <&rtc 1>; 60 clock-names = "ext_clock"; 98 clock-names = "ext_clock"; 61 }; 99 }; 62 }; 100 }; 63 101 64 &codec { 102 &codec { 65 status = "okay"; 103 status = "okay"; 66 }; 104 }; 67 105 68 &codec_analog { 106 &codec_analog { 69 cpvdd-supply = <®_eldo1>; 107 cpvdd-supply = <®_eldo1>; 70 status = "okay"; 108 status = "okay"; 71 }; 109 }; 72 110 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 { 111 &dai { 90 status = "okay"; 112 status = "okay"; 91 }; 113 }; 92 114 93 &de { 115 &de { 94 status = "okay"; 116 status = "okay"; 95 }; 117 }; 96 118 97 &ehci0 { 119 &ehci0 { 98 status = "okay"; 120 status = "okay"; 99 }; 121 }; 100 122 101 &ehci1 { 123 &ehci1 { 102 status = "okay"; 124 status = "okay"; 103 }; 125 }; 104 126 105 &emac { 127 &emac { 106 pinctrl-names = "default"; 128 pinctrl-names = "default"; 107 pinctrl-0 = <&rgmii_pins>; 129 pinctrl-0 = <&rgmii_pins>; 108 phy-mode = "rgmii-id"; !! 130 phy-mode = "rgmii"; 109 phy-handle = <&ext_rgmii_phy>; 131 phy-handle = <&ext_rgmii_phy>; 110 phy-supply = <®_dc1sw>; 132 phy-supply = <®_dc1sw>; 111 status = "okay"; 133 status = "okay"; 112 }; 134 }; 113 135 114 &hdmi { 136 &hdmi { 115 hvcc-supply = <®_dldo1>; 137 hvcc-supply = <®_dldo1>; 116 status = "okay"; 138 status = "okay"; 117 }; 139 }; 118 140 119 &hdmi_out { 141 &hdmi_out { 120 hdmi_out_con: endpoint { 142 hdmi_out_con: endpoint { 121 remote-endpoint = <&hdmi_con_i 143 remote-endpoint = <&hdmi_con_in>; 122 }; 144 }; 123 }; 145 }; 124 146 125 &i2c1 { 147 &i2c1 { >> 148 pinctrl-names = "default"; >> 149 pinctrl-0 = <&i2c1_pins>; 126 status = "okay"; 150 status = "okay"; 127 }; 151 }; 128 152 129 &i2c1_pins { 153 &i2c1_pins { 130 bias-pull-up; 154 bias-pull-up; 131 }; 155 }; 132 156 133 &mdio { 157 &mdio { 134 ext_rgmii_phy: ethernet-phy@1 { 158 ext_rgmii_phy: ethernet-phy@1 { 135 compatible = "ethernet-phy-iee 159 compatible = "ethernet-phy-ieee802.3-c22"; 136 reg = <1>; 160 reg = <1>; 137 }; 161 }; 138 }; 162 }; 139 163 140 &mmc0 { 164 &mmc0 { 141 pinctrl-names = "default"; 165 pinctrl-names = "default"; 142 pinctrl-0 = <&mmc0_pins>; 166 pinctrl-0 = <&mmc0_pins>; 143 vmmc-supply = <®_dcdc1>; 167 vmmc-supply = <®_dcdc1>; 144 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 168 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 145 disable-wp; 169 disable-wp; 146 bus-width = <4>; 170 bus-width = <4>; 147 status = "okay"; 171 status = "okay"; 148 }; 172 }; 149 173 150 &mmc1 { 174 &mmc1 { 151 pinctrl-names = "default"; 175 pinctrl-names = "default"; 152 pinctrl-0 = <&mmc1_pins>; 176 pinctrl-0 = <&mmc1_pins>; 153 vmmc-supply = <®_dldo2>; 177 vmmc-supply = <®_dldo2>; 154 vqmmc-supply = <®_dldo4>; 178 vqmmc-supply = <®_dldo4>; 155 mmc-pwrseq = <&wifi_pwrseq>; 179 mmc-pwrseq = <&wifi_pwrseq>; 156 bus-width = <4>; 180 bus-width = <4>; 157 non-removable; 181 non-removable; 158 status = "okay"; 182 status = "okay"; 159 183 160 brcmf: wifi@1 { 184 brcmf: wifi@1 { 161 reg = <1>; 185 reg = <1>; 162 compatible = "brcm,bcm4329-fma 186 compatible = "brcm,bcm4329-fmac"; 163 interrupt-parent = <&r_pio>; 187 interrupt-parent = <&r_pio>; 164 interrupts = <0 3 IRQ_TYPE_LEV 188 interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */ 165 interrupt-names = "host-wake"; 189 interrupt-names = "host-wake"; 166 }; 190 }; 167 }; 191 }; 168 192 169 &mmc2 { 193 &mmc2 { 170 pinctrl-names = "default"; 194 pinctrl-names = "default"; 171 pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pi 195 pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>; 172 vmmc-supply = <®_dcdc1>; 196 vmmc-supply = <®_dcdc1>; 173 bus-width = <8>; 197 bus-width = <8>; 174 non-removable; 198 non-removable; 175 cap-mmc-hw-reset; 199 cap-mmc-hw-reset; 176 status = "okay"; 200 status = "okay"; 177 }; 201 }; 178 202 179 &ohci0 { 203 &ohci0 { 180 status = "okay"; 204 status = "okay"; 181 }; 205 }; 182 206 183 &ohci1 { 207 &ohci1 { 184 status = "okay"; 208 status = "okay"; 185 }; 209 }; 186 210 187 &r_rsb { 211 &r_rsb { 188 status = "okay"; 212 status = "okay"; 189 213 190 axp803: pmic@3a3 { 214 axp803: pmic@3a3 { 191 compatible = "x-powers,axp803" 215 compatible = "x-powers,axp803"; 192 reg = <0x3a3>; 216 reg = <0x3a3>; 193 interrupt-parent = <&r_intc>; 217 interrupt-parent = <&r_intc>; 194 interrupts = <GIC_SPI 32 IRQ_T !! 218 interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 195 x-powers,drive-vbus-en; /* set 219 x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */ 196 }; 220 }; 197 }; 221 }; 198 222 199 #include "axp803.dtsi" 223 #include "axp803.dtsi" 200 224 201 &ac_power_supply { 225 &ac_power_supply { 202 status = "okay"; 226 status = "okay"; 203 }; 227 }; 204 228 205 &battery_power_supply { 229 &battery_power_supply { 206 status = "okay"; 230 status = "okay"; 207 }; 231 }; 208 232 209 ®_aldo1 { 233 ®_aldo1 { 210 /* 234 /* 211 * This regulator also drives the PE p 235 * This regulator also drives the PE pingroup GPIOs, 212 * which also controls two LEDs. 236 * which also controls two LEDs. 213 */ 237 */ 214 regulator-always-on; 238 regulator-always-on; 215 regulator-min-microvolt = <2800000>; 239 regulator-min-microvolt = <2800000>; 216 regulator-max-microvolt = <2800000>; 240 regulator-max-microvolt = <2800000>; 217 regulator-name = "afvcc-csi"; 241 regulator-name = "afvcc-csi"; 218 }; 242 }; 219 243 220 ®_aldo2 { 244 ®_aldo2 { 221 regulator-always-on; 245 regulator-always-on; 222 regulator-min-microvolt = <1800000>; 246 regulator-min-microvolt = <1800000>; 223 regulator-max-microvolt = <3300000>; 247 regulator-max-microvolt = <3300000>; 224 regulator-name = "vcc-pl"; 248 regulator-name = "vcc-pl"; 225 }; 249 }; 226 250 227 ®_aldo3 { 251 ®_aldo3 { 228 regulator-always-on; 252 regulator-always-on; 229 regulator-min-microvolt = <3000000>; 253 regulator-min-microvolt = <3000000>; 230 regulator-max-microvolt = <3000000>; 254 regulator-max-microvolt = <3000000>; 231 regulator-name = "vcc-pll-avcc"; 255 regulator-name = "vcc-pll-avcc"; 232 }; 256 }; 233 257 234 ®_dc1sw { 258 ®_dc1sw { 235 /* 259 /* 236 * This regulator also indirectly driv 260 * This regulator also indirectly drives the PD pingroup GPIOs, 237 * which also controls the power LED. 261 * which also controls the power LED. 238 */ 262 */ 239 regulator-always-on; 263 regulator-always-on; 240 regulator-name = "vcc-phy"; 264 regulator-name = "vcc-phy"; 241 }; 265 }; 242 266 243 ®_dcdc1 { 267 ®_dcdc1 { 244 regulator-always-on; 268 regulator-always-on; 245 regulator-min-microvolt = <3300000>; 269 regulator-min-microvolt = <3300000>; 246 regulator-max-microvolt = <3300000>; 270 regulator-max-microvolt = <3300000>; 247 regulator-name = "vcc-3v3"; 271 regulator-name = "vcc-3v3"; 248 }; 272 }; 249 273 250 ®_dcdc2 { 274 ®_dcdc2 { 251 regulator-always-on; 275 regulator-always-on; 252 regulator-min-microvolt = <1040000>; 276 regulator-min-microvolt = <1040000>; 253 regulator-max-microvolt = <1300000>; 277 regulator-max-microvolt = <1300000>; 254 regulator-name = "vdd-cpux"; 278 regulator-name = "vdd-cpux"; 255 }; 279 }; 256 280 257 /* DCDC3 is polyphased with DCDC2 */ 281 /* DCDC3 is polyphased with DCDC2 */ 258 282 259 ®_dcdc5 { 283 ®_dcdc5 { 260 regulator-always-on; 284 regulator-always-on; 261 regulator-min-microvolt = <1500000>; 285 regulator-min-microvolt = <1500000>; 262 regulator-max-microvolt = <1500000>; 286 regulator-max-microvolt = <1500000>; 263 regulator-name = "vcc-dram"; 287 regulator-name = "vcc-dram"; 264 }; 288 }; 265 289 266 ®_dcdc6 { 290 ®_dcdc6 { 267 regulator-always-on; 291 regulator-always-on; 268 regulator-min-microvolt = <1100000>; 292 regulator-min-microvolt = <1100000>; 269 regulator-max-microvolt = <1100000>; 293 regulator-max-microvolt = <1100000>; 270 regulator-name = "vdd-sys"; 294 regulator-name = "vdd-sys"; 271 }; 295 }; 272 296 273 ®_dldo1 { 297 ®_dldo1 { 274 regulator-min-microvolt = <3300000>; 298 regulator-min-microvolt = <3300000>; 275 regulator-max-microvolt = <3300000>; 299 regulator-max-microvolt = <3300000>; 276 regulator-name = "vcc-hdmi-dsi"; 300 regulator-name = "vcc-hdmi-dsi"; 277 }; 301 }; 278 302 279 ®_dldo2 { 303 ®_dldo2 { 280 regulator-min-microvolt = <3300000>; 304 regulator-min-microvolt = <3300000>; 281 regulator-max-microvolt = <3300000>; 305 regulator-max-microvolt = <3300000>; 282 regulator-name = "vcc-wifi"; 306 regulator-name = "vcc-wifi"; 283 }; 307 }; 284 308 285 ®_dldo4 { 309 ®_dldo4 { 286 regulator-min-microvolt = <1800000>; 310 regulator-min-microvolt = <1800000>; 287 regulator-max-microvolt = <3300000>; 311 regulator-max-microvolt = <3300000>; 288 regulator-name = "vcc-wifi-io"; 312 regulator-name = "vcc-wifi-io"; 289 }; 313 }; 290 314 291 ®_drivevbus { 315 ®_drivevbus { 292 regulator-name = "usb0-vbus"; 316 regulator-name = "usb0-vbus"; 293 status = "okay"; 317 status = "okay"; 294 }; 318 }; 295 319 296 ®_eldo1 { 320 ®_eldo1 { 297 regulator-min-microvolt = <1800000>; 321 regulator-min-microvolt = <1800000>; 298 regulator-max-microvolt = <1800000>; 322 regulator-max-microvolt = <1800000>; 299 regulator-name = "cpvdd"; 323 regulator-name = "cpvdd"; 300 }; 324 }; 301 325 302 ®_fldo1 { 326 ®_fldo1 { 303 regulator-min-microvolt = <1200000>; 327 regulator-min-microvolt = <1200000>; 304 regulator-max-microvolt = <1200000>; 328 regulator-max-microvolt = <1200000>; 305 regulator-name = "vcc-1v2-hsic"; 329 regulator-name = "vcc-1v2-hsic"; 306 }; 330 }; 307 331 308 /* 332 /* 309 * The A64 chip cannot work without this regul 333 * The A64 chip cannot work without this regulator off, although 310 * it seems to be only driving the AR100 core. 334 * it seems to be only driving the AR100 core. 311 * Maybe we don't still know well about CPUs d 335 * Maybe we don't still know well about CPUs domain. 312 */ 336 */ 313 ®_fldo2 { 337 ®_fldo2 { 314 regulator-always-on; 338 regulator-always-on; 315 regulator-min-microvolt = <1100000>; 339 regulator-min-microvolt = <1100000>; 316 regulator-max-microvolt = <1100000>; 340 regulator-max-microvolt = <1100000>; 317 regulator-name = "vdd-cpus"; 341 regulator-name = "vdd-cpus"; 318 }; 342 }; 319 343 320 ®_rtc_ldo { 344 ®_rtc_ldo { 321 regulator-name = "vcc-rtc"; 345 regulator-name = "vcc-rtc"; 322 }; 346 }; 323 347 324 &simplefb_hdmi { 348 &simplefb_hdmi { 325 vcc-hdmi-supply = <®_dldo1>; 349 vcc-hdmi-supply = <®_dldo1>; 326 }; 350 }; 327 351 328 &sound { 352 &sound { 329 status = "okay"; 353 status = "okay"; 330 simple-audio-card,widgets = "Headphone 354 simple-audio-card,widgets = "Headphone", "Headphone Jack", 331 "Microphon 355 "Microphone", "Microphone Jack", 332 "Microphon 356 "Microphone", "Onboard Microphone"; 333 simple-audio-card,routing = 357 simple-audio-card,routing = 334 "Left DAC", "DACL", !! 358 "Left DAC", "AIF1 Slot 0 Left", 335 "Right DAC", "DACR", !! 359 "Right DAC", "AIF1 Slot 0 Right", 336 "ADCL", "Left ADC", !! 360 "AIF1 Slot 0 Left ADC", "Left ADC", 337 "ADCR", "Right ADC", !! 361 "AIF1 Slot 0 Right ADC", "Right ADC", 338 "Headphone Jack", "HP" 362 "Headphone Jack", "HP", 339 "MIC2", "Microphone Ja 363 "MIC2", "Microphone Jack", 340 "Onboard Microphone", 364 "Onboard Microphone", "MBIAS", 341 "MIC1", "Onboard Micro 365 "MIC1", "Onboard Microphone"; 342 }; 366 }; 343 367 344 &uart0 { 368 &uart0 { 345 pinctrl-names = "default"; 369 pinctrl-names = "default"; 346 pinctrl-0 = <&uart0_pb_pins>; 370 pinctrl-0 = <&uart0_pb_pins>; 347 status = "okay"; 371 status = "okay"; 348 }; 372 }; 349 373 350 &uart1 { 374 &uart1 { 351 pinctrl-names = "default"; 375 pinctrl-names = "default"; 352 pinctrl-0 = <&uart1_pins>, <&uart1_rts 376 pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; 353 uart-has-rtscts; 377 uart-has-rtscts; 354 status = "okay"; 378 status = "okay"; 355 379 356 bluetooth { 380 bluetooth { 357 compatible = "brcm,bcm43438-bt 381 compatible = "brcm,bcm43438-bt"; 358 clocks = <&rtc CLK_OSC32K_FANO !! 382 clocks = <&rtc 1>; 359 clock-names = "lpo"; 383 clock-names = "lpo"; 360 vbat-supply = <®_dldo2>; 384 vbat-supply = <®_dldo2>; 361 vddio-supply = <®_dldo4>; 385 vddio-supply = <®_dldo4>; 362 device-wakeup-gpios = <&r_pio 386 device-wakeup-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */ 363 host-wakeup-gpios = <&r_pio 0 387 host-wakeup-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */ 364 shutdown-gpios = <&r_pio 0 4 G 388 shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */ 365 }; 389 }; 366 }; 390 }; 367 391 368 &usb_otg { 392 &usb_otg { 369 dr_mode = "otg"; 393 dr_mode = "otg"; 370 status = "okay"; 394 status = "okay"; 371 }; 395 }; 372 396 373 &usb_power_supply { << 374 status = "okay"; << 375 }; << 376 << 377 &usbphy { 397 &usbphy { 378 usb0_id_det-gpios = <&pio 7 9 GPIO_ACT 398 usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ 379 usb0_vbus_power-supply = <&usb_power_s << 380 usb0_vbus-supply = <®_drivevbus>; 399 usb0_vbus-supply = <®_drivevbus>; 381 status = "okay"; 400 status = "okay"; 382 }; 401 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.