1 // SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 #include <dt-bindings/input/input.h> 3 #include <dt-bindings/gpio/gpio.h> 4 #include <dt-bindings/leds/common.h> 5 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h> 6 #include <dt-bindings/pinctrl/qcom,pmic-mpp.h> 7 #include "qcom-msm8660.dtsi" 8 #include "pm8058.dtsi" 9 10 / { 11 model = "Qualcomm APQ8060 Dragonboard"; 12 compatible = "qcom,apq8060-dragonboard", "qcom,msm8660"; 13 14 aliases { 15 serial0 = &gsbi12_serial; 16 }; 17 18 chosen { 19 stdout-path = "serial0:115200n8"; 20 }; 21 22 /* Main power of the board: 3.7V */ 23 vph: regulator-fixed { 24 compatible = "regulator-fixed"; 25 regulator-min-microvolt = <3700000>; 26 regulator-max-microvolt = <3700000>; 27 regulator-name = "VPH"; 28 regulator-always-on; 29 regulator-boot-on; 30 }; 31 32 /* GPIO controlled ethernet power regulator */ 33 dragon_veth: xc622a331mrg { 34 compatible = "regulator-fixed"; 35 regulator-name = "XC6222A331MR-G"; 36 regulator-min-microvolt = <3300000>; 37 regulator-max-microvolt = <3300000>; 38 vin-supply = <&vph>; 39 gpio = <&pm8058_gpio 40 GPIO_ACTIVE_HIGH>; 40 enable-active-high; 41 pinctrl-names = "default"; 42 pinctrl-0 = <&dragon_veth_gpios>; 43 regulator-always-on; 44 }; 45 46 /* VDDvario fixed regulator */ 47 dragon_vario: nds332p { 48 compatible = "regulator-fixed"; 49 regulator-name = "NDS332P"; 50 regulator-min-microvolt = <1800000>; 51 regulator-max-microvolt = <1800000>; 52 vin-supply = <&pm8058_s3>; 53 }; 54 55 /* This is a levelshifter for SDCC5 */ 56 dragon_vio_txb: txb0104rgyr { 57 compatible = "regulator-fixed"; 58 regulator-name = "Dragon SDCC levelshifter"; 59 vin-supply = <&pm8058_l14>; 60 regulator-always-on; 61 }; 62 63 /* 64 * Capella CM3605 light and proximity sensor mounted directly 65 * on the sensor board. 66 */ 67 cm3605 { 68 compatible = "capella,cm3605"; 69 vdd-supply = <&pm8058_l14>; // 2.85V 70 aset-gpios = <&pm8058_gpio 35 GPIO_ACTIVE_LOW>; 71 capella,aset-resistance-ohms = <100000>; 72 /* Trig on both edges - getting close or far away */ 73 interrupts-extended = <&pm8058_gpio 34 IRQ_TYPE_EDGE_BOTH>; 74 /* MPP05 analog input to the XOADC */ 75 io-channels = <&pm8058_xoadc 0x00 0x05>; 76 io-channel-names = "aout"; 77 pinctrl-names = "default"; 78 pinctrl-0 = <&dragon_cm3605_gpios>, <&dragon_cm3605_mpps>; 79 }; 80 }; 81 82 &ebi2 { 83 /* The EBI2 will instantiate first, then populate its children */ 84 pinctrl-names = "default"; 85 pinctrl-0 = <&dragon_ebi2_pins>; 86 status = "okay"; 87 88 /* 89 * An on-board SMSC LAN9221 chip for "debug ethernet", 90 * which is actually just an ordinary ethernet on the 91 * EBI2. This has a 25MHz chrystal next to it, so no 92 * clocking is needed. 93 */ 94 ethernet@2,0 { 95 compatible = "smsc,lan9221", "smsc,lan9115"; 96 reg = <2 0x0 0x100>; 97 /* 98 * The second interrupt is the PME interrupt 99 * for network wakeup, connected to the TLMM. 100 */ 101 interrupts-extended = <&pm8058_gpio 7 IRQ_TYPE_EDGE_FALLING>, 102 <&tlmm 29 IRQ_TYPE_EDGE_RISING>; 103 reset-gpios = <&tlmm 30 GPIO_ACTIVE_LOW>; 104 vdd33a-supply = <&dragon_veth>; 105 vddvario-supply = <&dragon_vario>; 106 pinctrl-names = "default"; 107 pinctrl-0 = <&dragon_ethernet_gpios>; 108 phy-mode = "mii"; 109 reg-io-width = <2>; 110 smsc,force-external-phy; 111 smsc,irq-push-pull; 112 113 /* 114 * SLOW chipselect config 115 * Delay 9 cycles (140ns@64MHz) between SMSC 116 * LAN9221 Ethernet controller reads and writes 117 * on CS2. 118 */ 119 qcom,xmem-recovery-cycles = <0>; 120 qcom,xmem-write-hold-cycles = <3>; 121 qcom,xmem-write-delta-cycles = <31>; 122 qcom,xmem-read-delta-cycles = <28>; 123 qcom,xmem-write-wait-cycles = <9>; 124 qcom,xmem-read-wait-cycles = <9>; 125 }; 126 }; 127 128 &gsbi3 { 129 qcom,mode = <GSBI_PROT_I2C>; 130 status = "okay"; 131 }; 132 133 &gsbi3_i2c { 134 pinctrl-names = "default"; 135 pinctrl-0 = <&dragon_gsbi3_i2c_pins>; 136 status = "okay"; 137 138 touchscreen@24 { 139 compatible = "cypress,cy8ctma340"; 140 reg = <0x24>; 141 /* Certainly we can do at least 400 kHz */ 142 clock-frequency = <400000>; 143 /* IRQ on GPIO61 called /CTP_INT */ 144 interrupt-parent = <&tlmm>; 145 interrupts = <61 IRQ_TYPE_EDGE_FALLING>; 146 /* 147 * The I2C bus is using a PCA9306 level translator from L16A 148 * to L2B so these two voltages are needed and L16A is 149 * kind of the IO voltage, however L16Aisn't really fed to 150 * the TMA340, which relies entirely on L2B (PM8901 L2). 151 */ 152 vcpin-supply = <&pm8058_l16>; 153 vdd-supply = <&pm8901_l2>; 154 /* GPIO58, called WAKE_CTP */ 155 reset-gpios = <&tlmm 58 GPIO_ACTIVE_LOW>; 156 touchscreen-size-x = <480>; 157 touchscreen-size-y = <800>; 158 active-interval-ms = <0>; 159 touch-timeout-ms = <255>; 160 lowpower-interval-ms = <10>; 161 bootloader-key = /bits/ 8 <0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07>; 162 pinctrl-names = "default"; 163 pinctrl-0 = <&dragon_tma340_gpios>; 164 }; 165 }; 166 167 &gsbi8 { 168 qcom,mode = <GSBI_PROT_I2C>; 169 status = "okay"; 170 }; 171 172 &gsbi8_i2c { 173 pinctrl-names = "default"; 174 pinctrl-0 = <&dragon_gsbi8_i2c_pins>; 175 status = "okay"; 176 177 eeprom@52 { 178 /* A 16KiB Platform ID EEPROM on the CPU carrier board */ 179 compatible = "atmel,24c128"; 180 reg = <0x52>; 181 vcc-supply = <&pm8058_s3>; 182 pagesize = <64>; 183 }; 184 wm8903: wm8903@1a { 185 /* This Woolfson Micro device has an unrouted interrupt line */ 186 compatible = "wlf,wm8903"; 187 reg = <0x1a>; 188 189 AVDD-supply = <&pm8058_l16>; 190 CPVDD-supply = <&pm8058_l16>; 191 DBVDD-supply = <&pm8058_s3>; 192 DCVDD-supply = <&pm8058_l0>; 193 194 gpio-controller; 195 #gpio-cells = <2>; 196 197 micdet-cfg = <0>; 198 micdet-delay = <100>; 199 gpio-cfg = <0xffffffff 0xffffffff 0 0xffffffff 0xffffffff>; 200 }; 201 }; 202 203 &gsbi12 { 204 qcom,mode = <GSBI_PROT_I2C_UART>; 205 status = "okay"; 206 }; 207 208 &gsbi12_serial { 209 pinctrl-names = "default"; 210 pinctrl-0 = <&dragon_gsbi12_serial_pins>; 211 status = "okay"; 212 }; 213 214 &gsbi12_i2c { 215 pinctrl-names = "default"; 216 pinctrl-0 = <&dragon_gsbi12_i2c_pins>; 217 status = "okay"; 218 219 ak8975@c { 220 compatible = "asahi-kasei,ak8975"; 221 reg = <0x0c>; 222 interrupt-parent = <&pm8058_gpio>; 223 interrupts = <33 IRQ_TYPE_EDGE_RISING>; 224 pinctrl-names = "default"; 225 pinctrl-0 = <&dragon_ak8975_gpios>; 226 vid-supply = <&pm8058_lvs0>; // 1.8V 227 vdd-supply = <&pm8058_l14>; // 2.85V 228 }; 229 bmp085@77 { 230 compatible = "bosch,bmp085"; 231 reg = <0x77>; 232 interrupt-parent = <&pm8058_gpio>; 233 interrupts = <16 IRQ_TYPE_EDGE_RISING>; 234 reset-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>; 235 pinctrl-names = "default"; 236 pinctrl-0 = <&dragon_bmp085_gpios>; 237 vddd-supply = <&pm8058_lvs0>; // 1.8V 238 vdda-supply = <&pm8058_l14>; // 2.85V 239 }; 240 mpu3050@68 { 241 compatible = "invensense,mpu3050"; 242 reg = <0x68>; 243 /* 244 * GPIO17 is pulled high by a 10k 245 * resistor to VLOGIC so needs to be 246 * active low/falling edge. 247 */ 248 interrupts-extended = <&pm8058_gpio 17 IRQ_TYPE_EDGE_FALLING>; 249 pinctrl-names = "default"; 250 pinctrl-0 = <&dragon_mpu3050_gpios>; 251 vlogic-supply = <&pm8058_lvs0>; // 1.8V 252 vdd-supply = <&pm8058_l14>; // 2.85V 253 254 /* 255 * The MPU-3050 acts as a hub for the 256 * accelerometer. 257 */ 258 i2c-gate { 259 #address-cells = <1>; 260 #size-cells = <0>; 261 262 kxsd9@18 { 263 compatible = "kionix,kxsd9"; 264 reg = <0x18>; 265 interrupt-parent = <&tlmm>; 266 interrupts = <57 IRQ_TYPE_EDGE_FALLING>; 267 pinctrl-names = "default"; 268 pinctrl-0 = <&dragon_kxsd9_gpios>; 269 iovdd-supply = <&pm8058_lvs0>; // 1.8V 270 vdd-supply = <&pm8058_l14>; // 2.85V 271 }; 272 }; 273 }; 274 }; 275 276 &pm8058 { 277 interrupts-extended = <&tlmm 88 IRQ_TYPE_LEVEL_LOW>; 278 }; 279 280 &pm8058_gpio { 281 dragon_ethernet_gpios: ethernet-state { 282 pinconf { 283 pins = "gpio7"; 284 function = "normal"; 285 input-enable; 286 bias-disable; 287 power-source = <PM8058_GPIO_S3>; 288 }; 289 }; 290 dragon_bmp085_gpios: bmp085-state { 291 pinconf { 292 pins = "gpio16"; 293 function = "normal"; 294 input-enable; 295 bias-disable; 296 power-source = <PM8058_GPIO_S3>; 297 }; 298 }; 299 dragon_mpu3050_gpios: mpu3050-state { 300 pinconf { 301 pins = "gpio17"; 302 function = "normal"; 303 input-enable; 304 bias-disable; 305 power-source = <PM8058_GPIO_S3>; 306 }; 307 }; 308 dragon_sdcc3_gpios: sdcc3-state { 309 pinconf { 310 pins = "gpio22"; 311 function = "normal"; 312 input-enable; 313 bias-disable; 314 power-source = <PM8058_GPIO_S3>; 315 }; 316 }; 317 dragon_sdcc5_gpios: sdcc5-state { 318 pinconf { 319 pins = "gpio26"; 320 function = "normal"; 321 input-enable; 322 bias-pull-up; 323 qcom,pull-up-strength = <PMIC_GPIO_PULL_UP_30>; 324 power-source = <PM8058_GPIO_S3>; 325 }; 326 }; 327 dragon_ak8975_gpios: ak8975-state { 328 pinconf { 329 pins = "gpio33"; 330 function = "normal"; 331 input-enable; 332 bias-disable; 333 power-source = <PM8058_GPIO_S3>; 334 }; 335 }; 336 dragon_cm3605_gpios: cm3605-state { 337 /* Pin 34 connected to the proxy IRQ */ 338 gpio34-pins { 339 pins = "gpio34"; 340 function = "normal"; 341 input-enable; 342 bias-disable; 343 power-source = <PM8058_GPIO_S3>; 344 }; 345 /* Pin 35 connected to ASET */ 346 gpio35-pins { 347 pins = "gpio35"; 348 function = "normal"; 349 output-high; 350 bias-disable; 351 power-source = <PM8058_GPIO_S3>; 352 }; 353 }; 354 dragon_veth_gpios: veth-state { 355 pinconf { 356 pins = "gpio40"; 357 function = "normal"; 358 bias-disable; 359 drive-push-pull; 360 }; 361 }; 362 }; 363 364 &pm8058_keypad { 365 linux,keymap = < 366 MATRIX_KEY(0, 0, KEY_MENU) 367 MATRIX_KEY(0, 2, KEY_1) 368 MATRIX_KEY(0, 3, KEY_4) 369 MATRIX_KEY(0, 4, KEY_7) 370 MATRIX_KEY(1, 0, KEY_UP) 371 MATRIX_KEY(1, 1, KEY_LEFT) 372 MATRIX_KEY(1, 2, KEY_DOWN) 373 MATRIX_KEY(1, 3, KEY_5) 374 MATRIX_KEY(1, 3, KEY_8) 375 MATRIX_KEY(2, 0, KEY_HOME) 376 MATRIX_KEY(2, 1, KEY_REPLY) 377 MATRIX_KEY(2, 2, KEY_2) 378 MATRIX_KEY(2, 3, KEY_6) 379 MATRIX_KEY(3, 0, KEY_VOLUMEUP) 380 MATRIX_KEY(3, 1, KEY_RIGHT) 381 MATRIX_KEY(3, 2, KEY_3) 382 MATRIX_KEY(3, 3, KEY_9) 383 MATRIX_KEY(3, 4, KEY_SWITCHVIDEOMODE) 384 MATRIX_KEY(4, 0, KEY_VOLUMEDOWN) 385 MATRIX_KEY(4, 1, KEY_BACK) 386 MATRIX_KEY(4, 2, KEY_CAMERA) 387 MATRIX_KEY(4, 3, KEY_KBDILLUMTOGGLE) 388 >; 389 keypad,num-rows = <6>; 390 keypad,num-columns = <5>; 391 }; 392 393 &pm8058_led48 { 394 /* 395 * The keypad LED @0x48 is routed to 396 * the sensor board where it is 397 * connected to an infrared LED 398 * SFH4650 (60mW, @850nm) next to the 399 * ambient light and proximity sensor 400 * Capella Microsystems CM3605. 401 */ 402 label = "pm8058:infrared:proximitysensor"; 403 default-state = "off"; 404 linux,default-trigger = "cm3605"; 405 status = "okay"; 406 }; 407 408 &pm8058_led131 { 409 label = "pm8058:red"; 410 color = <LED_COLOR_ID_RED>; 411 default-state = "off"; 412 status = "okay"; 413 }; 414 415 &pm8058_led132 { 416 /* 417 * This is actually green too on my 418 * board, but documented as yellow. 419 */ 420 label = "pm8058:yellow"; 421 color = <LED_COLOR_ID_YELLOW>; 422 default-state = "off"; 423 linux,default-trigger = "mmc0"; 424 status = "okay"; 425 }; 426 427 &pm8058_led133 { 428 label = "pm8058:green"; 429 function = LED_FUNCTION_HEARTBEAT; 430 color = <LED_COLOR_ID_GREEN>; 431 default-state = "on"; 432 linux,default-trigger = "heartbeat"; 433 status = "okay"; 434 }; 435 436 &pm8058_mpps { 437 dragon_cm3605_mpps: cm3605-mpps-state { 438 pins = "mpp5"; 439 function = "analog"; 440 input-enable; 441 bias-high-impedance; 442 /* Let's use channel 5 */ 443 qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH5>; 444 power-source = <PM8058_GPIO_S3>; 445 }; 446 }; 447 448 &rpm { 449 /* 450 * Set up of the PMIC RPM regulators for this board 451 * PM8901 supplies "preliminary regulators" whatever 452 * that means 453 */ 454 regulators-0 { 455 compatible = "qcom,rpm-pm8901-regulators"; 456 457 vdd_l0-supply = <&pm8901_s4>; 458 vdd_l1-supply = <&vph>; 459 vdd_l2-supply = <&vph>; 460 vdd_l3-supply = <&vph>; 461 vdd_l4-supply = <&vph>; 462 vdd_l5-supply = <&vph>; 463 vdd_l6-supply = <&vph>; 464 /* vdd_s0-supply, vdd_s1-supply: SAW regulators */ 465 vdd_s2-supply = <&vph>; 466 vdd_s3-supply = <&vph>; 467 vdd_s4-supply = <&vph>; 468 lvs0_in-supply = <&pm8058_s3>; 469 lvs1_in-supply = <&pm8901_s4>; 470 lvs2_in-supply = <&pm8058_l0>; 471 lvs3_in-supply = <&pm8058_s2>; 472 mvs_in-supply = <&pm8058_s3>; 473 474 pm8901_l0: l0 { 475 regulator-min-microvolt = <1200000>; 476 regulator-max-microvolt = <1200000>; 477 bias-pull-down; 478 }; 479 480 pm8901_l1: l1 { 481 regulator-min-microvolt = <3300000>; 482 regulator-max-microvolt = <3300000>; 483 bias-pull-down; 484 }; 485 486 pm8901_l2: l2 { 487 /* TMA340 requires strictly 3.3V */ 488 regulator-min-microvolt = <3300000>; 489 regulator-max-microvolt = <3300000>; 490 bias-pull-down; 491 }; 492 493 pm8901_l3: l3 { 494 regulator-min-microvolt = <3300000>; 495 regulator-max-microvolt = <3300000>; 496 bias-pull-down; 497 }; 498 499 pm8901_l4: l4 { 500 regulator-min-microvolt = <2600000>; 501 regulator-max-microvolt = <2600000>; 502 bias-pull-down; 503 }; 504 505 pm8901_l5: l5 { 506 regulator-min-microvolt = <2850000>; 507 regulator-max-microvolt = <2850000>; 508 bias-pull-down; 509 }; 510 511 pm8901_l6: l6 { 512 regulator-min-microvolt = <2200000>; 513 regulator-max-microvolt = <2200000>; 514 bias-pull-down; 515 }; 516 517 /* s0 and s1 are SAW regulators controlled over SPM */ 518 pm8901_s2: s2 { 519 regulator-min-microvolt = <1300000>; 520 regulator-max-microvolt = <1300000>; 521 qcom,switch-mode-frequency = <1600000>; 522 bias-pull-down; 523 }; 524 pm8901_s3: s3 { 525 regulator-min-microvolt = <1100000>; 526 regulator-max-microvolt = <1100000>; 527 qcom,switch-mode-frequency = <1600000>; 528 bias-pull-down; 529 }; 530 pm8901_s4: s4 { 531 regulator-min-microvolt = <1225000>; 532 regulator-max-microvolt = <1225000>; 533 qcom,switch-mode-frequency = <1600000>; 534 bias-pull-down; 535 }; 536 537 /* LVS0 thru 3 and mvs are just switches */ 538 pm8901_lvs0: lvs0 { 539 regulator-always-on; 540 }; 541 542 pm8901_lvs1: lvs1 { }; 543 544 pm8901_lvs2: lvs2 { }; 545 546 pm8901_lvs3: lvs3 { }; 547 548 pm8901_mvs: mvs { }; 549 }; 550 551 regulators-1 { 552 compatible = "qcom,rpm-pm8058-regulators"; 553 554 vdd_l0_l1_lvs-supply = <&pm8058_s3>; 555 vdd_l2_l11_l12-supply = <&vph>; 556 vdd_l3_l4_l5-supply = <&vph>; 557 vdd_l6_l7-supply = <&vph>; 558 vdd_l8-supply = <&vph>; 559 vdd_l9-supply = <&vph>; 560 vdd_l10-supply = <&vph>; 561 vdd_l13_l16-supply = <&pm8058_s4>; 562 vdd_l14_l15-supply = <&vph>; 563 vdd_l17_l18-supply = <&vph>; 564 vdd_l19_l20-supply = <&vph>; 565 vdd_l21-supply = <&pm8058_s3>; 566 vdd_l22-supply = <&pm8058_s3>; 567 vdd_l23_l24_l25-supply = <&pm8058_s3>; 568 vdd_s0-supply = <&vph>; 569 vdd_s1-supply = <&vph>; 570 vdd_s2-supply = <&vph>; 571 vdd_s3-supply = <&vph>; 572 vdd_s4-supply = <&vph>; 573 vdd_ncp-supply = <&vph>; 574 575 pm8058_l0: l0 { 576 regulator-min-microvolt = <1200000>; 577 regulator-max-microvolt = <1200000>; 578 bias-pull-down; 579 }; 580 581 pm8058_l1: l1 { 582 regulator-min-microvolt = <1200000>; 583 regulator-max-microvolt = <1200000>; 584 bias-pull-down; 585 }; 586 587 pm8058_l2: l2 { 588 regulator-min-microvolt = <1800000>; 589 regulator-max-microvolt = <2600000>; 590 bias-pull-down; 591 }; 592 593 pm8058_l3: l3 { 594 regulator-min-microvolt = <1800000>; 595 regulator-max-microvolt = <1800000>; 596 bias-pull-down; 597 }; 598 599 pm8058_l4: l4 { 600 regulator-min-microvolt = <2850000>; 601 regulator-max-microvolt = <2850000>; 602 bias-pull-down; 603 }; 604 605 pm8058_l5: l5 { 606 regulator-min-microvolt = <2850000>; 607 regulator-max-microvolt = <2850000>; 608 bias-pull-down; 609 }; 610 611 pm8058_l6: l6 { 612 regulator-min-microvolt = <3000000>; 613 regulator-max-microvolt = <3600000>; 614 bias-pull-down; 615 }; 616 617 pm8058_l7: l7 { 618 regulator-min-microvolt = <1800000>; 619 regulator-max-microvolt = <1800000>; 620 bias-pull-down; 621 }; 622 623 pm8058_l8: l8 { 624 regulator-min-microvolt = <2900000>; 625 regulator-max-microvolt = <3050000>; 626 bias-pull-down; 627 }; 628 629 pm8058_l9: l9 { 630 regulator-min-microvolt = <1800000>; 631 regulator-max-microvolt = <1800000>; 632 bias-pull-down; 633 }; 634 635 pm8058_l10: l10 { 636 regulator-min-microvolt = <2600000>; 637 regulator-max-microvolt = <2600000>; 638 bias-pull-down; 639 }; 640 641 pm8058_l11: l11 { 642 regulator-min-microvolt = <1500000>; 643 regulator-max-microvolt = <1500000>; 644 bias-pull-down; 645 }; 646 647 pm8058_l12: l12 { 648 regulator-min-microvolt = <2900000>; 649 regulator-max-microvolt = <2900000>; 650 bias-pull-down; 651 }; 652 653 pm8058_l13: l13 { 654 regulator-min-microvolt = <2050000>; 655 regulator-max-microvolt = <2050000>; 656 bias-pull-down; 657 }; 658 659 pm8058_l14: l14 { 660 regulator-min-microvolt = <2850000>; 661 regulator-max-microvolt = <2850000>; 662 }; 663 664 pm8058_l15: l15 { 665 regulator-min-microvolt = <2850000>; 666 regulator-max-microvolt = <2850000>; 667 bias-pull-down; 668 }; 669 670 pm8058_l16: l16 { 671 regulator-min-microvolt = <1800000>; 672 regulator-max-microvolt = <1800000>; 673 bias-pull-down; 674 regulator-always-on; 675 }; 676 677 pm8058_l17: l17 { 678 // 1.5V according to schematic 679 regulator-min-microvolt = <2600000>; 680 regulator-max-microvolt = <2600000>; 681 bias-pull-down; 682 }; 683 684 pm8058_l18: l18 { 685 regulator-min-microvolt = <2200000>; 686 regulator-max-microvolt = <2200000>; 687 bias-pull-down; 688 }; 689 690 pm8058_l19: l19 { 691 regulator-min-microvolt = <2500000>; 692 regulator-max-microvolt = <2500000>; 693 bias-pull-down; 694 }; 695 696 pm8058_l20: l20 { 697 regulator-min-microvolt = <1800000>; 698 regulator-max-microvolt = <1800000>; 699 bias-pull-down; 700 }; 701 702 pm8058_l21: l21 { 703 // 1.1 V according to schematic 704 regulator-min-microvolt = <1200000>; 705 regulator-max-microvolt = <1200000>; 706 bias-pull-down; 707 regulator-always-on; 708 }; 709 710 pm8058_l22: l22 { 711 // 1.2 V according to schematic 712 regulator-min-microvolt = <1150000>; 713 regulator-max-microvolt = <1150000>; 714 bias-pull-down; 715 }; 716 717 pm8058_l23: l23 { 718 // Unused 719 regulator-min-microvolt = <1200000>; 720 regulator-max-microvolt = <1200000>; 721 bias-pull-down; 722 }; 723 724 pm8058_l24: l24 { 725 // Unused 726 regulator-min-microvolt = <1200000>; 727 regulator-max-microvolt = <1200000>; 728 bias-pull-down; 729 }; 730 731 pm8058_l25: l25 { 732 regulator-min-microvolt = <1200000>; 733 regulator-max-microvolt = <1200000>; 734 bias-pull-down; 735 }; 736 737 pm8058_s0: s0 { 738 // regulator-min-microvolt = <500000>; 739 // regulator-max-microvolt = <1325000>; 740 regulator-min-microvolt = <1100000>; 741 regulator-max-microvolt = <1100000>; 742 qcom,switch-mode-frequency = <1600000>; 743 bias-pull-down; 744 }; 745 746 pm8058_s1: s1 { 747 // regulator-min-microvolt = <500000>; 748 // regulator-max-microvolt = <1250000>; 749 regulator-min-microvolt = <1100000>; 750 regulator-max-microvolt = <1100000>; 751 qcom,switch-mode-frequency = <1600000>; 752 bias-pull-down; 753 }; 754 755 pm8058_s2: s2 { 756 // 1.3 V according to schematic 757 regulator-min-microvolt = <1200000>; 758 regulator-max-microvolt = <1400000>; 759 qcom,switch-mode-frequency = <1600000>; 760 bias-pull-down; 761 }; 762 763 pm8058_s3: s3 { 764 regulator-min-microvolt = <1800000>; 765 regulator-max-microvolt = <1800000>; 766 qcom,switch-mode-frequency = <1600000>; 767 regulator-always-on; 768 bias-pull-down; 769 }; 770 771 pm8058_s4: s4 { 772 regulator-min-microvolt = <2200000>; 773 regulator-max-microvolt = <2200000>; 774 qcom,switch-mode-frequency = <1600000>; 775 regulator-always-on; 776 bias-pull-down; 777 }; 778 779 /* LVS0 and LVS1 are just switches */ 780 pm8058_lvs0: lvs0 { 781 bias-pull-down; 782 }; 783 784 pm8058_lvs1: lvs1 { 785 bias-pull-down; 786 }; 787 788 pm8058_ncp: ncp { 789 regulator-min-microvolt = <1800000>; 790 regulator-max-microvolt = <1800000>; 791 qcom,switch-mode-frequency = <1600000>; 792 }; 793 }; 794 }; 795 796 /* Internal 3.69 GiB eMMC */ 797 &sdcc1 { 798 pinctrl-names = "default"; 799 pinctrl-0 = <&dragon_sdcc1_pins>; 800 vmmc-supply = <&pm8901_l5>; 801 vqmmc-supply = <&pm8901_lvs0>; 802 status = "okay"; 803 }; 804 805 /* External micro SD card, directly connected, pulled up to 2.85 V */ 806 &sdcc3 { 807 /* Enable SSBI GPIO 22 as input, use for card detect */ 808 pinctrl-names = "default"; 809 pinctrl-0 = <&dragon_sdcc3_pins>, <&dragon_sdcc3_gpios>; 810 cd-gpios = <&pm8058_gpio 22 GPIO_ACTIVE_LOW>; 811 wp-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>; 812 vmmc-supply = <&pm8058_l14>; 813 status = "okay"; 814 }; 815 816 /* 817 * Second external micro SD card, using two TXB104RGYR levelshifters 818 * to lift from 1.8 V to 2.85 V 819 */ 820 &sdcc5 { 821 /* Enable SSBI GPIO 26 as input, use for card detect */ 822 pinctrl-names = "default"; 823 pinctrl-0 = <&dragon_sdcc5_pins>, <&dragon_sdcc5_gpios>; 824 cd-gpios = <&pm8058_gpio 26 GPIO_ACTIVE_LOW>; 825 wp-gpios = <&tlmm 106 GPIO_ACTIVE_HIGH>; 826 vmmc-supply = <&pm8058_l14>; 827 vqmmc-supply = <&dragon_vio_txb>; 828 status = "okay"; 829 }; 830 831 &tlmm { 832 /* eMMC pins, all 8 data lines connected */ 833 dragon_sdcc1_pins: sdcc1-state { 834 clk-pins { 835 pins = "gpio167"; /* SDC1 CLK */ 836 function = "sdc1"; 837 drive-strength = <16>; 838 bias-disable; 839 }; 840 cmd-pins { 841 pins = "gpio168"; /* SDC1 CMD */ 842 function = "sdc1"; 843 drive-strength = <10>; 844 bias-pull-up; 845 }; 846 data-pins { 847 /* SDC1 D0 to D7 */ 848 pins = "gpio159", "gpio160", "gpio161", "gpio162", 849 "gpio163", "gpio164", "gpio165", "gpio166"; 850 function = "sdc1"; 851 drive-strength = <10>; 852 bias-pull-up; 853 }; 854 }; 855 856 /* 857 * The SDCC3 pins are hardcoded (non-muxable) but need some pin 858 * configuration. 859 */ 860 dragon_sdcc3_pins: sdcc3-state { 861 clk-pins { 862 pins = "sdc3_clk"; 863 drive-strength = <8>; 864 bias-disable; 865 }; 866 cmd-pins { 867 pins = "sdc3_cmd"; 868 drive-strength = <8>; 869 bias-pull-up; 870 }; 871 data-pins { 872 pins = "sdc3_data"; 873 drive-strength = <8>; 874 bias-pull-up; 875 }; 876 }; 877 878 /* Second SD card slot pins */ 879 dragon_sdcc5_pins: sdcc5-state { 880 clk-pins { 881 pins = "gpio97"; /* SDC5 CLK */ 882 function = "sdc5"; 883 drive-strength = <16>; 884 bias-disable; 885 }; 886 cmd-pins { 887 pins = "gpio95"; /* SDC5 CMD */ 888 function = "sdc5"; 889 drive-strength = <10>; 890 bias-pull-up; 891 }; 892 data-pins { 893 /* SDC5 D0 to D3 */ 894 pins = "gpio96", "gpio98", "gpio99", "gpio100"; 895 function = "sdc5"; 896 drive-strength = <10>; 897 bias-pull-up; 898 }; 899 }; 900 901 dragon_gsbi3_i2c_pins: gsbi3-i2c-state { 902 pins = "gpio43", "gpio44"; 903 function = "gsbi3"; 904 drive-strength = <8>; 905 /* These have external pull-up 2.2kOhm to 1.8V */ 906 bias-disable; 907 }; 908 909 dragon_gsbi8_i2c_pins: gsbi8-i2c-state { 910 pins = "gpio64", "gpio65"; 911 function = "gsbi8"; 912 drive-strength = <16>; 913 /* These have external pull-up 2.2kOhm to 1.8V */ 914 bias-disable; 915 }; 916 917 dragon_gsbi12_i2c_pins: gsbi12-i2c-state { 918 pins = "gpio115", "gpio116"; 919 function = "gsbi12"; 920 drive-strength = <16>; 921 /* These have external pull-up 4.7kOhm to 1.8V */ 922 bias-disable; 923 }; 924 925 /* Primary serial port uart 0 pins */ 926 dragon_gsbi12_serial_pins: gsbi12-serial-state { 927 tx-pins { 928 pins = "gpio117"; 929 function = "gsbi12"; 930 drive-strength = <8>; 931 bias-disable; 932 }; 933 rx-pins { 934 pins = "gpio118"; 935 function = "gsbi12"; 936 drive-strength = <2>; 937 bias-pull-up; 938 }; 939 }; 940 941 dragon_ebi2_pins: ebi2-state { 942 /* 943 * Pins used by EBI2 on the Dragonboard, actually only 944 * CS2 is used by a real peripheral. CS0 is just 945 * routed to a test point. 946 */ 947 mux0-pins { 948 pins = 949 /* "gpio39", CS1A_N this is not good to mux */ 950 "gpio40", /* CS2A_N */ 951 "gpio134"; /* CS0_N testpoint TP29 */ 952 function = "ebi2cs"; 953 }; 954 mux1-pins { 955 pins = 956 /* EBI2_ADDR_7 downto EBI2_ADDR_0 address bus */ 957 "gpio123", "gpio124", "gpio125", "gpio126", 958 "gpio127", "gpio128", "gpio129", "gpio130", 959 /* EBI2_DATA_15 downto EBI2_DATA_0 data bus */ 960 "gpio135", "gpio136", "gpio137", "gpio138", 961 "gpio139", "gpio140", "gpio141", "gpio142", 962 "gpio143", "gpio144", "gpio145", "gpio146", 963 "gpio147", "gpio148", "gpio149", "gpio150", 964 "gpio151", /* EBI2_OE_N */ 965 "gpio153", /* EBI2_ADV */ 966 "gpio157"; /* EBI2_WE_N */ 967 function = "ebi2"; 968 }; 969 }; 970 971 /* Interrupt line for the KXSD9 accelerometer */ 972 dragon_kxsd9_gpios: kxsd9-state { 973 pins = "gpio57"; /* IRQ line */ 974 function = "gpio"; 975 bias-pull-up; 976 }; 977 978 dragon_tma340_gpios: tma340-state { 979 reset-pins { 980 /* RESET line, TS_ATTN, WAKE_CTP */ 981 pins = "gpio58"; 982 function = "gpio"; 983 drive-strength = <6>; 984 bias-disable; 985 }; 986 irq-pins { 987 pins = "gpio61"; /* IRQ line */ 988 function = "gpio"; 989 drive-strength = <2>; 990 bias-pull-up; 991 }; 992 }; 993 }; 994 995 &pm8058_xoadc { 996 /* Reference voltage 2.2 V */ 997 xoadc-ref-supply = <&pm8058_l18>; 998 999 /* Board-specific channels */ 1000 adc-channel@5 { 1001 /* Connected to AOUT of ALS sensor */ 1002 reg = <0x00 0x05>; 1003 }; 1004 1005 adc-channel@6 { 1006 /* Connected to test point TP43 */ 1007 reg = <0x00 0x06>; 1008 }; 1009 1010 adc-channel@7 { 1011 /* Connected to battery thermistor */ 1012 reg = <0x00 0x07>; 1013 }; 1014 1015 adc-channel@8 { 1016 /* Connected to battery ID detector */ 1017 reg = <0x00 0x08>; 1018 }; 1019 1020 adc-channel@9 { 1021 /* Connected to XO thermistor */ 1022 reg = <0x00 0x09>; 1023 }; 1024 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.