1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Copyright (c) 2015, The Linux Foundation. All rights reserved. 4 */ 5 6 /dts-v1/; 7 8 #include "msm8916-pm8916.dtsi" 9 #include <dt-bindings/gpio/gpio.h> 10 #include <dt-bindings/input/input.h> 11 #include <dt-bindings/leds/common.h> 12 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h> 13 #include <dt-bindings/pinctrl/qcom,pmic-mpp.h> 14 #include <dt-bindings/sound/apq8016-lpass.h> 15 16 / { 17 model = "Qualcomm Technologies, Inc. APQ 8016 SBC"; 18 compatible = "qcom,apq8016-sbc", "qcom,apq8016"; 19 20 aliases { 21 mmc0 = &sdhc_1; /* eMMC */ 22 mmc1 = &sdhc_2; /* SD card */ 23 serial0 = &blsp_uart2; 24 serial1 = &blsp_uart1; 25 usid0 = &pm8916_0; 26 i2c0 = &blsp_i2c2; 27 i2c1 = &blsp_i2c6; 28 i2c3 = &blsp_i2c4; 29 spi0 = &blsp_spi5; 30 spi1 = &blsp_spi3; 31 }; 32 33 chosen { 34 stdout-path = "serial0"; 35 }; 36 37 reserved-memory { 38 ramoops@bff00000 { 39 compatible = "ramoops"; 40 reg = <0x0 0xbff00000 0x0 0x100000>; 41 42 record-size = <0x20000>; 43 console-size = <0x20000>; 44 ftrace-size = <0x20000>; 45 }; 46 }; 47 48 usb2513 { 49 compatible = "smsc,usb3503"; 50 reset-gpios = <&pm8916_gpios 3 GPIO_ACTIVE_LOW>; 51 initial-mode = <1>; 52 }; 53 54 usb_id: usb-id { 55 compatible = "linux,extcon-usb-gpio"; 56 id-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>; 57 pinctrl-names = "default"; 58 pinctrl-0 = <&usb_id_default>; 59 }; 60 61 hdmi-out { 62 compatible = "hdmi-connector"; 63 type = "a"; 64 65 port { 66 hdmi_con: endpoint { 67 remote-endpoint = <&adv7533_out>; 68 }; 69 }; 70 }; 71 72 gpio-keys { 73 compatible = "gpio-keys"; 74 autorepeat; 75 76 pinctrl-names = "default"; 77 pinctrl-0 = <&msm_key_volp_n_default>; 78 79 button { 80 label = "Volume Up"; 81 linux,code = <KEY_VOLUMEUP>; 82 gpios = <&tlmm 107 GPIO_ACTIVE_LOW>; 83 }; 84 }; 85 86 leds { 87 pinctrl-names = "default"; 88 pinctrl-0 = <&tlmm_leds>, 89 <&pm8916_gpios_leds>, 90 <&pm8916_mpps_leds>; 91 92 compatible = "gpio-leds"; 93 94 led-1 { 95 label = "apq8016-sbc:green:user1"; 96 function = LED_FUNCTION_HEARTBEAT; 97 color = <LED_COLOR_ID_GREEN>; 98 gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>; 99 linux,default-trigger = "heartbeat"; 100 default-state = "off"; 101 }; 102 103 led-2 { 104 label = "apq8016-sbc:green:user2"; 105 function = LED_FUNCTION_DISK_ACTIVITY; 106 color = <LED_COLOR_ID_GREEN>; 107 gpios = <&tlmm 120 GPIO_ACTIVE_HIGH>; 108 linux,default-trigger = "mmc0"; 109 default-state = "off"; 110 }; 111 112 led-3 { 113 label = "apq8016-sbc:green:user3"; 114 function = LED_FUNCTION_DISK_ACTIVITY; 115 color = <LED_COLOR_ID_GREEN>; 116 gpios = <&pm8916_gpios 1 GPIO_ACTIVE_HIGH>; 117 linux,default-trigger = "mmc1"; 118 default-state = "off"; 119 }; 120 121 led-4 { 122 label = "apq8016-sbc:green:user4"; 123 color = <LED_COLOR_ID_GREEN>; 124 gpios = <&pm8916_gpios 2 GPIO_ACTIVE_HIGH>; 125 linux,default-trigger = "none"; 126 panic-indicator; 127 default-state = "off"; 128 }; 129 130 led-5 { 131 label = "apq8016-sbc:yellow:wlan"; 132 function = LED_FUNCTION_WLAN; 133 color = <LED_COLOR_ID_YELLOW>; 134 gpios = <&pm8916_mpps 2 GPIO_ACTIVE_HIGH>; 135 linux,default-trigger = "phy0tx"; 136 default-state = "off"; 137 }; 138 139 led-6 { 140 label = "apq8016-sbc:blue:bt"; 141 function = LED_FUNCTION_BLUETOOTH; 142 color = <LED_COLOR_ID_BLUE>; 143 gpios = <&pm8916_mpps 3 GPIO_ACTIVE_HIGH>; 144 linux,default-trigger = "bluetooth-power"; 145 default-state = "off"; 146 }; 147 }; 148 }; 149 150 &blsp_i2c2 { 151 /* On Low speed expansion: LS-I2C0 */ 152 status = "okay"; 153 }; 154 155 &blsp_i2c4 { 156 /* On High speed expansion: HS-I2C2 */ 157 status = "okay"; 158 159 adv_bridge: bridge@39 { 160 status = "okay"; 161 162 compatible = "adi,adv7533"; 163 reg = <0x39>; 164 165 interrupt-parent = <&tlmm>; 166 interrupts = <31 IRQ_TYPE_EDGE_FALLING>; 167 168 adi,dsi-lanes = <4>; 169 clocks = <&rpmcc RPM_SMD_BB_CLK2>; 170 clock-names = "cec"; 171 172 pd-gpios = <&tlmm 32 GPIO_ACTIVE_HIGH>; 173 174 avdd-supply = <&pm8916_l6>; 175 a2vdd-supply = <&pm8916_l6>; 176 dvdd-supply = <&pm8916_l6>; 177 pvdd-supply = <&pm8916_l6>; 178 v1p2-supply = <&pm8916_l6>; 179 v3p3-supply = <&pm8916_l17>; 180 181 pinctrl-names = "default","sleep"; 182 pinctrl-0 = <&adv7533_int_active &adv7533_switch_active>; 183 pinctrl-1 = <&adv7533_int_suspend &adv7533_switch_suspend>; 184 #sound-dai-cells = <1>; 185 186 ports { 187 #address-cells = <1>; 188 #size-cells = <0>; 189 190 port@0 { 191 reg = <0>; 192 adv7533_in: endpoint { 193 remote-endpoint = <&mdss_dsi0_out>; 194 }; 195 }; 196 197 port@1 { 198 reg = <1>; 199 adv7533_out: endpoint { 200 remote-endpoint = <&hdmi_con>; 201 }; 202 }; 203 }; 204 }; 205 }; 206 207 &blsp_i2c6 { 208 /* On Low speed expansion: LS-I2C1 */ 209 status = "okay"; 210 }; 211 212 &blsp_spi3 { 213 /* On High speed expansion: HS-SPI1 */ 214 status = "okay"; 215 }; 216 217 &blsp_spi5 { 218 /* On Low speed expansion: LS-SPI0 */ 219 status = "okay"; 220 }; 221 222 &blsp_uart1 { 223 status = "okay"; 224 label = "LS-UART0"; 225 }; 226 227 &blsp_uart2 { 228 status = "okay"; 229 label = "LS-UART1"; 230 }; 231 232 &camss { 233 status = "okay"; 234 }; 235 236 &gpu { 237 status = "okay"; 238 }; 239 240 &lpass { 241 status = "okay"; 242 }; 243 244 &lpass_codec { 245 status = "okay"; 246 }; 247 248 &mba_mem { 249 status = "okay"; 250 }; 251 252 &mdss { 253 status = "okay"; 254 }; 255 256 &mdss_dsi0_out { 257 data-lanes = <0 1 2 3>; 258 remote-endpoint = <&adv7533_in>; 259 }; 260 261 &mpss { 262 status = "okay"; 263 264 firmware-name = "qcom/apq8016/mba.mbn", "qcom/apq8016/modem.mbn"; 265 }; 266 267 &mpss_mem { 268 status = "okay"; 269 reg = <0x0 0x86800000 0x0 0x2b00000>; 270 }; 271 272 &pm8916_codec { 273 status = "okay"; 274 qcom,mbhc-vthreshold-low = <75 150 237 450 500>; 275 qcom,mbhc-vthreshold-high = <75 150 237 450 500>; 276 }; 277 278 &pm8916_resin { 279 status = "okay"; 280 linux,code = <KEY_VOLUMEDOWN>; 281 }; 282 283 &pm8916_rpm_regulators { 284 /* 285 * The 96Boards specification expects a 1.8V power rail on the low-speed 286 * expansion connector that is able to provide at least 0.18W / 100 mA. 287 * L15/L16 are connected in parallel to provide 55 mA each. A minimum load 288 * must be specified to ensure the regulators are not put in LPM where they 289 * would only provide 5 mA. 290 */ 291 pm8916_l15: l15 { 292 regulator-min-microvolt = <1800000>; 293 regulator-max-microvolt = <1800000>; 294 regulator-system-load = <50000>; 295 regulator-allow-set-load; 296 regulator-always-on; 297 }; 298 pm8916_l16: l16 { 299 regulator-min-microvolt = <1800000>; 300 regulator-max-microvolt = <1800000>; 301 regulator-system-load = <50000>; 302 regulator-allow-set-load; 303 regulator-always-on; 304 }; 305 306 pm8916_l17: l17 { 307 regulator-min-microvolt = <3300000>; 308 regulator-max-microvolt = <3300000>; 309 }; 310 }; 311 312 &sdhc_1 { 313 status = "okay"; 314 }; 315 316 &sdhc_2 { 317 status = "okay"; 318 319 pinctrl-names = "default", "sleep"; 320 pinctrl-0 = <&sdc2_default &sdc2_cd_default>; 321 pinctrl-1 = <&sdc2_sleep &sdc2_cd_default>; 322 323 cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; 324 }; 325 326 &sound { 327 status = "okay"; 328 329 pinctrl-0 = <&cdc_pdm_default &sec_mi2s_default>; 330 pinctrl-1 = <&cdc_pdm_sleep &sec_mi2s_sleep>; 331 pinctrl-names = "default", "sleep"; 332 model = "DB410c"; 333 audio-routing = 334 "AMIC2", "MIC BIAS Internal2", 335 "AMIC3", "MIC BIAS External1"; 336 337 quaternary-dai-link { 338 link-name = "ADV7533"; 339 cpu { 340 sound-dai = <&lpass MI2S_QUATERNARY>; 341 }; 342 codec { 343 sound-dai = <&adv_bridge 0>; 344 }; 345 }; 346 347 primary-dai-link { 348 link-name = "WCD"; 349 cpu { 350 sound-dai = <&lpass MI2S_PRIMARY>; 351 }; 352 codec { 353 sound-dai = <&lpass_codec 0>, <&pm8916_codec 0>; 354 }; 355 }; 356 357 tertiary-dai-link { 358 link-name = "WCD-Capture"; 359 cpu { 360 sound-dai = <&lpass MI2S_TERTIARY>; 361 }; 362 codec { 363 sound-dai = <&lpass_codec 1>, <&pm8916_codec 1>; 364 }; 365 }; 366 }; 367 368 &usb { 369 status = "okay"; 370 extcon = <&usb_id>, <&usb_id>; 371 372 pinctrl-names = "default", "device"; 373 pinctrl-0 = <&usb_sw_sel_pm &usb_hub_reset_pm>; 374 pinctrl-1 = <&usb_sw_sel_pm_device &usb_hub_reset_pm_device>; 375 }; 376 377 &usb_hs_phy { 378 extcon = <&usb_id>; 379 }; 380 381 &venus { 382 status = "okay"; 383 }; 384 385 &venus_mem { 386 status = "okay"; 387 }; 388 389 &wcnss { 390 status = "okay"; 391 firmware-name = "qcom/apq8016/wcnss.mbn"; 392 }; 393 394 &wcnss_ctrl { 395 firmware-name = "qcom/apq8016/WCNSS_qcom_wlan_nv_sbc.bin"; 396 }; 397 398 &wcnss_iris { 399 compatible = "qcom,wcn3620"; 400 }; 401 402 &wcnss_mem { 403 status = "okay"; 404 }; 405 406 /* Enable CoreSight */ 407 &cti0 { status = "okay"; }; 408 &cti1 { status = "okay"; }; 409 &cti12 { status = "okay"; }; 410 &cti13 { status = "okay"; }; 411 &cti14 { status = "okay"; }; 412 &cti15 { status = "okay"; }; 413 &debug0 { status = "okay"; }; 414 &debug1 { status = "okay"; }; 415 &debug2 { status = "okay"; }; 416 &debug3 { status = "okay"; }; 417 &etf { status = "okay"; }; 418 &etm0 { status = "okay"; }; 419 &etm1 { status = "okay"; }; 420 &etm2 { status = "okay"; }; 421 &etm3 { status = "okay"; }; 422 &etr { status = "okay"; }; 423 &funnel0 { status = "okay"; }; 424 &funnel1 { status = "okay"; }; 425 &replicator { status = "okay"; }; 426 &stm { status = "okay"; }; 427 &tpiu { status = "okay"; }; 428 429 /* 430 * 2mA drive strength is not enough when connecting multiple 431 * I2C devices with different pull up resistors. 432 */ 433 &blsp_i2c2_default { 434 drive-strength = <16>; 435 }; 436 437 &blsp_i2c4_default { 438 drive-strength = <16>; 439 }; 440 441 &blsp_i2c6_default { 442 drive-strength = <16>; 443 }; 444 445 /* 446 * GPIO name legend: proper name = the GPIO line is used as GPIO 447 * NC = not connected (pin out but not routed from the chip to 448 * anything the board) 449 * "[PER]" = pin is muxed for [peripheral] (not GPIO) 450 * LSEC = Low Speed External Connector 451 * HSEC = High Speed External Connector 452 * 453 * Line names are taken from the schematic "DragonBoard410c" 454 * dated monday, august 31, 2015. Page 5 in particular. 455 * 456 * For the lines routed to the external connectors the 457 * lines are named after the 96Boards CE Specification 1.0, 458 * Appendix "Expansion Connector Signal Description". 459 * 460 * When the 96Board naming of a line and the schematic name of 461 * the same line are in conflict, the 96Board specification 462 * takes precedence, which means that the external UART on the 463 * LSEC is named UART0 while the schematic and SoC names this 464 * UART3. This is only for the informational lines i.e. "[FOO]", 465 * the GPIO named lines "GPIO-A" thru "GPIO-L" are the only 466 * ones actually used for GPIO. 467 */ 468 469 &tlmm { 470 gpio-line-names = 471 "[UART0_TX]", /* GPIO_0, LSEC pin 5 */ 472 "[UART0_RX]", /* GPIO_1, LSEC pin 7 */ 473 "[UART0_CTS_N]", /* GPIO_2, LSEC pin 3 */ 474 "[UART0_RTS_N]", /* GPIO_3, LSEC pin 9 */ 475 "[UART1_TX]", /* GPIO_4, LSEC pin 11 */ 476 "[UART1_RX]", /* GPIO_5, LSEC pin 13 */ 477 "[I2C0_SDA]", /* GPIO_8, LSEC pin 17 */ 478 "[I2C0_SCL]", /* GPIO_7, LSEC pin 15 */ 479 "[SPI1_DOUT]", /* SPI1_MOSI, HSEC pin 1 */ 480 "[SPI1_DIN]", /* SPI1_MISO, HSEC pin 11 */ 481 "[SPI1_CS]", /* SPI1_CS_N, HSEC pin 7 */ 482 "[SPI1_SCLK]", /* SPI1_CLK, HSEC pin 9 */ 483 "GPIO-B", /* LS_EXP_GPIO_B, LSEC pin 24 */ 484 "GPIO-C", /* LS_EXP_GPIO_C, LSEC pin 25 */ 485 "[I2C3_SDA]", /* HSEC pin 38 */ 486 "[I2C3_SCL]", /* HSEC pin 36 */ 487 "[SPI0_MOSI]", /* LSEC pin 14 */ 488 "[SPI0_MISO]", /* LSEC pin 10 */ 489 "[SPI0_CS_N]", /* LSEC pin 12 */ 490 "[SPI0_CLK]", /* LSEC pin 8 */ 491 "HDMI_HPD_N", /* GPIO 20 */ 492 "USR_LED_1_CTRL", 493 "[I2C1_SDA]", /* GPIO_22, LSEC pin 21 */ 494 "[I2C1_SCL]", /* GPIO_23, LSEC pin 19 */ 495 "GPIO-G", /* LS_EXP_GPIO_G, LSEC pin 29 */ 496 "GPIO-H", /* LS_EXP_GPIO_H, LSEC pin 30 */ 497 "[CSI0_MCLK]", /* HSEC pin 15 */ 498 "[CSI1_MCLK]", /* HSEC pin 17 */ 499 "GPIO-K", /* LS_EXP_GPIO_K, LSEC pin 33 */ 500 "[I2C2_SDA]", /* HSEC pin 34 */ 501 "[I2C2_SCL]", /* HSEC pin 32 */ 502 "DSI2HDMI_INT_N", 503 "DSI_SW_SEL_APQ", 504 "GPIO-L", /* LS_EXP_GPIO_L, LSEC pin 34 */ 505 "GPIO-J", /* LS_EXP_GPIO_J, LSEC pin 32 */ 506 "GPIO-I", /* LS_EXP_GPIO_I, LSEC pin 31 */ 507 "GPIO-A", /* LS_EXP_GPIO_A, LSEC pin 23 */ 508 "FORCED_USB_BOOT", 509 "SD_CARD_DET_N", 510 "[WCSS_BT_SSBI]", 511 "[WCSS_WLAN_DATA_2]", /* GPIO 40 */ 512 "[WCSS_WLAN_DATA_1]", 513 "[WCSS_WLAN_DATA_0]", 514 "[WCSS_WLAN_SET]", 515 "[WCSS_WLAN_CLK]", 516 "[WCSS_FM_SSBI]", 517 "[WCSS_FM_SDI]", 518 "[WCSS_BT_DAT_CTL]", 519 "[WCSS_BT_DAT_STB]", 520 "NC", 521 "NC", /* GPIO 50 */ 522 "NC", 523 "NC", 524 "NC", 525 "NC", 526 "NC", 527 "NC", 528 "NC", 529 "NC", 530 "NC", 531 "NC", /* GPIO 60 */ 532 "NC", 533 "NC", 534 "[CDC_PDM0_CLK]", 535 "[CDC_PDM0_SYNC]", 536 "[CDC_PDM0_TX0]", 537 "[CDC_PDM0_RX0]", 538 "[CDC_PDM0_RX1]", 539 "[CDC_PDM0_RX2]", 540 "GPIO-D", /* LS_EXP_GPIO_D, LSEC pin 26 */ 541 "NC", /* GPIO 70 */ 542 "NC", 543 "NC", 544 "NC", 545 "NC", /* GPIO 74 */ 546 "NC", 547 "NC", 548 "NC", 549 "NC", 550 "NC", 551 "BOOT_CONFIG_0", /* GPIO 80 */ 552 "BOOT_CONFIG_1", 553 "BOOT_CONFIG_2", 554 "BOOT_CONFIG_3", 555 "NC", 556 "NC", 557 "BOOT_CONFIG_5", 558 "NC", 559 "NC", 560 "NC", 561 "NC", /* GPIO 90 */ 562 "NC", 563 "NC", 564 "NC", 565 "NC", 566 "NC", 567 "NC", 568 "NC", 569 "NC", 570 "NC", 571 "NC", /* GPIO 100 */ 572 "NC", 573 "NC", 574 "NC", 575 "SSBI_GPS", 576 "NC", 577 "NC", 578 "KEY_VOLP_N", 579 "NC", 580 "NC", 581 "[LS_EXP_MI2S_WS]", /* GPIO 110 */ 582 "NC", 583 "NC", 584 "[LS_EXP_MI2S_SCK]", 585 "[LS_EXP_MI2S_DATA0]", 586 "GPIO-E", /* LS_EXP_GPIO_E, LSEC pin 27 */ 587 "NC", 588 "[DSI2HDMI_MI2S_WS]", 589 "[DSI2HDMI_MI2S_SCK]", 590 "[DSI2HDMI_MI2S_DATA0]", 591 "USR_LED_2_CTRL", /* GPIO 120 */ 592 "SB_HS_ID"; 593 594 sdc2_cd_default: sdc2-cd-default-state { 595 pins = "gpio38"; 596 function = "gpio"; 597 drive-strength = <2>; 598 bias-disable; 599 }; 600 601 tlmm_leds: tlmm-leds-state { 602 pins = "gpio21", "gpio120"; 603 function = "gpio"; 604 605 output-low; 606 }; 607 608 usb_id_default: usb-id-default-state { 609 pins = "gpio121"; 610 function = "gpio"; 611 612 drive-strength = <8>; 613 bias-pull-up; 614 }; 615 616 adv7533_int_active: adv533-int-active-state { 617 pins = "gpio31"; 618 function = "gpio"; 619 620 drive-strength = <16>; 621 bias-disable; 622 }; 623 624 adv7533_int_suspend: adv7533-int-suspend-state { 625 pins = "gpio31"; 626 function = "gpio"; 627 628 drive-strength = <2>; 629 bias-disable; 630 }; 631 632 adv7533_switch_active: adv7533-switch-active-state { 633 pins = "gpio32"; 634 function = "gpio"; 635 636 drive-strength = <16>; 637 bias-disable; 638 }; 639 640 adv7533_switch_suspend: adv7533-switch-suspend-state { 641 pins = "gpio32"; 642 function = "gpio"; 643 644 drive-strength = <2>; 645 bias-disable; 646 }; 647 648 msm_key_volp_n_default: msm-key-volp-n-default-state { 649 pins = "gpio107"; 650 function = "gpio"; 651 652 drive-strength = <8>; 653 bias-pull-up; 654 }; 655 }; 656 657 &pm8916_gpios { 658 gpio-line-names = 659 "USR_LED_3_CTRL", 660 "USR_LED_4_CTRL", 661 "USB_HUB_RESET_N_PM", 662 "USB_SW_SEL_PM"; 663 664 usb_hub_reset_pm: usb-hub-reset-pm-state { 665 pins = "gpio3"; 666 function = PMIC_GPIO_FUNC_NORMAL; 667 668 input-disable; 669 output-high; 670 }; 671 672 usb_hub_reset_pm_device: usb-hub-reset-pm-device-state { 673 pins = "gpio3"; 674 function = PMIC_GPIO_FUNC_NORMAL; 675 676 output-low; 677 }; 678 679 usb_sw_sel_pm: usb-sw-sel-pm-state { 680 pins = "gpio4"; 681 function = PMIC_GPIO_FUNC_NORMAL; 682 683 power-source = <PM8916_GPIO_VPH>; 684 input-disable; 685 output-high; 686 }; 687 688 usb_sw_sel_pm_device: usb-sw-sel-pm-device-state { 689 pins = "gpio4"; 690 function = PMIC_GPIO_FUNC_NORMAL; 691 692 power-source = <PM8916_GPIO_VPH>; 693 input-disable; 694 output-low; 695 }; 696 697 pm8916_gpios_leds: pm8916-gpios-leds-state { 698 pins = "gpio1", "gpio2"; 699 function = PMIC_GPIO_FUNC_NORMAL; 700 701 output-low; 702 }; 703 }; 704 705 &pm8916_mpps { 706 gpio-line-names = 707 "VDD_PX_BIAS", 708 "WLAN_LED_CTRL", 709 "BT_LED_CTRL", 710 "GPIO-F"; /* LS_EXP_GPIO_F, LSEC pin 28 */ 711 712 pinctrl-names = "default"; 713 pinctrl-0 = <&ls_exp_gpio_f>; 714 715 ls_exp_gpio_f: pm8916-mpp4-state { 716 pins = "mpp4"; 717 function = "digital"; 718 719 output-low; 720 power-source = <PM8916_MPP_L5>; /* 1.8V */ 721 }; 722 723 pm8916_mpps_leds: pm8916-mpps-state { 724 pins = "mpp2", "mpp3"; 725 function = "digital"; 726 727 output-low; 728 }; 729 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.