1// SPDX-License-Identifier: GPL-2.0-only 2 3/dts-v1/; 4 5#include "msm8916-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/leds/common.h> 11 12/ { 13 model = "Alcatel OneTouch Idol 3 (4.7)"; 14 compatible = "alcatel,idol347", "qcom,msm8916"; 15 chassis-type = "handset"; 16 17 aliases { 18 mmc0 = &sdhc_1; /* eMMC */ 19 mmc1 = &sdhc_2; /* SD card */ 20 serial0 = &blsp_uart2; 21 }; 22 23 chosen { 24 stdout-path = "serial0"; 25 }; 26 27 reserved-memory { 28 /delete-node/ reserved@86680000; 29 /delete-node/ rmtfs@86700000; 30 31 rmtfs: rmtfs@86680000 { 32 compatible = "qcom,rmtfs-mem"; 33 reg = <0x0 0x86680000 0x0 0x160000>; 34 no-map; 35 36 qcom,client-id = <1>; 37 }; 38 }; 39 40 gpio-keys { 41 compatible = "gpio-keys"; 42 43 pinctrl-names = "default"; 44 pinctrl-0 = <&gpio_keys_default>; 45 46 label = "GPIO Buttons"; 47 48 button-volume-up { 49 label = "Volume Up"; 50 gpios = <&tlmm 107 GPIO_ACTIVE_LOW>; 51 linux,code = <KEY_VOLUMEUP>; 52 }; 53 }; 54 55 gpio-leds { 56 compatible = "gpio-leds"; 57 58 pinctrl-names = "default"; 59 pinctrl-0 = <&gpio_leds_default>; 60 61 led-0 { 62 gpios = <&tlmm 32 GPIO_ACTIVE_HIGH>; 63 linux,default-trigger = "torch"; 64 function = LED_FUNCTION_TORCH; 65 }; 66 }; 67 68 reg_headphones_avdd: regulator-headphones-avdd { 69 compatible = "regulator-fixed"; 70 regulator-name = "headphones_avdd"; 71 regulator-min-microvolt = <1800000>; 72 regulator-max-microvolt = <1800000>; 73 gpio = <&tlmm 121 GPIO_ACTIVE_HIGH>; 74 enable-active-high; 75 pinctrl-0 = <&headphones_avdd_default>; 76 pinctrl-names = "default"; 77 }; 78 79 usb_id: usb-id { 80 compatible = "linux,extcon-usb-gpio"; 81 id-gpios = <&tlmm 69 GPIO_ACTIVE_HIGH>; 82 pinctrl-names = "default"; 83 pinctrl-0 = <&usb_id_default>; 84 }; 85}; 86 87&blsp_i2c3 { 88 status = "okay"; 89 90 headphones: audio-codec@10 { 91 compatible = "asahi-kasei,ak4375"; 92 reg = <0x10>; 93 avdd-supply = <®_headphones_avdd>; 94 tvdd-supply = <&pm8916_l6>; 95 pdn-gpios = <&tlmm 114 GPIO_ACTIVE_HIGH>; 96 pinctrl-0 = <&headphones_pdn_default>; 97 pinctrl-names = "default"; 98 #sound-dai-cells = <0>; 99 }; 100 101 speaker_codec_top: audio-codec@34 { 102 compatible = "nxp,tfa9897"; 103 reg = <0x34>; 104 vddd-supply = <&pm8916_l6>; 105 rcv-gpios = <&tlmm 50 GPIO_ACTIVE_HIGH>; 106 pinctrl-0 = <&speaker_top_default>; 107 pinctrl-names = "default"; 108 sound-name-prefix = "Speaker Top"; 109 #sound-dai-cells = <0>; 110 }; 111 112 speaker_codec_bottom: audio-codec@36 { 113 compatible = "nxp,tfa9897"; 114 reg = <0x36>; 115 vddd-supply = <&pm8916_l6>; 116 rcv-gpios = <&tlmm 111 GPIO_ACTIVE_HIGH>; 117 pinctrl-0 = <&speaker_bottom_default>; 118 pinctrl-names = "default"; 119 sound-name-prefix = "Speaker Bottom"; 120 #sound-dai-cells = <0>; 121 }; 122}; 123 124&blsp_i2c4 { 125 status = "okay"; 126 127 touchscreen@26 { 128 compatible = "mstar,msg2638"; 129 reg = <0x26>; 130 interrupt-parent = <&tlmm>; 131 interrupts = <13 IRQ_TYPE_EDGE_FALLING>; 132 reset-gpios = <&tlmm 100 GPIO_ACTIVE_LOW>; 133 pinctrl-names = "default"; 134 pinctrl-0 = <&ts_int_reset_default>; 135 vdd-supply = <&pm8916_l17>; 136 vddio-supply = <&pm8916_l5>; 137 touchscreen-size-x = <2048>; 138 touchscreen-size-y = <2048>; 139 }; 140}; 141 142&blsp_i2c5 { 143 status = "okay"; 144 145 magnetometer@c { 146 compatible = "asahi-kasei,ak09911"; 147 reg = <0x0c>; 148 vdd-supply = <&pm8916_l17>; 149 vid-supply = <&pm8916_l6>; 150 reset-gpios = <&tlmm 8 GPIO_ACTIVE_LOW>; 151 pinctrl-names = "default"; 152 pinctrl-0 = <&mag_reset_default>; 153 mount-matrix = "0", "1", "0", 154 "-1", "0", "0", 155 "0", "0", "1"; 156 }; 157 158 accelerometer@f { 159 compatible = "kionix,kxtj21009"; 160 reg = <0x0f>; 161 vdd-supply = <&pm8916_l17>; 162 vddio-supply = <&pm8916_l6>; 163 interrupt-parent = <&tlmm>; 164 interrupts = <31 IRQ_TYPE_EDGE_RISING>; 165 pinctrl-names = "default"; 166 pinctrl-0 = <&accel_int_default>; 167 mount-matrix = "-1", "0", "0", 168 "0", "1", "0", 169 "0", "0", "-1"; 170 }; 171 172 proximity@48 { 173 compatible = "sensortek,stk3310"; 174 reg = <0x48>; 175 interrupt-parent = <&tlmm>; 176 interrupts = <12 IRQ_TYPE_EDGE_FALLING>; 177 pinctrl-names = "default"; 178 pinctrl-0 = <&proximity_int_default>; 179 }; 180 181 gyroscope@68 { 182 compatible = "bosch,bmg160"; 183 reg = <0x68>; 184 vdd-supply = <&pm8916_l17>; 185 vddio-supply = <&pm8916_l6>; 186 interrupt-parent = <&tlmm>; 187 interrupts = <97 IRQ_TYPE_EDGE_RISING>, 188 <98 IRQ_TYPE_EDGE_RISING>; 189 pinctrl-names = "default"; 190 pinctrl-0 = <&gyro_int_default>; 191 }; 192}; 193 194&blsp_i2c6 { 195 status = "okay"; 196 197 led-controller@68 { 198 compatible = "si-en,sn3190"; 199 reg = <0x68>; 200 shutdown-gpios = <&tlmm 89 GPIO_ACTIVE_HIGH>; 201 pinctrl-names = "default"; 202 pinctrl-0 = <&led_enable_default &led_shutdown_default>; 203 #address-cells = <1>; 204 #size-cells = <0>; 205 206 led@1 { 207 reg = <1>; 208 led-max-microamp = <5000>; 209 function = LED_FUNCTION_INDICATOR; 210 color = <LED_COLOR_ID_WHITE>; 211 }; 212 }; 213}; 214 215&blsp_uart2 { 216 status = "okay"; 217}; 218 219&mpss_mem { 220 reg = <0x0 0x86800000 0x0 0x5000000>; 221}; 222 223&pm8916_codec { 224 qcom,micbias1-ext-cap; 225 qcom,micbias-lvl = <2800>; 226 qcom,mbhc-vthreshold-low = <75 100 120 180 500>; 227 qcom,mbhc-vthreshold-high = <75 100 120 180 500>; 228 qcom,hphl-jack-type-normally-open; 229}; 230 231&pm8916_resin { 232 status = "okay"; 233 linux,code = <KEY_VOLUMEDOWN>; 234}; 235 236&pm8916_rpm_regulators { 237 pm8916_l17: l17 { 238 regulator-min-microvolt = <2850000>; 239 regulator-max-microvolt = <2850000>; 240 }; 241}; 242 243&pm8916_vib { 244 status = "okay"; 245}; 246 247&q6afedai { 248 dai@18 { 249 reg = <SECONDARY_MI2S_RX>; 250 qcom,sd-lines = <0>; 251 }; 252 dai@22 { 253 reg = <QUATERNARY_MI2S_RX>; 254 qcom,sd-lines = <0>; 255 }; 256}; 257 258&sdhc_1 { 259 status = "okay"; 260}; 261 262&sdhc_2 { 263 status = "okay"; 264 265 pinctrl-names = "default", "sleep"; 266 pinctrl-0 = <&sdc2_default &sdc2_cd_default>; 267 pinctrl-1 = <&sdc2_sleep &sdc2_cd_default>; 268 269 cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; 270}; 271 272&sound { 273 /* Add pin switches for speakers to allow disabling them individually */ 274 model = "alcatel-idol3"; 275 widgets = 276 "Speaker", "Speaker Top", 277 "Speaker", "Speaker Bottom"; 278 pin-switches = "Speaker Top", "Speaker Bottom"; 279 audio-routing = 280 "Speaker Top", "Speaker Top OUT", 281 "Speaker Bottom", "Speaker Bottom OUT", 282 "AMIC1", "MIC BIAS External1", 283 "AMIC2", "MIC BIAS Internal2", 284 "AMIC3", "MIC BIAS External1"; 285 286 pinctrl-0 = <&cdc_pdm_default &pri_mi2s_default &pri_mi2s_ws_default &sec_mi2s_default>; 287 pinctrl-1 = <&cdc_pdm_sleep &pri_mi2s_sleep &pri_mi2s_ws_sleep &sec_mi2s_sleep>; 288 pinctrl-names = "default", "sleep"; 289 290 sound_link_backend2: backend2-dai-link { 291 link-name = "Quaternary MI2S"; 292 293 cpu { 294 sound-dai = <&q6afedai QUATERNARY_MI2S_RX>; 295 }; 296 platform { 297 sound-dai = <&q6routing>; 298 }; 299 codec { 300 sound-dai = <&speaker_codec_top>, <&speaker_codec_bottom>; 301 }; 302 }; 303}; 304 305&sound_link_backend0 { 306 /* Primary MI2S is not used, replace with Secondary MI2S for headphones */ 307 link-name = "Secondary MI2S"; 308 309 cpu { 310 sound-dai = <&q6afedai SECONDARY_MI2S_RX>; 311 }; 312 platform { 313 sound-dai = <&q6routing>; 314 }; 315 codec { 316 sound-dai = <&headphones>; 317 }; 318}; 319 320&usb { 321 status = "okay"; 322 extcon = <&usb_id>, <&usb_id>; 323}; 324 325&usb_hs_phy { 326 extcon = <&usb_id>; 327}; 328 329&venus { 330 status = "okay"; 331}; 332 333&venus_mem { 334 status = "okay"; 335}; 336 337&wcnss { 338 status = "okay"; 339}; 340 341&wcnss_iris { 342 compatible = "qcom,wcn3620"; 343}; 344 345&wcnss_mem { 346 status = "okay"; 347}; 348 349/* Only some of the pins are used */ 350&pri_mi2s_default { 351 pins = "gpio113", "gpio115"; 352}; 353 354&pri_mi2s_sleep { 355 pins = "gpio113", "gpio115"; 356}; 357 358&tlmm { 359 accel_int_default: accel-int-default-state { 360 pins = "gpio31"; 361 function = "gpio"; 362 363 drive-strength = <2>; 364 bias-disable; 365 }; 366 367 gpio_keys_default: gpio-keys-default-state { 368 pins = "gpio107"; 369 function = "gpio"; 370 371 drive-strength = <2>; 372 bias-pull-up; 373 }; 374 375 gpio_leds_default: gpio-leds-default-state { 376 pins = "gpio32"; 377 function = "gpio"; 378 379 drive-strength = <2>; 380 bias-disable; 381 }; 382 383 gyro_int_default: gyro-int-default-state { 384 pins = "gpio97", "gpio98"; 385 function = "gpio"; 386 387 drive-strength = <2>; 388 bias-disable; 389 }; 390 391 headphones_avdd_default: headphones-avdd-default-state { 392 pins = "gpio121"; 393 function = "gpio"; 394 drive-strength = <2>; 395 bias-disable; 396 }; 397 398 headphones_pdn_default: headphones-pdn-default-state { 399 pins = "gpio114"; 400 function = "gpio"; 401 drive-strength = <2>; 402 bias-disable; 403 }; 404 405 /* 406 * The OEM wired an additional GPIO to be asserted so that 407 * the si-en,sn3190 LED IC works. Since this GPIO is not 408 * part of the IC datasheet nor supported by the driver, 409 * force it asserted here. 410 */ 411 led_enable_default: led-enable-default-state { 412 pins = "gpio102"; 413 function = "gpio"; 414 415 drive-strength = <2>; 416 bias-disable; 417 output-high; 418 }; 419 420 led_shutdown_default: led-shutdown-default-state { 421 pins = "gpio89"; 422 function = "gpio"; 423 424 drive-strength = <2>; 425 bias-disable; 426 }; 427 428 mag_reset_default: mag-reset-default-state { 429 pins = "gpio8"; 430 function = "gpio"; 431 432 drive-strength = <2>; 433 bias-disable; 434 }; 435 436 proximity_int_default: proximity-int-default-state { 437 pins = "gpio12"; 438 function = "gpio"; 439 440 drive-strength = <6>; 441 bias-pull-up; 442 }; 443 444 sdc2_cd_default: sdc2-cd-default-state { 445 pins = "gpio38"; 446 function = "gpio"; 447 drive-strength = <2>; 448 bias-disable; 449 }; 450 451 speaker_bottom_default: speaker-bottom-default-state { 452 pins = "gpio111"; 453 function = "gpio"; 454 drive-strength = <2>; 455 bias-disable; 456 }; 457 458 speaker_top_default: speaker-top-default-state { 459 pins = "gpio50"; 460 function = "gpio"; 461 drive-strength = <2>; 462 bias-disable; 463 }; 464 465 ts_int_reset_default: ts-int-reset-default-state { 466 pins = "gpio13", "gpio100"; 467 function = "gpio"; 468 469 drive-strength = <2>; 470 bias-disable; 471 }; 472 473 usb_id_default: usb-id-default-state { 474 pins = "gpio69"; 475 function = "gpio"; 476 477 drive-strength = <8>; 478 bias-pull-up; 479 }; 480}; 481