1/* 2 * Copyright (c) 2018 MediaTek Inc. 3 * Author: Ryder Lee <ryder.lee@mediatek.com> 4 * 5 * SPDX-License-Identifier: (GPL-2.0 OR MIT) 6 */ 7 8/dts-v1/; 9#include <dt-bindings/input/input.h> 10#include <dt-bindings/gpio/gpio.h> 11#include <dt-bindings/leds/common.h> 12 13#include "mt7622.dtsi" 14#include "mt6380.dtsi" 15 16/ { 17 model = "Bananapi BPI-R64"; 18 compatible = "bananapi,bpi-r64", "mediatek,mt7622"; 19 20 aliases { 21 serial0 = &uart0; 22 }; 23 24 chosen { 25 stdout-path = "serial0:115200n8"; 26 bootargs = "earlycon=uart8250,mmio32,0x11002000 swiotlb=512"; 27 }; 28 29 cpus { 30 cpu@0 { 31 proc-supply = <&mt6380_vcpu_reg>; 32 sram-supply = <&mt6380_vm_reg>; 33 }; 34 35 cpu@1 { 36 proc-supply = <&mt6380_vcpu_reg>; 37 sram-supply = <&mt6380_vm_reg>; 38 }; 39 }; 40 41 gpio-keys { 42 compatible = "gpio-keys"; 43 44 factory-key { 45 label = "factory"; 46 linux,code = <BTN_0>; 47 gpios = <&pio 0 GPIO_ACTIVE_HIGH>; 48 }; 49 50 wps-key { 51 label = "wps"; 52 linux,code = <KEY_WPS_BUTTON>; 53 gpios = <&pio 102 GPIO_ACTIVE_LOW>; 54 }; 55 }; 56 57 leds { 58 compatible = "gpio-leds"; 59 60 led-0 { 61 label = "bpi-r64:pio:green"; 62 color = <LED_COLOR_ID_GREEN>; 63 gpios = <&pio 89 GPIO_ACTIVE_HIGH>; 64 default-state = "off"; 65 }; 66 67 led-1 { 68 label = "bpi-r64:pio:red"; 69 color = <LED_COLOR_ID_RED>; 70 gpios = <&pio 88 GPIO_ACTIVE_HIGH>; 71 default-state = "off"; 72 }; 73 }; 74 75 memory { 76 reg = <0 0x40000000 0 0x40000000>; 77 }; 78 79 reg_1p8v: regulator-1p8v { 80 compatible = "regulator-fixed"; 81 regulator-name = "fixed-1.8V"; 82 regulator-min-microvolt = <1800000>; 83 regulator-max-microvolt = <1800000>; 84 regulator-always-on; 85 }; 86 87 reg_3p3v: regulator-3p3v { 88 compatible = "regulator-fixed"; 89 regulator-name = "fixed-3.3V"; 90 regulator-min-microvolt = <3300000>; 91 regulator-max-microvolt = <3300000>; 92 regulator-boot-on; 93 regulator-always-on; 94 }; 95 96 reg_5v: regulator-5v { 97 compatible = "regulator-fixed"; 98 regulator-name = "fixed-5V"; 99 regulator-min-microvolt = <5000000>; 100 regulator-max-microvolt = <5000000>; 101 regulator-boot-on; 102 regulator-always-on; 103 }; 104}; 105 106&bch { 107 status = "disabled"; 108}; 109 110&btif { 111 status = "okay"; 112}; 113 114&cir { 115 pinctrl-names = "default"; 116 pinctrl-0 = <&irrx_pins>; 117 status = "okay"; 118}; 119 120ð { 121 status = "okay"; 122 gmac0: mac@0 { 123 compatible = "mediatek,eth-mac"; 124 reg = <0>; 125 phy-mode = "2500base-x"; 126 127 fixed-link { 128 speed = <2500>; 129 full-duplex; 130 pause; 131 }; 132 }; 133 134 gmac1: mac@1 { 135 compatible = "mediatek,eth-mac"; 136 reg = <1>; 137 phy-mode = "rgmii"; 138 139 fixed-link { 140 speed = <1000>; 141 full-duplex; 142 pause; 143 }; 144 }; 145 146 mdio: mdio-bus { 147 #address-cells = <1>; 148 #size-cells = <0>; 149 150 switch@0 { 151 compatible = "mediatek,mt7531"; 152 reg = <0>; 153 reset-gpios = <&pio 54 0>; 154 155 ports { 156 #address-cells = <1>; 157 #size-cells = <0>; 158 159 port@0 { 160 reg = <0>; 161 label = "wan"; 162 }; 163 164 port@1 { 165 reg = <1>; 166 label = "lan0"; 167 }; 168 169 port@2 { 170 reg = <2>; 171 label = "lan1"; 172 }; 173 174 port@3 { 175 reg = <3>; 176 label = "lan2"; 177 }; 178 179 port@4 { 180 reg = <4>; 181 label = "lan3"; 182 }; 183 184 port@6 { 185 reg = <6>; 186 label = "cpu"; 187 ethernet = <&gmac0>; 188 phy-mode = "2500base-x"; 189 190 fixed-link { 191 speed = <2500>; 192 full-duplex; 193 pause; 194 }; 195 }; 196 }; 197 }; 198 199 }; 200}; 201 202&i2c1 { 203 pinctrl-names = "default"; 204 pinctrl-0 = <&i2c1_pins>; 205 status = "okay"; 206}; 207 208&i2c2 { 209 pinctrl-names = "default"; 210 pinctrl-0 = <&i2c2_pins>; 211 status = "okay"; 212}; 213 214&mmc0 { 215 pinctrl-names = "default", "state_uhs"; 216 pinctrl-0 = <&emmc_pins_default>; 217 pinctrl-1 = <&emmc_pins_uhs>; 218 status = "okay"; 219 bus-width = <8>; 220 max-frequency = <50000000>; 221 cap-mmc-highspeed; 222 mmc-hs200-1_8v; 223 vmmc-supply = <®_3p3v>; 224 vqmmc-supply = <®_1p8v>; 225 assigned-clocks = <&topckgen CLK_TOP_MSDC30_0_SEL>; 226 assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>; 227 non-removable; 228}; 229 230&mmc1 { 231 pinctrl-names = "default", "state_uhs"; 232 pinctrl-0 = <&sd0_pins_default>; 233 pinctrl-1 = <&sd0_pins_uhs>; 234 status = "okay"; 235 bus-width = <4>; 236 max-frequency = <50000000>; 237 cap-sd-highspeed; 238 r_smpl = <1>; 239 cd-gpios = <&pio 81 GPIO_ACTIVE_LOW>; 240 vmmc-supply = <®_3p3v>; 241 vqmmc-supply = <®_3p3v>; 242 assigned-clocks = <&topckgen CLK_TOP_MSDC30_1_SEL>; 243 assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>; 244}; 245 246&nandc { 247 pinctrl-names = "default"; 248 pinctrl-0 = <¶llel_nand_pins>; 249 status = "disabled"; 250}; 251 252&nor_flash { 253 pinctrl-names = "default"; 254 pinctrl-0 = <&spi_nor_pins>; 255 status = "disabled"; 256 257 flash@0 { 258 compatible = "jedec,spi-nor"; 259 reg = <0>; 260 }; 261}; 262 263&pcie0 { 264 pinctrl-names = "default"; 265 pinctrl-0 = <&pcie0_pins>; 266 status = "okay"; 267}; 268 269&pcie1 { 270 pinctrl-names = "default"; 271 pinctrl-0 = <&pcie1_pins>; 272 status = "okay"; 273}; 274 275&pio { 276 /* Attention: GPIO 90 is used to switch between PCIe@1,0 and 277 * SATA functions. i.e. output-high: PCIe, output-low: SATA 278 */ 279 asm_sel { 280 gpio-hog; 281 gpios = <90 GPIO_ACTIVE_HIGH>; 282 output-high; 283 }; 284 285 /* eMMC is shared pin with parallel NAND */ 286 emmc_pins_default: emmc-pins-default { 287 mux { 288 function = "emmc", "emmc_rst"; 289 groups = "emmc"; 290 }; 291 292 /* "NDL0","NDL1","NDL2","NDL3","NDL4","NDL5","NDL6","NDL7", 293 * "NRB","NCLE" pins are used as DAT0,DAT1,DAT2,DAT3,DAT4, 294 * DAT5,DAT6,DAT7,CMD,CLK for eMMC respectively 295 */ 296 conf-cmd-dat { 297 pins = "NDL0", "NDL1", "NDL2", 298 "NDL3", "NDL4", "NDL5", 299 "NDL6", "NDL7", "NRB"; 300 input-enable; 301 bias-pull-up; 302 }; 303 304 conf-clk { 305 pins = "NCLE"; 306 bias-pull-down; 307 }; 308 }; 309 310 emmc_pins_uhs: emmc-pins-uhs { 311 mux { 312 function = "emmc"; 313 groups = "emmc"; 314 }; 315 316 conf-cmd-dat { 317 pins = "NDL0", "NDL1", "NDL2", 318 "NDL3", "NDL4", "NDL5", 319 "NDL6", "NDL7", "NRB"; 320 input-enable; 321 drive-strength = <4>; 322 bias-pull-up; 323 }; 324 325 conf-clk { 326 pins = "NCLE"; 327 drive-strength = <4>; 328 bias-pull-down; 329 }; 330 }; 331 332 eth_pins: eth-pins { 333 mux { 334 function = "eth"; 335 groups = "mdc_mdio", "rgmii_via_gmac2"; 336 }; 337 }; 338 339 i2c1_pins: i2c1-pins { 340 mux { 341 function = "i2c"; 342 groups = "i2c1_0"; 343 }; 344 }; 345 346 i2c2_pins: i2c2-pins { 347 mux { 348 function = "i2c"; 349 groups = "i2c2_0"; 350 }; 351 }; 352 353 i2s1_pins: i2s1-pins { 354 mux { 355 function = "i2s"; 356 groups = "i2s_out_mclk_bclk_ws", 357 "i2s1_in_data", 358 "i2s1_out_data"; 359 }; 360 361 conf { 362 pins = "I2S1_IN", "I2S1_OUT", "I2S_BCLK", 363 "I2S_WS", "I2S_MCLK"; 364 drive-strength = <12>; 365 bias-pull-down; 366 }; 367 }; 368 369 irrx_pins: irrx-pins { 370 mux { 371 function = "ir"; 372 groups = "ir_1_rx"; 373 }; 374 }; 375 376 irtx_pins: irtx-pins { 377 mux { 378 function = "ir"; 379 groups = "ir_1_tx"; 380 }; 381 }; 382 383 /* Parallel nand is shared pin with eMMC */ 384 parallel_nand_pins: parallel-nand-pins { 385 mux { 386 function = "flash"; 387 groups = "par_nand"; 388 }; 389 }; 390 391 pcie0_pins: pcie0-pins { 392 mux { 393 function = "pcie"; 394 groups = "pcie0_pad_perst", 395 "pcie0_1_waken", 396 "pcie0_1_clkreq"; 397 }; 398 }; 399 400 pcie1_pins: pcie1-pins { 401 mux { 402 function = "pcie"; 403 groups = "pcie1_pad_perst", 404 "pcie1_0_waken", 405 "pcie1_0_clkreq"; 406 }; 407 }; 408 409 pmic_bus_pins: pmic-bus-pins { 410 mux { 411 function = "pmic"; 412 groups = "pmic_bus"; 413 }; 414 }; 415 416 pwm_pins: pwm-pins { 417 mux { 418 function = "pwm"; 419 groups = "pwm_ch1_0", /* mt7622_pwm_ch1_0_pins[] = { 51, }; */ 420 "pwm_ch2_0", /* mt7622_pwm_ch2_0_pins[] = { 52, }; */ 421 "pwm_ch3_2", /* mt7622_pwm_ch3_2_pins[] = { 97, }; */ 422 "pwm_ch4_1", /* mt7622_pwm_ch4_1_pins[] = { 67, }; */ 423 "pwm_ch5_0", /* mt7622_pwm_ch5_0_pins[] = { 68, }; */ 424 "pwm_ch6_0"; /* mt7622_pwm_ch6_0_pins[] = { 69, }; */ 425 }; 426 }; 427 428 wled_pins: wled-pins { 429 mux { 430 function = "led"; 431 groups = "wled"; 432 }; 433 }; 434 435 sd0_pins_default: sd0-pins-default { 436 mux { 437 function = "sd"; 438 groups = "sd_0"; 439 }; 440 441 /* "I2S2_OUT, "I2S4_IN"", "I2S3_IN", "I2S2_IN", 442 * "I2S4_OUT", "I2S3_OUT" are used as DAT0, DAT1, 443 * DAT2, DAT3, CMD, CLK for SD respectively. 444 */ 445 conf-cmd-data { 446 pins = "I2S2_OUT", "I2S4_IN", "I2S3_IN", 447 "I2S2_IN","I2S4_OUT"; 448 input-enable; 449 drive-strength = <8>; 450 bias-pull-up; 451 }; 452 conf-clk { 453 pins = "I2S3_OUT"; 454 drive-strength = <12>; 455 bias-pull-down; 456 }; 457 conf-cd { 458 pins = "TXD3"; 459 bias-pull-up; 460 }; 461 }; 462 463 sd0_pins_uhs: sd0-pins-uhs { 464 mux { 465 function = "sd"; 466 groups = "sd_0"; 467 }; 468 469 conf-cmd-data { 470 pins = "I2S2_OUT", "I2S4_IN", "I2S3_IN", 471 "I2S2_IN","I2S4_OUT"; 472 input-enable; 473 bias-pull-up; 474 }; 475 476 conf-clk { 477 pins = "I2S3_OUT"; 478 bias-pull-down; 479 }; 480 }; 481 482 /* Serial NAND is shared pin with SPI-NOR */ 483 serial_nand_pins: serial-nand-pins { 484 mux { 485 function = "flash"; 486 groups = "snfi"; 487 }; 488 }; 489 490 spic0_pins: spic0-pins { 491 mux { 492 function = "spi"; 493 groups = "spic0_0"; 494 }; 495 }; 496 497 spic1_pins: spic1-pins { 498 mux { 499 function = "spi"; 500 groups = "spic1_0"; 501 }; 502 }; 503 504 /* SPI-NOR is shared pin with serial NAND */ 505 spi_nor_pins: spi-nor-pins { 506 mux { 507 function = "flash"; 508 groups = "spi_nor"; 509 }; 510 }; 511 512 /* serial NAND is shared pin with SPI-NOR */ 513 serial_nand_pins: serial-nand-pins { 514 mux { 515 function = "flash"; 516 groups = "snfi"; 517 }; 518 }; 519 520 uart0_pins: uart0-pins { 521 mux { 522 function = "uart"; 523 groups = "uart0_0_tx_rx" ; 524 }; 525 }; 526 527 uart2_pins: uart2-pins { 528 mux { 529 function = "uart"; 530 groups = "uart2_1_tx_rx" ; 531 }; 532 }; 533 534 watchdog_pins: watchdog-pins { 535 mux { 536 function = "watchdog"; 537 groups = "watchdog"; 538 }; 539 }; 540}; 541 542&pwm { 543 pinctrl-names = "default"; 544 pinctrl-0 = <&pwm_pins>; 545 status = "okay"; 546}; 547 548&pwrap { 549 pinctrl-names = "default"; 550 pinctrl-0 = <&pmic_bus_pins>; 551 552 status = "okay"; 553}; 554 555&sata { 556 status = "disable"; 557}; 558 559&sata_phy { 560 status = "disable"; 561}; 562 563&spi0 { 564 pinctrl-names = "default"; 565 pinctrl-0 = <&spic0_pins>; 566 status = "okay"; 567}; 568 569&spi1 { 570 pinctrl-names = "default"; 571 pinctrl-0 = <&spic1_pins>; 572}; 573 574&ssusb { 575 vusb33-supply = <®_3p3v>; 576 vbus-supply = <®_5v>; 577 status = "okay"; 578}; 579 580&u3phy { 581 status = "okay"; 582}; 583 584&uart0 { 585 pinctrl-names = "default"; 586 pinctrl-0 = <&uart0_pins>; 587 status = "okay"; 588}; 589 590&uart2 { 591 pinctrl-names = "default"; 592 pinctrl-0 = <&uart2_pins>; 593}; 594 595&watchdog { 596 pinctrl-names = "default"; 597 pinctrl-0 = <&watchdog_pins>; 598 status = "okay"; 599}; 600 601&wmac { 602 status = "okay"; 603}; 604