1/* 2 * Copyright (c) 2015, The Linux Foundation. All rights reserved. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 and 6 * only version 2 as published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 */ 13 14#include "msm8916.dtsi" 15#include "pm8916.dtsi" 16#include "apq8016-sbc-soc-pins.dtsi" 17#include "apq8016-sbc-pmic-pins.dtsi" 18#include <dt-bindings/gpio/gpio.h> 19#include <dt-bindings/input/input.h> 20#include <dt-bindings/sound/apq8016-lpass.h> 21 22/* 23 * GPIO name legend: proper name = the GPIO line is used as GPIO 24 * NC = not connected (pin out but not routed from the chip to 25 * anything the board) 26 * "[PER]" = pin is muxed for [peripheral] (not GPIO) 27 * LSEC = Low Speed External Connector 28 * HSEC = High Speed External Connector 29 * 30 * Line names are taken from the schematic "DragonBoard410c" 31 * dated monday, august 31, 2015. Page 5 in particular. 32 * 33 * For the lines routed to the external connectors the 34 * lines are named after the 96Boards CE Specification 1.0, 35 * Appendix "Expansion Connector Signal Description". 36 * 37 * When the 96Board naming of a line and the schematic name of 38 * the same line are in conflict, the 96Board specification 39 * takes precedence, which means that the external UART on the 40 * LSEC is named UART0 while the schematic and SoC names this 41 * UART3. This is only for the informational lines i.e. "[FOO]", 42 * the GPIO named lines "GPIO-A" thru "GPIO-L" are the only 43 * ones actually used for GPIO. 44 */ 45 46/ { 47 aliases { 48 serial0 = &blsp1_uart2; 49 serial1 = &blsp1_uart1; 50 usid0 = &pm8916_0; 51 i2c0 = &blsp_i2c2; 52 i2c1 = &blsp_i2c6; 53 i2c3 = &blsp_i2c4; 54 spi0 = &blsp_spi5; 55 spi1 = &blsp_spi3; 56 }; 57 58 chosen { 59 stdout-path = "serial0"; 60 }; 61 62 reserved-memory { 63 ramoops@bff00000{ 64 compatible = "ramoops"; 65 reg = <0x0 0xbff00000 0x0 0x100000>; 66 67 record-size = <0x20000>; 68 console-size = <0x20000>; 69 ftrace-size = <0x20000>; 70 }; 71 }; 72 73 soc { 74 pinctrl@1000000 { 75 gpio-line-names = 76 "[UART0_TX]", /* GPIO_0, LSEC pin 5 */ 77 "[UART0_RX]", /* GPIO_1, LSEC pin 7 */ 78 "[UART0_CTS_N]", /* GPIO_2, LSEC pin 3 */ 79 "[UART0_RTS_N]", /* GPIO_3, LSEC pin 9 */ 80 "[UART1_TX]", /* GPIO_4, LSEC pin 11 */ 81 "[UART1_RX]", /* GPIO_5, LSEC pin 13 */ 82 "[I2C0_SDA]", /* GPIO_8, LSEC pin 17 */ 83 "[I2C0_SCL]", /* GPIO_7, LSEC pin 15 */ 84 "[SPI1_DOUT]", /* SPI1_MOSI, HSEC pin 1 */ 85 "[SPI1_DIN]", /* SPI1_MISO, HSEC pin 11 */ 86 "[SPI1_CS]", /* SPI1_CS_N, HSEC pin 7 */ 87 "[SPI1_SCLK]", /* SPI1_CLK, HSEC pin 9 */ 88 "GPIO-B", /* LS_EXP_GPIO_B, LSEC pin 24 */ 89 "GPIO-C", /* LS_EXP_GPIO_C, LSEC pin 25 */ 90 "[I2C3_SDA]", /* HSEC pin 38 */ 91 "[I2C3_SCL]", /* HSEC pin 36 */ 92 "[SPI0_MOSI]", /* LSEC pin 14 */ 93 "[SPI0_MISO]", /* LSEC pin 10 */ 94 "[SPI0_CS_N]", /* LSEC pin 12 */ 95 "[SPI0_CLK]", /* LSEC pin 8 */ 96 "HDMI_HPD_N", /* GPIO 20 */ 97 "USR_LED_1_CTRL", 98 "[I2C1_SDA]", /* GPIO_22, LSEC pin 21 */ 99 "[I2C1_SCL]", /* GPIO_23, LSEC pin 19 */ 100 "GPIO-G", /* LS_EXP_GPIO_G, LSEC pin 29 */ 101 "GPIO-H", /* LS_EXP_GPIO_H, LSEC pin 30 */ 102 "[CSI0_MCLK]", /* HSEC pin 15 */ 103 "[CSI1_MCLK]", /* HSEC pin 17 */ 104 "GPIO-K", /* LS_EXP_GPIO_K, LSEC pin 33 */ 105 "[I2C2_SDA]", /* HSEC pin 34 */ 106 "[I2C2_SCL]", /* HSEC pin 32 */ 107 "DSI2HDMI_INT_N", 108 "DSI_SW_SEL_APQ", 109 "GPIO-L", /* LS_EXP_GPIO_L, LSEC pin 34 */ 110 "GPIO-J", /* LS_EXP_GPIO_J, LSEC pin 32 */ 111 "GPIO-I", /* LS_EXP_GPIO_I, LSEC pin 31 */ 112 "GPIO-A", /* LS_EXP_GPIO_A, LSEC pin 23 */ 113 "FORCED_USB_BOOT", 114 "SD_CARD_DET_N", 115 "[WCSS_BT_SSBI]", 116 "[WCSS_WLAN_DATA_2]", /* GPIO 40 */ 117 "[WCSS_WLAN_DATA_1]", 118 "[WCSS_WLAN_DATA_0]", 119 "[WCSS_WLAN_SET]", 120 "[WCSS_WLAN_CLK]", 121 "[WCSS_FM_SSBI]", 122 "[WCSS_FM_SDI]", 123 "[WCSS_BT_DAT_CTL]", 124 "[WCSS_BT_DAT_STB]", 125 "NC", 126 "NC", /* GPIO 50 */ 127 "NC", 128 "NC", 129 "NC", 130 "NC", 131 "NC", 132 "NC", 133 "NC", 134 "NC", 135 "NC", 136 "NC", /* GPIO 60 */ 137 "NC", 138 "NC", 139 "[CDC_PDM0_CLK]", 140 "[CDC_PDM0_SYNC]", 141 "[CDC_PDM0_TX0]", 142 "[CDC_PDM0_RX0]", 143 "[CDC_PDM0_RX1]", 144 "[CDC_PDM0_RX2]", 145 "GPIO-D", /* LS_EXP_GPIO_D, LSEC pin 26 */ 146 "NC", /* GPIO 70 */ 147 "NC", 148 "NC", 149 "NC", 150 "NC", /* GPIO 74 */ 151 "NC", 152 "NC", 153 "NC", 154 "NC", 155 "NC", 156 "BOOT_CONFIG_0", /* GPIO 80 */ 157 "BOOT_CONFIG_1", 158 "BOOT_CONFIG_2", 159 "BOOT_CONFIG_3", 160 "NC", 161 "NC", 162 "BOOT_CONFIG_5", 163 "NC", 164 "NC", 165 "NC", 166 "NC", /* GPIO 90 */ 167 "NC", 168 "NC", 169 "NC", 170 "NC", 171 "NC", 172 "NC", 173 "NC", 174 "NC", 175 "NC", 176 "NC", /* GPIO 100 */ 177 "NC", 178 "NC", 179 "NC", 180 "SSBI_GPS", 181 "NC", 182 "NC", 183 "KEY_VOLP_N", 184 "NC", 185 "NC", 186 "[LS_EXP_MI2S_WS]", /* GPIO 110 */ 187 "NC", 188 "NC", 189 "[LS_EXP_MI2S_SCK]", 190 "[LS_EXP_MI2S_DATA0]", 191 "GPIO-E", /* LS_EXP_GPIO_E, LSEC pin 27 */ 192 "NC", 193 "[DSI2HDMI_MI2S_WS]", 194 "[DSI2HDMI_MI2S_SCK]", 195 "[DSI2HDMI_MI2S_DATA0]", 196 "USR_LED_2_CTRL", /* GPIO 120 */ 197 "SB_HS_ID"; 198 }; 199 200 dma@7884000 { 201 status = "okay"; 202 }; 203 204 serial@78af000 { 205 label = "LS-UART0"; 206 status = "okay"; 207 pinctrl-names = "default", "sleep"; 208 pinctrl-0 = <&blsp1_uart1_default>; 209 pinctrl-1 = <&blsp1_uart1_sleep>; 210 }; 211 212 serial@78b0000 { 213 label = "LS-UART1"; 214 status = "okay"; 215 pinctrl-names = "default", "sleep"; 216 pinctrl-0 = <&blsp1_uart2_default>; 217 pinctrl-1 = <&blsp1_uart2_sleep>; 218 }; 219 220 i2c@78b6000 { 221 /* On Low speed expansion */ 222 label = "LS-I2C0"; 223 status = "okay"; 224 }; 225 226 i2c@78b8000 { 227 /* On High speed expansion */ 228 label = "HS-I2C2"; 229 status = "okay"; 230 231 adv_bridge: bridge@39 { 232 status = "okay"; 233 234 compatible = "adi,adv7533"; 235 reg = <0x39>; 236 237 interrupt-parent = <&msmgpio>; 238 interrupts = <31 2>; 239 240 adi,dsi-lanes = <4>; 241 clocks = <&rpmcc RPM_SMD_BB_CLK2>; 242 clock-names = "cec"; 243 244 pd-gpios = <&msmgpio 32 0>; 245 246 avdd-supply = <&pm8916_l6>; 247 v1p2-supply = <&pm8916_l6>; 248 v3p3-supply = <&pm8916_l17>; 249 250 pinctrl-names = "default","sleep"; 251 pinctrl-0 = <&adv7533_int_active &adv7533_switch_active>; 252 pinctrl-1 = <&adv7533_int_suspend &adv7533_switch_suspend>; 253 #sound-dai-cells = <1>; 254 255 ports { 256 #address-cells = <1>; 257 #size-cells = <0>; 258 259 port@0 { 260 reg = <0>; 261 adv7533_in: endpoint { 262 remote-endpoint = <&dsi0_out>; 263 }; 264 }; 265 266 port@1 { 267 reg = <1>; 268 adv7533_out: endpoint { 269 remote-endpoint = <&hdmi_con>; 270 }; 271 }; 272 }; 273 }; 274 }; 275 276 i2c@78ba000 { 277 /* On Low speed expansion */ 278 label = "LS-I2C1"; 279 status = "okay"; 280 }; 281 282 spi@78b7000 { 283 /* On High speed expansion */ 284 label = "HS-SPI1"; 285 status = "okay"; 286 }; 287 288 spi@78b9000 { 289 /* On Low speed expansion */ 290 label = "LS-SPI0"; 291 status = "okay"; 292 }; 293 294 leds { 295 pinctrl-names = "default"; 296 pinctrl-0 = <&msmgpio_leds>, 297 <&pm8916_gpios_leds>, 298 <&pm8916_mpps_leds>; 299 300 compatible = "gpio-leds"; 301 302 led@1 { 303 label = "apq8016-sbc:green:user1"; 304 gpios = <&msmgpio 21 GPIO_ACTIVE_HIGH>; 305 linux,default-trigger = "heartbeat"; 306 default-state = "off"; 307 }; 308 309 led@2 { 310 label = "apq8016-sbc:green:user2"; 311 gpios = <&msmgpio 120 GPIO_ACTIVE_HIGH>; 312 linux,default-trigger = "mmc0"; 313 default-state = "off"; 314 }; 315 316 led@3 { 317 label = "apq8016-sbc:green:user3"; 318 gpios = <&pm8916_gpios 1 GPIO_ACTIVE_HIGH>; 319 linux,default-trigger = "mmc1"; 320 default-state = "off"; 321 }; 322 323 led@4 { 324 label = "apq8016-sbc:green:user4"; 325 gpios = <&pm8916_gpios 2 GPIO_ACTIVE_HIGH>; 326 linux,default-trigger = "none"; 327 panic-indicator; 328 default-state = "off"; 329 }; 330 331 led@5 { 332 label = "apq8016-sbc:yellow:wlan"; 333 gpios = <&pm8916_mpps 2 GPIO_ACTIVE_HIGH>; 334 linux,default-trigger = "phy0tx"; 335 default-state = "off"; 336 }; 337 338 led@6 { 339 label = "apq8016-sbc:blue:bt"; 340 gpios = <&pm8916_mpps 3 GPIO_ACTIVE_HIGH>; 341 linux,default-trigger = "bluetooth-power"; 342 default-state = "off"; 343 }; 344 }; 345 346 sdhci@7824000 { 347 vmmc-supply = <&pm8916_l8>; 348 vqmmc-supply = <&pm8916_l5>; 349 350 pinctrl-names = "default", "sleep"; 351 pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>; 352 pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>; 353 status = "okay"; 354 }; 355 356 sdhci@7864000 { 357 vmmc-supply = <&pm8916_l11>; 358 vqmmc-supply = <&pm8916_l12>; 359 360 pinctrl-names = "default", "sleep"; 361 pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>; 362 pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>; 363 364 cd-gpios = <&msmgpio 38 0x1>; 365 status = "okay"; 366 }; 367 368 usb@78d9000 { 369 extcon = <&usb_id>; 370 status = "okay"; 371 adp-disable; 372 hnp-disable; 373 srp-disable; 374 dr_mode = "host"; 375 pinctrl-names = "default"; 376 pinctrl-0 = <&usb_sw_sel_pm>; 377 ulpi { 378 phy { 379 v1p8-supply = <&pm8916_l7>; 380 v3p3-supply = <&pm8916_l13>; 381 extcon = <&usb_id>; 382 }; 383 }; 384 }; 385 386 lpass@7708000 { 387 status = "okay"; 388 }; 389 390 mdss@1a00000 { 391 status = "okay"; 392 393 mdp@1a01000 { 394 status = "okay"; 395 }; 396 397 dsi@1a98000 { 398 status = "okay"; 399 400 vdda-supply = <&pm8916_l2>; 401 vddio-supply = <&pm8916_l6>; 402 403 ports { 404 port@1 { 405 endpoint { 406 remote-endpoint = <&adv7533_in>; 407 data-lanes = <0 1 2 3>; 408 }; 409 }; 410 }; 411 }; 412 413 dsi-phy@1a98300 { 414 status = "okay"; 415 416 vddio-supply = <&pm8916_l6>; 417 }; 418 }; 419 420 lpass_codec: codec{ 421 status = "okay"; 422 }; 423 424 /* 425 Internal Codec 426 playback - Primary MI2S 427 capture - Ter MI2S 428 429 External Primary: 430 playback - secondary MI2S 431 capture - Quat MI2S 432 433 External Secondary: 434 playback - Quat MI2S 435 capture - Quat MI2S 436 437 */ 438 439 sound: sound { 440 compatible = "qcom,apq8016-sbc-sndcard"; 441 reg = <0x07702000 0x4>, <0x07702004 0x4>; 442 reg-names = "mic-iomux", "spkr-iomux"; 443 444 status = "okay"; 445 pinctrl-0 = <&cdc_pdm_lines_act &ext_sec_tlmm_lines_act &ext_mclk_tlmm_lines_act>; 446 pinctrl-1 = <&cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus &ext_mclk_tlmm_lines_sus>; 447 pinctrl-names = "default", "sleep"; 448 qcom,model = "DB410c"; 449 qcom,audio-routing = 450 "AMIC2", "MIC BIAS Internal2", 451 "AMIC3", "MIC BIAS External1"; 452 external-dai-link@0 { 453 link-name = "ADV7533"; 454 cpu { /* QUAT */ 455 sound-dai = <&lpass MI2S_QUATERNARY>; 456 }; 457 codec { 458 sound-dai = <&adv_bridge 0>; 459 }; 460 }; 461 462 internal-codec-playback-dai-link@0 { /* I2S - Internal codec */ 463 link-name = "WCD"; 464 cpu { /* PRIMARY */ 465 sound-dai = <&lpass MI2S_PRIMARY>; 466 }; 467 codec { 468 sound-dai = <&lpass_codec 0>, <&wcd_codec 0>; 469 }; 470 }; 471 472 internal-codec-capture-dai-link@0 { /* I2S - Internal codec */ 473 link-name = "WCD-Capture"; 474 cpu { /* PRIMARY */ 475 sound-dai = <&lpass MI2S_TERTIARY>; 476 }; 477 codec { 478 sound-dai = <&lpass_codec 1>, <&wcd_codec 1>; 479 }; 480 }; 481 }; 482 483 spmi@200f000 { 484 pm8916@0 { 485 gpios@c000 { 486 gpio-line-names = 487 "USR_LED_3_CTRL", 488 "USR_LED_4_CTRL", 489 "USB_HUB_RESET_N_PM", 490 "USB_SW_SEL_PM"; 491 }; 492 mpps@a000 { 493 gpio-line-names = 494 "VDD_PX_BIAS", 495 "WLAN_LED_CTRL", 496 "BT_LED_CTRL", 497 "GPIO-F"; /* LS_EXP_GPIO_F, LSEC pin 28 */ 498 }; 499 }; 500 }; 501 502 wcnss@a21b000 { 503 status = "okay"; 504 }; 505 }; 506 507 usb2513 { 508 compatible = "smsc,usb3503"; 509 reset-gpios = <&pm8916_gpios 3 GPIO_ACTIVE_LOW>; 510 initial-mode = <1>; 511 }; 512 513 usb_id: usb-id { 514 compatible = "linux,extcon-usb-gpio"; 515 vbus-gpio = <&msmgpio 121 GPIO_ACTIVE_HIGH>; 516 pinctrl-names = "default"; 517 pinctrl-0 = <&usb_id_default>; 518 }; 519 520 hdmi-out { 521 compatible = "hdmi-connector"; 522 type = "a"; 523 524 port { 525 hdmi_con: endpoint { 526 remote-endpoint = <&adv7533_out>; 527 }; 528 }; 529 }; 530 531 gpio_keys { 532 compatible = "gpio-keys"; 533 #address-cells = <1>; 534 #size-cells = <0>; 535 autorepeat; 536 537 pinctrl-names = "default"; 538 pinctrl-0 = <&msm_key_volp_n_default>; 539 540 button@0 { 541 label = "Volume Up"; 542 linux,code = <KEY_VOLUMEUP>; 543 gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>; 544 }; 545 }; 546}; 547 548&wcd_codec { 549 status = "okay"; 550 clocks = <&gcc GCC_CODEC_DIGCODEC_CLK>; 551 clock-names = "mclk"; 552 qcom,mbhc-vthreshold-low = <75 150 237 450 500>; 553 qcom,mbhc-vthreshold-high = <75 150 237 450 500>; 554}; 555 556&smd_rpm_regulators { 557 vdd_l1_l2_l3-supply = <&pm8916_s3>; 558 vdd_l5-supply = <&pm8916_s3>; 559 vdd_l4_l5_l6-supply = <&pm8916_s4>; 560 vdd_l7-supply = <&pm8916_s4>; 561 562 s1 { 563 regulator-min-microvolt = <375000>; 564 regulator-max-microvolt = <1562000>; 565 }; 566 567 s3 { 568 regulator-min-microvolt = <375000>; 569 regulator-max-microvolt = <1562000>; 570 }; 571 572 s4 { 573 regulator-min-microvolt = <1800000>; 574 regulator-max-microvolt = <1800000>; 575 576 regulator-always-on; 577 regulator-boot-on; 578 }; 579 580 l1 { 581 regulator-min-microvolt = <375000>; 582 regulator-max-microvolt = <1525000>; 583 }; 584 585 l2 { 586 regulator-min-microvolt = <1200000>; 587 regulator-max-microvolt = <1200000>; 588 }; 589 590 l3 { 591 regulator-min-microvolt = <375000>; 592 regulator-max-microvolt = <1525000>; 593 }; 594 595 l4 { 596 regulator-min-microvolt = <1750000>; 597 regulator-max-microvolt = <3337000>; 598 }; 599 600 l5 { 601 regulator-min-microvolt = <1750000>; 602 regulator-max-microvolt = <3337000>; 603 }; 604 605 l6 { 606 regulator-min-microvolt = <1800000>; 607 regulator-max-microvolt = <1800000>; 608 }; 609 610 l7 { 611 regulator-min-microvolt = <1750000>; 612 regulator-max-microvolt = <3337000>; 613 }; 614 615 l8 { 616 regulator-min-microvolt = <1750000>; 617 regulator-max-microvolt = <3337000>; 618 }; 619 620 l9 { 621 regulator-min-microvolt = <1750000>; 622 regulator-max-microvolt = <3337000>; 623 }; 624 625 l10 { 626 regulator-min-microvolt = <1750000>; 627 regulator-max-microvolt = <3337000>; 628 }; 629 630 l11 { 631 regulator-min-microvolt = <1750000>; 632 regulator-max-microvolt = <3337000>; 633 }; 634 635 l12 { 636 regulator-min-microvolt = <1750000>; 637 regulator-max-microvolt = <3337000>; 638 }; 639 640 l13 { 641 regulator-min-microvolt = <1750000>; 642 regulator-max-microvolt = <3337000>; 643 }; 644 645 l14 { 646 regulator-min-microvolt = <1750000>; 647 regulator-max-microvolt = <3337000>; 648 }; 649 650 /** 651 * 1.8v required on LS expansion 652 * for mezzanine boards 653 */ 654 l15 { 655 regulator-min-microvolt = <1750000>; 656 regulator-max-microvolt = <3337000>; 657 regulator-always-on; 658 }; 659 660 l16 { 661 regulator-min-microvolt = <1750000>; 662 regulator-max-microvolt = <3337000>; 663 }; 664 665 l17 { 666 regulator-min-microvolt = <3300000>; 667 regulator-max-microvolt = <3300000>; 668 }; 669 670 l18 { 671 regulator-min-microvolt = <1750000>; 672 regulator-max-microvolt = <3337000>; 673 }; 674}; 675