1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2/* 3 * Copyright (c) 2018 MundoReader S.L. 4 * Author: Heiko Stuebner <heiko.stuebner@bq.com> 5 */ 6 7/dts-v1/; 8#include <dt-bindings/i2c/i2c.h> 9#include <dt-bindings/input/input.h> 10#include <dt-bindings/interrupt-controller/irq.h> 11#include "rk3188.dtsi" 12 13/ { 14 model = "BQ Edison2 Quad-Core"; 15 compatible = "mundoreader,bq-edison2qc", "rockchip,rk3188"; 16 17 aliases { 18 mmc0 = &mmc0; 19 mmc1 = &mmc1; 20 mmc2 = &emmc; 21 }; 22 23 memory@60000000 { 24 device_type = "memory"; 25 reg = <0x60000000 0x80000000>; 26 }; 27 28 backlight: backlight { 29 compatible = "pwm-backlight"; 30 power-supply = <&vsys>; 31 pwms = <&pwm1 0 25000>; 32 }; 33 34 gpio-keys { 35 compatible = "gpio-keys"; 36 autorepeat; 37 pinctrl-names = "default"; 38 pinctrl-0 = <&pwr_key &usb_int>; 39 40 key-power { 41 gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; 42 linux,code = <KEY_POWER>; 43 label = "GPIO Key Power"; 44 linux,input-type = <1>; 45 debounce-interval = <100>; 46 wakeup-source; 47 }; 48 49 wake_on_usb: key-wake-on-usb { 50 label = "Wake-on-USB"; 51 gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; 52 linux,code = <KEY_WAKEUP>; 53 wakeup-source; 54 }; 55 }; 56 57 gpio-poweroff { 58 compatible = "gpio-poweroff"; 59 gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>; 60 pinctrl-names = "default"; 61 pinctrl-0 = <&pwr_hold>; 62 /* only drive the pin low until device is off */ 63 active-delay-ms = <3000>; 64 }; 65 66 lvds-encoder { 67 compatible = "ti,sn75lvds83", "lvds-encoder"; 68 69 ports { 70 #address-cells = <1>; 71 #size-cells = <0>; 72 73 port@0 { 74 reg = <0>; 75 76 lvds_in_vop0: endpoint { 77 remote-endpoint = <&vop0_out_lvds>; 78 }; 79 }; 80 81 port@1 { 82 reg = <1>; 83 84 lvds_out_panel: endpoint { 85 remote-endpoint = <&panel_in_lvds>; 86 }; 87 }; 88 }; 89 }; 90 91 panel { 92 compatible = "innolux,ee101ia-01d", "panel-lvds"; 93 backlight = <&backlight>; 94 95 /* pin LCD_CS, Nshtdn input of lvds-encoder */ 96 enable-gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_HIGH>; 97 pinctrl-names = "default"; 98 pinctrl-0 = <&lcd_cs>; 99 power-supply = <&vcc_lcd>; 100 101 data-mapping = "vesa-24"; 102 height-mm = <163>; 103 width-mm = <261>; 104 105 panel-timing { 106 clock-frequency = <72000000>; 107 hactive = <1280>; 108 vactive = <800>; 109 hback-porch = <160>; 110 hfront-porch = <16>; 111 hsync-len = <10>; 112 vback-porch = <23>; 113 vfront-porch = <12>; 114 vsync-len = <3>; 115 }; 116 117 port { 118 panel_in_lvds: endpoint { 119 remote-endpoint = <&lvds_out_panel>; 120 }; 121 }; 122 }; 123 124 sdio_pwrseq: sdio-pwrseq { 125 compatible = "mmc-pwrseq-simple"; 126 clocks = <&hym8563>; 127 clock-names = "ext_clock"; 128 pinctrl-names = "default"; 129 pinctrl-0 = <&wifi_reg_on>; 130 reset-gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_LOW>; 131 }; 132 133 avdd_cif: cif-avdd-regulator { 134 compatible = "regulator-fixed"; 135 regulator-name = "avdd-cif"; 136 regulator-min-microvolt = <2800000>; 137 regulator-max-microvolt = <2800000>; 138 gpio = <&gpio1 RK_PA6 GPIO_ACTIVE_LOW>; 139 pinctrl-names = "default"; 140 pinctrl-0 = <&cif_avdd_en>; 141 startup-delay-us = <100000>; 142 vin-supply = <&vcc28_cif>; 143 }; 144 145 vcc_5v: vcc-5v-regulator { 146 compatible = "regulator-fixed"; 147 regulator-name = "vcc-5v"; 148 regulator-min-microvolt = <5000000>; 149 regulator-max-microvolt = <5000000>; 150 enable-active-high; 151 gpio = <&gpio0 RK_PA3 GPIO_ACTIVE_HIGH>; 152 pinctrl-names = "default"; 153 pinctrl-0 = <&v5_drv>; 154 vin-supply = <&vsys>; 155 }; 156 157 vcc_lcd: lcd-regulator { 158 compatible = "regulator-fixed"; 159 regulator-name = "vcc-lcd"; 160 gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>; 161 pinctrl-names = "default"; 162 pinctrl-0 = <&lcd_en>; 163 startup-delay-us = <50000>; 164 vin-supply = <&vcc_io>; 165 }; 166 167 vcc_otg: usb-otg-regulator { 168 compatible = "regulator-fixed"; 169 regulator-name = "vcc-otg"; 170 regulator-min-microvolt = <5000000>; 171 regulator-max-microvolt = <5000000>; 172 enable-active-high; 173 gpio = <&gpio3 RK_PB1 GPIO_ACTIVE_HIGH>; 174 pinctrl-names = "default"; 175 pinctrl-0 = <&otg_drv>; 176 startup-delay-us = <100000>; 177 vin-supply = <&vcc_5v>; 178 }; 179 180 vcc_sd: sdmmc-regulator { 181 compatible = "regulator-fixed"; 182 regulator-name = "vcc-sd"; 183 regulator-min-microvolt = <3300000>; 184 regulator-max-microvolt = <3300000>; 185 gpio = <&gpio3 RK_PA1 GPIO_ACTIVE_LOW>; 186 pinctrl-names = "default"; 187 pinctrl-0 = <&sdmmc_pwr>; 188 startup-delay-us = <100000>; 189 vin-supply = <&vcc_io>; 190 }; 191 192 vccq_emmc: emmc-vccq-regulator { 193 compatible = "regulator-fixed"; 194 regulator-name = "vccq-emmc"; 195 regulator-min-microvolt = <2800000>; 196 regulator-max-microvolt = <2800000>; 197 vin-supply = <&vcc_io>; 198 }; 199 200 /* supplied from the bq24196 */ 201 vsys: vsys-regulator { 202 compatible = "regulator-fixed"; 203 regulator-name = "vsys"; 204 regulator-min-microvolt = <5000000>; 205 regulator-max-microvolt = <5000000>; 206 regulator-boot-on; 207 }; 208}; 209 210&cpu0 { 211 cpu-supply = <&vdd_arm>; 212}; 213 214&cpu1 { 215 cpu-supply = <&vdd_arm>; 216}; 217 218&cpu2 { 219 cpu-supply = <&vdd_arm>; 220}; 221 222&cpu3 { 223 cpu-supply = <&vdd_arm>; 224}; 225 226&cru { 227 assigned-clocks = <&cru PLL_GPLL>, <&cru PLL_CPLL>, 228 <&cru ACLK_CPU>, 229 <&cru HCLK_CPU>, <&cru PCLK_CPU>, 230 <&cru ACLK_PERI>, <&cru HCLK_PERI>, 231 <&cru PCLK_PERI>; 232 assigned-clock-rates = <594000000>, <504000000>, 233 <300000000>, 234 <150000000>, <75000000>, 235 <300000000>, <150000000>, 236 <75000000>; 237}; 238 239&emmc { 240 bus-width = <8>; 241 cap-mmc-highspeed; 242 non-removable; 243 pinctrl-names = "default"; 244 pinctrl-0 = <&emmc_clk &emmc_cmd>; 245 vmmc-supply = <&vcc_io>; 246 vqmmc-supply = <&vccq_emmc>; 247 status = "okay"; 248}; 249 250&gpu { 251 status = "okay"; 252}; 253 254&i2c0 { 255 clock-frequency = <400000>; 256 status = "okay"; 257 258 lis3de: accelerometer@29 { 259 compatible = "st,lis3de"; 260 reg = <0x29>; 261 interrupt-parent = <&gpio0>; 262 interrupts = <RK_PB7 IRQ_TYPE_EDGE_RISING>; 263 pinctrl-names = "default"; 264 pinctrl-0 = <&gsensor_int>; 265 rotation-matrix = "1", "0", "0", 266 "0", "-1", "0", 267 "0", "0", "1"; 268 vdd-supply = <&vcc_io>; 269 }; 270}; 271 272&i2c1 { 273 clock-frequency = <400000>; 274 status = "okay"; 275 276 tmp108@48 { 277 compatible = "ti,tmp108"; 278 reg = <0x48>; 279 interrupt-parent = <&gpio1>; 280 interrupts = <RK_PA7 IRQ_TYPE_LEVEL_LOW>; 281 pinctrl-names = "default"; 282 pinctrl-0 = <&tmp_alrt>; 283 #thermal-sensor-cells = <0>; 284 }; 285 286 hym8563: rtc@51 { 287 compatible = "haoyu,hym8563"; 288 reg = <0x51>; 289 interrupt-parent = <&gpio0>; 290 interrupts = <RK_PB5 IRQ_TYPE_EDGE_FALLING>; 291 pinctrl-names = "default"; 292 pinctrl-0 = <&rtc_int>; 293 #clock-cells = <0>; 294 clock-output-names = "xin32k"; 295 }; 296 297 bat: battery@55 { 298 compatible = "ti,bq27541"; 299 reg = <0x55>; 300 power-supplies = <&bq24196>; 301 }; 302 303 act8846: pmic@5a { 304 compatible = "active-semi,act8846"; 305 reg = <0x5a>; 306 pinctrl-names = "default"; 307 pinctrl-0 = <&dvs0_ctl &pmic_int>; 308 309 vp1-supply = <&vsys>; 310 vp2-supply = <&vsys>; 311 vp3-supply = <&vsys>; 312 vp4-supply = <&vsys>; 313 inl1-supply = <&vcc_io>; 314 inl2-supply = <&vsys>; 315 inl3-supply = <&vsys>; 316 317 regulators { 318 vcc_ddr: REG1 { 319 regulator-name = "VCC_DDR"; 320 regulator-min-microvolt = <1200000>; 321 regulator-max-microvolt = <1200000>; 322 regulator-always-on; 323 }; 324 325 vdd_log: REG2 { 326 regulator-name = "VDD_LOG"; 327 regulator-min-microvolt = <1000000>; 328 regulator-max-microvolt = <1200000>; 329 regulator-always-on; 330 }; 331 332 vdd_arm: REG3 { 333 regulator-name = "VDD_ARM"; 334 regulator-min-microvolt = <875000>; 335 regulator-max-microvolt = <1350000>; 336 regulator-always-on; 337 }; 338 339 vcc_io: vcc_hdmi: REG4 { 340 regulator-name = "VCC_IO"; 341 regulator-min-microvolt = <3000000>; 342 regulator-max-microvolt = <3000000>; 343 regulator-always-on; 344 }; 345 346 vdd_10: REG5 { 347 regulator-name = "VDD_10"; 348 regulator-min-microvolt = <1000000>; 349 regulator-max-microvolt = <1000000>; 350 regulator-always-on; 351 }; 352 353 vdd_12: REG6 { 354 regulator-name = "VDD_12"; 355 regulator-min-microvolt = <1200000>; 356 regulator-max-microvolt = <1200000>; 357 regulator-always-on; 358 }; 359 360 vcc18_cif: REG7 { 361 regulator-name = "VCC18_CIF"; 362 regulator-min-microvolt = <1800000>; 363 regulator-max-microvolt = <1800000>; 364 regulator-always-on; 365 }; 366 367 vcca_33: REG8 { 368 regulator-name = "VCCA_33"; 369 regulator-min-microvolt = <3300000>; 370 regulator-max-microvolt = <3300000>; 371 regulator-always-on; 372 }; 373 374 vcc_tp: REG9 { 375 regulator-name = "VCC_TP"; 376 regulator-min-microvolt = <3300000>; 377 regulator-max-microvolt = <3300000>; 378 regulator-always-on; 379 }; 380 381 vccio_wl: REG10 { 382 regulator-name = "VCCIO_WL"; 383 regulator-min-microvolt = <2800000>; 384 regulator-max-microvolt = <2800000>; 385 regulator-always-on; 386 }; 387 388 vcc_18: REG11 { 389 regulator-name = "VCC_18"; 390 regulator-min-microvolt = <1800000>; 391 regulator-max-microvolt = <1800000>; 392 regulator-always-on; 393 }; 394 395 vcc28_cif: REG12 { 396 regulator-name = "VCC28_CIF"; 397 regulator-min-microvolt = <2800000>; 398 regulator-max-microvolt = <2800000>; 399 regulator-always-on; 400 }; 401 }; 402 }; 403 404 bq24196: charger@6b { 405 compatible = "ti,bq24196"; 406 reg = <0x6b>; 407 interrupt-parent = <&gpio0>; 408 interrupts = <RK_PD7 IRQ_TYPE_EDGE_FALLING>; 409 pinctrl-names = "default"; 410 pinctrl-0 = <&charger_int &chg_ctl &otg_en>; 411 ti,system-minimum-microvolt = <3200000>; 412 monitored-battery = <&bat>; 413 omit-battery-class; 414 415 usb_otg_vbus: usb-otg-vbus { }; 416 }; 417}; 418 419&i2c2 { 420 clock-frequency = <400000>; 421 status = "okay"; 422 423 ft5606: touchscreen@3e { 424 compatible = "edt,edt-ft5506"; 425 reg = <0x3e>; 426 interrupt-parent = <&gpio1>; 427 interrupts = <RK_PB7 IRQ_TYPE_EDGE_FALLING>; 428 pinctrl-names = "default"; 429 pinctrl-0 = <&tp_int &tp_rst>; 430 reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>; 431 touchscreen-inverted-y; 432 /* hw ts resolution does not match display */ 433 touchscreen-size-y = <1024>; 434 touchscreen-size-x = <768>; 435 touchscreen-swapped-x-y; 436 }; 437}; 438 439&i2c3 { 440 clock-frequency = <400000>; 441 status = "okay"; 442}; 443 444&i2c4 { 445 clock-frequency = <400000>; 446 status = "okay"; 447 448 rt5616: codec@1b { 449 compatible = "realtek,rt5616"; 450 reg = <0x1b>; 451 clocks = <&cru SCLK_I2S0>; 452 clock-names = "mclk"; 453 #sound-dai-cells = <0>; 454 }; 455}; 456 457&i2s0 { 458 status = "okay"; 459}; 460 461&mmc0 { 462 bus-width = <4>; 463 cap-mmc-highspeed; 464 cap-sd-highspeed; 465 disable-wp; 466 pinctrl-names = "default"; 467 pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>; 468 vmmc-supply = <&vcc_sd>; 469 status = "okay"; 470}; 471 472&mmc1 { 473 bus-width = <4>; 474 cap-sd-highspeed; 475 keep-power-in-suspend; 476 mmc-pwrseq = <&sdio_pwrseq>; 477 non-removable; 478 pinctrl-names = "default"; 479 pinctrl-0 = <&sd1_clk>, <&sd1_cmd>, <&sd1_bus4>; 480 vqmmc-supply = <&vccio_wl>; 481 #address-cells = <1>; 482 #size-cells = <0>; 483 status = "okay"; 484 485 brcmf: wifi@1 { 486 reg = <1>; 487 compatible = "brcm,bcm4329-fmac"; 488 interrupt-parent = <&gpio3>; 489 interrupts = <RK_PD2 IRQ_TYPE_NONE>; 490 interrupt-names = "host-wake"; 491 brcm,drive-strength = <5>; 492 pinctrl-names = "default"; 493 pinctrl-0 = <&wifi_host_wake>; 494 }; 495}; 496 497&pwm1 { 498 status = "okay"; 499}; 500 501&pinctrl { 502 pcfg_output_high: pcfg-output-high { 503 output-high; 504 }; 505 506 pcfg_output_low: pcfg-output-low { 507 output-low; 508 }; 509 510 act8846 { 511 dvs0_ctl: dvs0-ctl { 512 rockchip,pins = <3 RK_PD3 RK_FUNC_GPIO &pcfg_output_low>; 513 }; 514 515 pmic_int: pmic-int { 516 rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>; 517 }; 518 }; 519 520 bq24196 { 521 charger_int: charger-int { 522 rockchip,pins = <0 RK_PD7 RK_FUNC_GPIO &pcfg_pull_up>; 523 }; 524 525 /* pin hog to make it select usb profile */ 526 chg_ctl: chg-ctl { 527 rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_output_high>; 528 }; 529 530 /* low: charging, high: complete, fault: blinking */ 531 chg_det: chg-det { 532 rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; 533 }; 534 535 /* charging enabled when pin low and register set */ 536 chg_en: chg-en { 537 rockchip,pins = <0 RK_PC1 RK_FUNC_GPIO &pcfg_output_low>; 538 }; 539 540 /* bq29196 powergood (when low) signal */ 541 dc_det: dc-det { 542 rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; 543 }; 544 545 /* wire bq24196 otg pin to high, to enable 500mA charging */ 546 otg_en: otg-en { 547 rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_output_high>; 548 }; 549 }; 550 551 camera { 552 cif0_pdn: cif0-pdn { 553 rockchip,pins = <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>; 554 }; 555 556 cif1_pdn: cif1-pdn { 557 rockchip,pins = <3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; 558 }; 559 560 cif_avdd_en: cif-avdd-en { 561 rockchip,pins = <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; 562 }; 563 }; 564 565 display { 566 lcd_cs: lcd-cs { 567 rockchip,pins = <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>; 568 }; 569 570 lcd_en: lcd-en { 571 rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; 572 }; 573 }; 574 575 ft5606 { 576 tp_int: tp-int { 577 rockchip,pins = <1 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>; 578 }; 579 580 tp_rst: tp-rst { 581 rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; 582 }; 583 }; 584 585 hdmi { 586 hdmi_int: hdmi-int { 587 rockchip,pins = <2 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>; 588 }; 589 590 hdmi_rst: hdmi-rst { 591 rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; 592 }; 593 }; 594 595 hym8563 { 596 rtc_int: rtc-int { 597 rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>; 598 }; 599 }; 600 601 keys { 602 pwr_hold: pwr-hold { 603 rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>; 604 }; 605 606 pwr_key: pwr-key { 607 rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>; 608 }; 609 }; 610 611 lis3de { 612 gsensor_int: gsensor-int { 613 rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>; 614 }; 615 }; 616 617 mmc { 618 sdmmc_pwr: sdmmc-pwr { 619 rockchip,pins = <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>; 620 }; 621 }; 622 623 tmp108 { 624 tmp_alrt: tmp-alrt { 625 rockchip,pins = <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>; 626 }; 627 }; 628 629 usb { 630 v5_drv: v5-drv { 631 rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; 632 }; 633 634 otg_drv: otg-drv { 635 rockchip,pins = <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; 636 }; 637 638 usb_int: usb-int { 639 rockchip,pins = <0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>; 640 }; 641 }; 642 643 rk903 { 644 bt_host_wake: bt-host-wake { 645 rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; 646 }; 647 648 bt_reg_on: bt-reg-on { 649 rockchip,pins = <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; 650 }; 651 652 /* pin hog to pull the reset high */ 653 bt_rst: bt-rst { 654 rockchip,pins = <3 RK_PD1 RK_FUNC_GPIO &pcfg_output_high>; 655 }; 656 657 bt_wake: bt-wake { 658 rockchip,pins = <3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; 659 }; 660 661 wifi_host_wake: wifi-host-wake { 662 rockchip,pins = <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>; 663 }; 664 665 wifi_reg_on: wifi-reg-on { 666 rockchip,pins = <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; 667 }; 668 }; 669}; 670 671&saradc { 672 vref-supply = <&vcc_18>; 673 status = "okay"; 674}; 675 676&spdif { 677 status = "okay"; 678}; 679 680&uart0 { 681 pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; 682 status = "okay"; 683 684 bluetooth { 685 compatible = "brcm,bcm43438-bt"; 686 max-speed = <2000000>; 687 device-wakeup-gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_HIGH>; 688 host-wakeup-gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; 689 shutdown-gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_HIGH>; 690 pinctrl-names = "default"; 691 pinctrl-0 = <&bt_host_wake &bt_reg_on &bt_rst &bt_wake>; 692 }; 693}; 694 695&uart1 { 696 status = "okay"; 697}; 698 699&uart2 { 700 status = "okay"; 701}; 702 703&uart3 { 704 pinctrl-0 = <&uart3_xfer &uart3_cts &uart3_rts>; 705 status = "okay"; 706}; 707 708&usbphy { 709 status = "okay"; 710}; 711 712&usb_host { 713 status = "okay"; 714}; 715 716&usb_otg { 717 status = "okay"; 718}; 719 720&vop0 { 721 status = "okay"; 722}; 723 724&vop0_out { 725 vop0_out_lvds: endpoint { 726 remote-endpoint = <&lvds_in_vop0>; 727 }; 728}; 729 730&vop1 { 731 pinctrl-names = "default"; 732 pinctrl-0 = <&lcdc1_dclk &lcdc1_den &lcdc1_hsync 733 &lcdc1_vsync &lcdc1_rgb24>; 734 status = "okay"; 735}; 736 737&wdt { 738 status = "okay"; 739}; 740