1// SPDX-License-Identifier: GPL-2.0-only 2 3/dts-v1/; 4 5#include "msm8939-pm8916.dtsi" 6#include "msm8916-modem-qdsp6.dtsi" 7 8#include <dt-bindings/gpio/gpio.h> 9#include <dt-bindings/input/input.h> 10#include <dt-bindings/interrupt-controller/irq.h> 11#include <dt-bindings/sound/apq8016-lpass.h> 12 13/ { 14 model = "Samsung Galaxy A7 (2015)"; 15 compatible = "samsung,a7", "qcom,msm8939"; 16 chassis-type = "handset"; 17 18 aliases { 19 mmc0 = &sdhc_1; /* SDC1 eMMC slot */ 20 mmc1 = &sdhc_2; /* SDC2 SD card slot */ 21 serial0 = &blsp_uart2; 22 }; 23 24 chosen { 25 stdout-path = "serial0"; 26 }; 27 28 reserved-memory { 29 /* Additional memory used by Samsung firmware modifications */ 30 tz-apps@85500000 { 31 reg = <0x0 0x85500000 0x0 0xb00000>; 32 no-map; 33 }; 34 }; 35 36 battery: battery { 37 compatible = "simple-battery"; 38 charge-term-current-microamp = <150000>; 39 constant-charge-current-max-microamp = <1500000>; 40 constant-charge-voltage-max-microvolt = <4300000>; 41 precharge-current-microamp = <450000>; 42 precharge-upper-limit-microvolt = <3500000>; 43 }; 44 45 gpio-hall-sensor { 46 compatible = "gpio-keys"; 47 48 pinctrl-0 = <&gpio_hall_sensor_default>; 49 pinctrl-names = "default"; 50 51 label = "GPIO Hall Effect Sensor"; 52 53 event-hall-sensor { 54 label = "Hall Effect Sensor"; 55 gpios = <&tlmm 52 GPIO_ACTIVE_LOW>; 56 linux,input-type = <EV_SW>; 57 linux,code = <SW_LID>; 58 linux,can-disable; 59 }; 60 }; 61 62 gpio-keys { 63 compatible = "gpio-keys"; 64 65 pinctrl-0 = <&gpio_keys_default>; 66 pinctrl-names = "default"; 67 68 label = "GPIO Buttons"; 69 70 button-volume-up { 71 label = "Volume Up"; 72 gpios = <&tlmm 107 GPIO_ACTIVE_LOW>; 73 linux,code = <KEY_VOLUMEUP>; 74 }; 75 76 button-home { 77 label = "Home"; 78 gpios = <&tlmm 109 GPIO_ACTIVE_LOW>; 79 linux,code = <KEY_HOMEPAGE>; 80 }; 81 }; 82 83 i2c-fg { 84 compatible = "i2c-gpio"; 85 sda-gpios = <&tlmm 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 86 scl-gpios = <&tlmm 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 87 88 pinctrl-0 = <&fg_i2c_default>; 89 pinctrl-names = "default"; 90 91 #address-cells = <1>; 92 #size-cells = <0>; 93 94 fuel-gauge@35 { 95 compatible = "richtek,rt5033-battery"; 96 reg = <0x35>; 97 98 interrupt-parent = <&tlmm>; 99 interrupts = <121 IRQ_TYPE_EDGE_BOTH>; 100 101 pinctrl-0 = <&fg_alert_default>; 102 pinctrl-names = "default"; 103 104 power-supplies = <&charger>; 105 }; 106 }; 107 108 i2c-nfc { 109 compatible = "i2c-gpio"; 110 sda-gpios = <&tlmm 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 111 scl-gpios = <&tlmm 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 112 113 pinctrl-0 = <&nfc_i2c_default>; 114 pinctrl-names = "default"; 115 116 #address-cells = <1>; 117 #size-cells = <0>; 118 119 nfc@2b { 120 compatible = "nxp,pn547", "nxp,nxp-nci-i2c"; 121 reg = <0x2b>; 122 123 interrupt-parent = <&tlmm>; 124 interrupts = <21 IRQ_TYPE_EDGE_RISING>; 125 126 enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>; 127 firmware-gpios = <&tlmm 49 GPIO_ACTIVE_HIGH>; 128 129 pinctrl-0 = <&nfc_default>; 130 pinctrl-names = "default"; 131 }; 132 }; 133 134 i2c-sensor { 135 compatible = "i2c-gpio"; 136 sda-gpios = <&tlmm 84 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 137 scl-gpios = <&tlmm 85 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 138 139 pinctrl-0 = <&sensor_i2c_default>; 140 pinctrl-names = "default"; 141 142 #address-cells = <1>; 143 #size-cells = <0>; 144 145 accelerometer: accelerometer@10 { 146 compatible = "bosch,bmc150_accel"; 147 reg = <0x10>; 148 interrupt-parent = <&tlmm>; 149 interrupts = <115 IRQ_TYPE_EDGE_RISING>; 150 151 vdd-supply = <&pm8916_l17>; 152 vddio-supply = <&pm8916_l5>; 153 154 pinctrl-0 = <&accel_int_default>; 155 pinctrl-names = "default"; 156 157 mount-matrix = "-1", "0", "0", 158 "0", "-1", "0", 159 "0", "0", "1"; 160 }; 161 162 magnetometer@12 { 163 compatible = "bosch,bmc150_magn"; 164 reg = <0x12>; 165 166 vdd-supply = <&pm8916_l17>; 167 vddio-supply = <&pm8916_l5>; 168 }; 169 }; 170 171 i2c-tkey { 172 compatible = "i2c-gpio"; 173 sda-gpios = <&tlmm 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 174 scl-gpios = <&tlmm 17 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 175 176 pinctrl-0 = <&tkey_i2c_default>; 177 pinctrl-names = "default"; 178 179 #address-cells = <1>; 180 #size-cells = <0>; 181 182 touchkey@20 { 183 /* Note: Actually an ABOV MCU that implements same interface */ 184 compatible = "coreriver,tc360-touchkey"; 185 reg = <0x20>; 186 187 interrupt-parent = <&tlmm>; 188 interrupts = <20 IRQ_TYPE_EDGE_FALLING>; 189 190 vcc-supply = <®_touch_key>; 191 vdd-supply = <®_keyled>; 192 vddio-supply = <&pm8916_l6>; 193 194 linux,keycodes = <KEY_APPSELECT KEY_BACK>; 195 196 pinctrl-0 = <&tkey_default>; 197 pinctrl-names = "default"; 198 }; 199 }; 200 201 pwm_vibrator: pwm { 202 compatible = "clk-pwm"; 203 #pwm-cells = <2>; 204 205 clocks = <&gcc GCC_GP2_CLK>; 206 207 pinctrl-0 = <&motor_pwm_default>; 208 pinctrl-names = "default"; 209 }; 210 211 reg_keyled: regulator-keyled { 212 compatible = "regulator-fixed"; 213 regulator-name = "keyled"; 214 regulator-min-microvolt = <3300000>; 215 regulator-max-microvolt = <3300000>; 216 217 /* NOTE: On some variants e.g. SM-A700FD it's GPIO 91 */ 218 gpio = <&tlmm 100 GPIO_ACTIVE_HIGH>; 219 enable-active-high; 220 221 pinctrl-0 = <&tkey_led_en_default>; 222 pinctrl-names = "default"; 223 }; 224 225 reg_touch_key: regulator-touch-key { 226 compatible = "regulator-fixed"; 227 regulator-name = "touch_key"; 228 regulator-min-microvolt = <2800000>; 229 regulator-max-microvolt = <2800000>; 230 231 gpio = <&tlmm 56 GPIO_ACTIVE_HIGH>; 232 enable-active-high; 233 234 pinctrl-0 = <&tkey_en_default>; 235 pinctrl-names = "default"; 236 }; 237 238 reg_tsp_vdd: regulator-tsp-vdd { 239 compatible = "regulator-fixed"; 240 regulator-name = "tsp_vdd"; 241 regulator-min-microvolt = <1800000>; 242 regulator-max-microvolt = <1800000>; 243 vin-supply = <&pm8916_s4>; 244 245 gpio = <&tlmm 8 GPIO_ACTIVE_HIGH>; 246 enable-active-high; 247 248 pinctrl-0 = <®_tsp_io_en_default>; 249 pinctrl-names = "default"; 250 }; 251 252 reg_vdd_tsp: regulator-vdd-tsp { 253 compatible = "regulator-fixed"; 254 regulator-name = "vdd_tsp"; 255 regulator-min-microvolt = <3300000>; 256 regulator-max-microvolt = <3300000>; 257 258 gpio = <&tlmm 73 GPIO_ACTIVE_HIGH>; 259 enable-active-high; 260 261 pinctrl-0 = <®_tsp_en_default>; 262 pinctrl-names = "default"; 263 }; 264 265 reg_vibrator: regulator-vibrator { 266 compatible = "regulator-fixed"; 267 regulator-name = "motor_en"; 268 regulator-min-microvolt = <3000000>; 269 regulator-max-microvolt = <3000000>; 270 271 gpio = <&tlmm 86 GPIO_ACTIVE_HIGH>; 272 enable-active-high; 273 274 pinctrl-0 = <&motor_en_default>; 275 pinctrl-names = "default"; 276 }; 277 278 vibrator { 279 compatible = "pwm-vibrator"; 280 281 pwms = <&pwm_vibrator 0 100000>; 282 pwm-names = "enable"; 283 284 vcc-supply = <®_vibrator>; 285 }; 286}; 287 288&blsp_i2c1 { 289 status = "okay"; 290 291 muic: extcon@25 { 292 compatible = "siliconmitus,sm5502-muic"; 293 reg = <0x25>; 294 295 interrupt-parent = <&tlmm>; 296 interrupts = <12 IRQ_TYPE_EDGE_FALLING>; 297 298 pinctrl-0 = <&muic_int_default>; 299 pinctrl-names = "default"; 300 301 usb_con: connector { 302 compatible = "usb-b-connector"; 303 label = "micro-USB"; 304 type = "micro"; 305 }; 306 }; 307}; 308 309&blsp_i2c2 { 310 status = "okay"; 311 312 speaker_codec: audio-codec@34 { 313 compatible = "nxp,tfa9895"; 314 reg = <0x34>; 315 vddd-supply = <&pm8916_l5>; 316 sound-name-prefix = "Speaker"; 317 #sound-dai-cells = <0>; 318 }; 319}; 320 321&blsp_i2c5 { 322 status = "okay"; 323 324 touchscreen@24 { 325 compatible = "cypress,tt21000"; 326 327 reg = <0x24>; 328 interrupt-parent = <&tlmm>; 329 interrupts = <13 IRQ_TYPE_EDGE_FALLING>; 330 331 vdd-supply = <®_vdd_tsp>; 332 vddio-supply = <®_tsp_vdd>; 333 334 pinctrl-0 = <&tsp_int_default>; 335 pinctrl-names = "default"; 336 }; 337}; 338 339&blsp_i2c6 { 340 status = "okay"; 341 342 pmic@34 { 343 compatible = "richtek,rt5033"; 344 reg = <0x34>; 345 346 interrupts-extended = <&tlmm 62 IRQ_TYPE_EDGE_FALLING>; 347 348 pinctrl-0 = <&pmic_int_default>; 349 pinctrl-names = "default"; 350 351 regulators { 352 rt5033_reg_safe_ldo: SAFE_LDO { 353 regulator-min-microvolt = <4900000>; 354 regulator-max-microvolt = <4900000>; 355 regulator-always-on; 356 }; 357 358 /* 359 * Needed for camera, but not used yet. 360 * Define empty nodes to allow disabling the unused 361 * regulators. 362 */ 363 LDO {}; 364 BUCK {}; 365 }; 366 367 charger: charger { 368 compatible = "richtek,rt5033-charger"; 369 monitored-battery = <&battery>; 370 richtek,usb-connector = <&usb_con>; 371 }; 372 }; 373}; 374 375&blsp_uart2 { 376 status = "okay"; 377}; 378 379/* 380 * For some reason the speaker amplifier is connected to the second SD line 381 * (MI2S_2_D1) instead of the first (MI2S_2_D0). This must be configured in the 382 * device tree, otherwise audio will seemingly play fine on the wrong SD line 383 * but the speaker stays silent. 384 * 385 * When routing audio via QDSP6 (the default) the &lpass node is reserved and 386 * the definitions from &q6afedai are used. When the modem is disabled audio can 387 * be alternatively routed directly to the LPASS hardware with reduced latency. 388 * The definitions for &lpass are here for completeness to simplify changing the 389 * setup with minor changes to the DT (either manually or with DT overlays). 390 */ 391&lpass { 392 dai-link@3 { 393 reg = <MI2S_QUATERNARY>; 394 qcom,playback-sd-lines = <1>; 395 }; 396}; 397 398&mpss_mem { 399 reg = <0x0 0x86800000 0x0 0x5800000>; 400}; 401 402&pm8916_resin { 403 linux,code = <KEY_VOLUMEDOWN>; 404 status = "okay"; 405}; 406 407&pm8916_rpm_regulators { 408 pm8916_l17: l17 { 409 regulator-min-microvolt = <2850000>; 410 regulator-max-microvolt = <2850000>; 411 }; 412}; 413 414&q6afedai { 415 dai@22 { 416 reg = <QUATERNARY_MI2S_RX>; 417 qcom,sd-lines = <1>; 418 }; 419}; 420 421&sdhc_1 { 422 status = "okay"; 423}; 424 425&sdhc_2 { 426 pinctrl-0 = <&sdc2_default &sdc2_cd_default>; 427 pinctrl-1 = <&sdc2_sleep &sdc2_cd_default>; 428 pinctrl-names = "default", "sleep"; 429 430 cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; 431 432 status = "okay"; 433}; 434 435&sound { 436 model = "samsung-a2015"; 437 audio-routing = 438 "AMIC1", "MIC BIAS External1", 439 "AMIC2", "MIC BIAS Internal2", 440 "AMIC3", "MIC BIAS External1"; 441 442 pinctrl-0 = <&cdc_pdm_default &sec_mi2s_default>; 443 pinctrl-1 = <&cdc_pdm_sleep &sec_mi2s_sleep>; 444 pinctrl-names = "default", "sleep"; 445 446 sound_link_backend2: backend2-dai-link { 447 link-name = "Quaternary MI2S"; 448 449 cpu { 450 sound-dai = <&q6afedai QUATERNARY_MI2S_RX>; 451 }; 452 platform { 453 sound-dai = <&q6routing>; 454 }; 455 codec { 456 sound-dai = <&speaker_codec>; 457 }; 458 }; 459}; 460 461&usb { 462 extcon = <&muic>, <&muic>; 463 status = "okay"; 464}; 465 466&usb_hs_phy { 467 extcon = <&muic>; 468}; 469 470&wcnss { 471 status = "okay"; 472}; 473 474&wcnss_iris { 475 compatible = "qcom,wcn3660b"; 476}; 477 478&wcnss_mem { 479 status = "okay"; 480}; 481 482&tlmm { 483 accel_int_default: accel-int-default-state { 484 pins = "gpio115"; 485 function = "gpio"; 486 drive-strength = <2>; 487 bias-disable; 488 }; 489 490 fg_alert_default: fg-alert-default-state { 491 pins = "gpio121"; 492 function = "gpio"; 493 drive-strength = <2>; 494 bias-disable; 495 }; 496 497 fg_i2c_default: fg-i2c-default-state { 498 pins = "gpio105", "gpio106"; 499 function = "gpio"; 500 drive-strength = <2>; 501 bias-disable; 502 }; 503 504 gpio_hall_sensor_default: gpio-hall-sensor-default-state { 505 pins = "gpio52"; 506 function = "gpio"; 507 drive-strength = <2>; 508 bias-disable; 509 }; 510 511 gpio_keys_default: gpio-keys-default-state { 512 pins = "gpio107", "gpio109"; 513 function = "gpio"; 514 drive-strength = <2>; 515 bias-pull-up; 516 }; 517 518 motor_en_default: motor-en-default-state { 519 pins = "gpio86"; 520 function = "gpio"; 521 drive-strength = <2>; 522 bias-disable; 523 }; 524 525 motor_pwm_default: motor-pwm-default-state { 526 pins = "gpio50"; 527 function = "gcc_gp2_clk_a"; 528 }; 529 530 muic_int_default: muic-int-default-state { 531 pins = "gpio12"; 532 function = "gpio"; 533 drive-strength = <2>; 534 bias-disable; 535 }; 536 537 nfc_default: nfc-default-state { 538 irq-pins { 539 pins = "gpio21"; 540 function = "gpio"; 541 drive-strength = <2>; 542 bias-pull-down; 543 }; 544 545 nfc-pins { 546 pins = "gpio49", "gpio116"; 547 function = "gpio"; 548 drive-strength = <2>; 549 bias-disable; 550 }; 551 }; 552 553 nfc_i2c_default: nfc-i2c-default-state { 554 pins = "gpio0", "gpio1"; 555 function = "gpio"; 556 drive-strength = <2>; 557 bias-disable; 558 }; 559 560 pmic_int_default: pmic-int-default-state { 561 pins = "gpio62"; 562 function = "gpio"; 563 drive-strength = <2>; 564 bias-disable; 565 }; 566 567 reg_tsp_en_default: reg-tsp-en-default-state { 568 pins = "gpio73"; 569 function = "gpio"; 570 drive-strength = <2>; 571 bias-disable; 572 }; 573 574 reg_tsp_io_en_default: reg-tsp-io-en-default-state { 575 pins = "gpio8"; 576 function = "gpio"; 577 drive-strength = <2>; 578 bias-disable; 579 }; 580 581 sdc2_cd_default: sdc2-cd-default-state { 582 pins = "gpio38"; 583 function = "gpio"; 584 drive-strength = <2>; 585 bias-disable; 586 }; 587 588 sensor_i2c_default: sensor-i2c-default-state { 589 pins = "gpio84", "gpio85"; 590 function = "gpio"; 591 drive-strength = <2>; 592 bias-disable; 593 }; 594 595 tkey_default: tkey-default-state { 596 pins = "gpio20"; 597 function = "gpio"; 598 drive-strength = <2>; 599 bias-disable; 600 }; 601 602 tkey_en_default: tkey-en-default-state { 603 pins = "gpio56"; 604 function = "gpio"; 605 drive-strength = <2>; 606 bias-disable; 607 }; 608 609 tkey_i2c_default: tkey-i2c-default-state { 610 pins = "gpio16", "gpio17"; 611 function = "gpio"; 612 drive-strength = <2>; 613 bias-disable; 614 }; 615 616 tkey_led_en_default: tkey-led-en-default-state { 617 pins = "gpio100"; 618 function = "gpio"; 619 drive-strength = <2>; 620 bias-disable; 621 }; 622 623 tsp_int_default: tsp-int-default-state { 624 pins = "gpio13"; 625 function = "gpio"; 626 drive-strength = <2>; 627 bias-disable; 628 }; 629}; 630