1// SPDX-License-Identifier: BSD-3-Clause 2/* 3 * Copyright (c) 2020, Konrad Dybcio <konrad.dybcio@somainline.org> 4 */ 5 6#include "msm8994.dtsi" 7#include "pm8994.dtsi" 8#include "pmi8994.dtsi" 9#include <dt-bindings/gpio/gpio.h> 10#include <dt-bindings/input/gpio-keys.h> 11 12/ { 13 /* required for bootloader to select correct board */ 14 15 /* 16 * We support MSM8994 v2 (0x20000) and v2.1 (0x20001). 17 * The V1 chip (0x0 and 0x10000) is significantly different 18 * and requires driver-side changes (including CPR, be warned!!). 19 * Besides that, it's very rare. 20 */ 21 qcom,msm-id = <207 0x20000>, <207 0x20001>; 22 /* We only use pm8994+pmi8994. */ 23 qcom,pmic-id = <0x10009 0x1000a 0x00 0x00>; 24 /* This property is shared across all kitakami devices. */ 25 qcom,board-id = <8 0>; 26 27 /* Kitakami firmware doesn't support PSCI */ 28 /delete-node/ psci; 29 30 gpio-keys { 31 compatible = "gpio-keys"; 32 autorepeat; 33 34 button-0 { 35 label = "Volume Down"; 36 gpios = <&pm8994_gpios 2 GPIO_ACTIVE_LOW>; 37 linux,input-type = <1>; 38 linux,code = <KEY_VOLUMEDOWN>; 39 wakeup-source; 40 debounce-interval = <15>; 41 }; 42 43 button-1 { 44 label = "Volume Up"; 45 gpios = <&pm8994_gpios 3 GPIO_ACTIVE_LOW>; 46 linux,input-type = <1>; 47 linux,code = <KEY_VOLUMEUP>; 48 wakeup-source; 49 debounce-interval = <15>; 50 }; 51 52 button-2 { 53 label = "Camera Snapshot"; 54 gpios = <&pm8994_gpios 4 GPIO_ACTIVE_LOW>; 55 linux,input-type = <1>; 56 linux,code = <KEY_CAMERA>; 57 wakeup-source; 58 debounce-interval = <15>; 59 }; 60 61 button-3 { 62 label = "Camera Focus"; 63 gpios = <&pm8994_gpios 5 GPIO_ACTIVE_LOW>; 64 linux,input-type = <1>; 65 linux,code = <KEY_VOLUMEUP>; 66 wakeup-source; 67 debounce-interval = <15>; 68 }; 69 }; 70 71 reserved-memory { 72 /* This is for getting crash logs using Android downstream kernels */ 73 ramoops@1fe00000 { 74 compatible = "ramoops"; 75 reg = <0 0x1fe00000 0 0x200000>; 76 console-size = <0x100000>; 77 record-size = <0x10000>; 78 ftrace-size = <0x10000>; 79 pmsg-size = <0x80000>; 80 }; 81 82 fb_region: fb_region@40000000 { 83 reg = <0 0x40000000 0 0x1000000>; 84 no-map; 85 }; 86 87 tzapp: memory@c7800000 { 88 reg = <0 0xc7800000 0 0x1900000>; 89 no-map; 90 }; 91 }; 92}; 93 94&blsp1_spi1 { 95 status = "okay"; 96 97 /* FPC fingerprint reader */ 98}; 99 100/* I2C1 is disabled on this board */ 101 102&blsp1_i2c2 { 103 status = "okay"; 104 clock-frequency = <355000>; 105 106 /* NXP PN547 NFC */ 107}; 108 109&blsp1_i2c6 { 110 status = "okay"; 111 clock-frequency = <355000>; 112 113 touchscreen: rmi4-i2c-dev@2c { 114 compatible = "syna,rmi4-i2c"; 115 reg = <0x2c>; 116 #address-cells = <1>; 117 #size-cells = <0>; 118 119 interrupt-parent = <&tlmm>; 120 interrupts = <42 IRQ_TYPE_EDGE_FALLING>; 121 122 pinctrl-names = "default"; 123 pinctrl-0 = <&ts_int_active &ts_reset_active>; 124 125 vdd-supply = <&pm8994_l22>; 126 vio-supply = <&pm8994_s4>; 127 128 syna,reset-delay-ms = <220>; 129 syna,startup-delay-ms = <220>; 130 131 rmi4-f01@1 { 132 reg = <0x01>; 133 syna,nosleep-mode = <1>; 134 }; 135 136 rmi4-f11@11 { 137 reg = <0x11>; 138 syna,sensor-type = <1>; 139 }; 140 }; 141}; 142 143&blsp1_uart2 { 144 status = "okay"; 145}; 146 147&blsp2_i2c5 { 148 status = "okay"; 149 clock-frequency = <355000>; 150 151 /* sii8620 HDMI/MHL bridge */ 152}; 153 154&blsp2_uart2 { 155 status = "okay"; 156}; 157 158/* 159 * Kitakami bootloader only turns cont_splash on when it detects 160 * specific downstream MDSS/backlight nodes in the active DTB. 161 * One way to use that framebuffer is to load a secondary instance of 162 * LK with the downstream DTB appended and then, only from there, load 163 * mainline Linux. 164 */ 165&cont_splash_mem { 166 reg = <0 0x03401000 0 0x2200000>; 167}; 168 169&pmi8994_spmi_regulators { 170 /* 171 * Yeah, this one *is* managed by RPMPD, but also needs 172 * to be hacked up as a-o due to the GPU device only accepting a single 173 * power domain.. which still isn't enough and forces us to bind 174 * OXILI_CX and OXILI_GX together! 175 */ 176 vdd_gfx: s2@1700 { 177 reg = <0x1700 0x100>; 178 regulator-name = "VDD_GFX"; 179 regulator-min-microvolt = <980000>; 180 regulator-max-microvolt = <980000>; 181 182 /* hack until we rig up the gpu consumer */ 183 regulator-always-on; 184 }; 185}; 186 187&rpm_requests { 188 /* PMI8994 should probe first, because pmi8994_bby supplies some of PM8994's regulators */ 189 pmi8994_regulators: regulators-0 { 190 compatible = "qcom,rpm-pmi8994-regulators"; 191 192 vdd_s1-supply = <&vph_pwr>; 193 vdd_bst_byp-supply = <&vph_pwr>; 194 195 pmi8994_s1: s1 { 196 regulator-min-microvolt = <1025000>; 197 regulator-max-microvolt = <1025000>; 198 }; 199 200 /* S2 & S3 - VDD_GFX */ 201 202 pmi8994_bby: boost-bypass { 203 regulator-min-microvolt = <3150000>; 204 regulator-max-microvolt = <3600000>; 205 }; 206 }; 207 208 pm8994_regulators: regulators-1 { 209 compatible = "qcom,rpm-pm8994-regulators"; 210 211 vdd_s3-supply = <&vph_pwr>; 212 vdd_s4-supply = <&vph_pwr>; 213 vdd_s5-supply = <&vph_pwr>; 214 vdd_s6-supply = <&vph_pwr>; 215 vdd_s7-supply = <&vph_pwr>; 216 vdd_l1-supply = <&pmi8994_s1>; 217 vdd_l2_l26_l28-supply = <&pm8994_s3>; 218 vdd_l3_l11-supply = <&pm8994_s3>; 219 vdd_l4_l27_l31-supply = <&pm8994_s3>; 220 vdd_l6_l12_l32-supply = <&pm8994_s5>; 221 vdd_l8_l16_l30-supply = <&vph_pwr>; 222 vdd_l9_l10_l18_l22-supply = <&pmi8994_bby>; 223 vdd_l13_l19_l23_l24-supply = <&pmi8994_bby>; 224 vdd_l14_l15-supply = <&pm8994_s5>; 225 vdd_l17_l29-supply = <&pmi8994_bby>; 226 vdd_l20_l21-supply = <&pmi8994_bby>; 227 vdd_l25-supply = <&pm8994_s3>; 228 vdd_lvs1_2-supply = <&pm8994_s4>; 229 230 /* S1, S2, S6 and S12 are managed by RPMPD */ 231 232 pm8994_s3: s3 { 233 regulator-min-microvolt = <1300000>; 234 regulator-max-microvolt = <1300000>; 235 }; 236 237 pm8994_s4: s4 { 238 regulator-min-microvolt = <1800000>; 239 regulator-max-microvolt = <1800000>; 240 regulator-system-load = <325000>; 241 regulator-allow-set-load; 242 regulator-always-on; 243 }; 244 245 pm8994_s5: s5 { 246 regulator-min-microvolt = <2150000>; 247 regulator-max-microvolt = <2150000>; 248 }; 249 250 pm8994_s7: s7 { 251 regulator-min-microvolt = <1000000>; 252 regulator-max-microvolt = <1000000>; 253 }; 254 255 /* 256 * S8 - SPMI-managed VDD_APC0 257 * S9, S10 and S11 (the main one) - SPMI-managed VDD_APC1 258 */ 259 260 pm8994_l1: l1 { 261 regulator-min-microvolt = <1000000>; 262 regulator-max-microvolt = <1000000>; 263 }; 264 265 pm8994_l2: l2 { 266 regulator-min-microvolt = <1250000>; 267 regulator-max-microvolt = <1250000>; 268 regulator-system-load = <10000>; 269 regulator-allow-set-load; 270 }; 271 272 pm8994_l3: l3 { 273 regulator-min-microvolt = <1100000>; 274 regulator-max-microvolt = <1100000>; 275 regulator-boot-on; 276 }; 277 278 pm8994_l4: l4 { 279 regulator-min-microvolt = <1225000>; 280 regulator-max-microvolt = <1225000>; 281 }; 282 283 /* L5 is inaccessible from RPM */ 284 285 pm8994_l6: l6 { 286 regulator-min-microvolt = <1800000>; 287 regulator-max-microvolt = <1800000>; 288 }; 289 290 /* L7 is inaccessible from RPM */ 291 292 pm8994_l8: l8 { 293 regulator-min-microvolt = <1800000>; 294 regulator-max-microvolt = <1800000>; 295 }; 296 297 pm8994_l9: l9 { 298 regulator-min-microvolt = <1800000>; 299 regulator-max-microvolt = <1800000>; 300 }; 301 302 pm8994_l10: l10 { 303 regulator-min-microvolt = <1800000>; 304 regulator-max-microvolt = <1800000>; 305 }; 306 307 pm8994_l11: l11 { 308 regulator-min-microvolt = <1200000>; 309 regulator-max-microvolt = <1200000>; 310 }; 311 312 pm8994_l12: l12 { 313 regulator-min-microvolt = <1800000>; 314 regulator-max-microvolt = <1800000>; 315 regulator-system-load = <10000>; 316 regulator-allow-set-load; 317 }; 318 319 pm8994_l13: l13 { 320 regulator-min-microvolt = <1800000>; 321 regulator-max-microvolt = <2950000>; 322 }; 323 324 pm8994_l14: l14 { 325 regulator-min-microvolt = <1800000>; 326 regulator-max-microvolt = <1800000>; 327 regulator-system-load = <10000>; 328 regulator-allow-set-load; 329 regulator-boot-on; 330 }; 331 332 pm8994_l15: l15 { 333 regulator-min-microvolt = <1800000>; 334 regulator-max-microvolt = <1800000>; 335 }; 336 337 pm8994_l16: l16 { 338 regulator-min-microvolt = <2700000>; 339 regulator-max-microvolt = <2700000>; 340 }; 341 342 pm8994_l17: l17 { 343 regulator-min-microvolt = <2200000>; 344 regulator-max-microvolt = <2200000>; 345 regulator-boot-on; 346 }; 347 348 pm8994_l18: l18 { 349 regulator-min-microvolt = <2850000>; 350 regulator-max-microvolt = <2850000>; 351 regulator-always-on; 352 regulator-boot-on; 353 }; 354 355 pm8994_l19: l19 { 356 regulator-min-microvolt = <2850000>; 357 regulator-max-microvolt = <2850000>; 358 regulator-boot-on; 359 }; 360 361 pm8994_l20: l20 { 362 regulator-min-microvolt = <2950000>; 363 regulator-max-microvolt = <2950000>; 364 regulator-system-load = <570000>; 365 regulator-allow-set-load; 366 }; 367 368 pm8994_l21: l21 { 369 regulator-min-microvolt = <2950000>; 370 regulator-max-microvolt = <2950000>; 371 regulator-system-load = <800000>; 372 regulator-allow-set-load; 373 }; 374 375 pm8994_l22: l22 { 376 regulator-min-microvolt = <3000000>; 377 regulator-max-microvolt = <3000000>; 378 regulator-boot-on; 379 }; 380 381 pm8994_l23: l23 { 382 regulator-min-microvolt = <2800000>; 383 regulator-max-microvolt = <2800000>; 384 regulator-always-on; 385 regulator-boot-on; 386 }; 387 388 pm8994_l24: l24 { 389 regulator-min-microvolt = <3075000>; 390 regulator-max-microvolt = <3150000>; 391 }; 392 393 pm8994_l25: l25 { 394 regulator-min-microvolt = <1000000>; 395 regulator-max-microvolt = <1000000>; 396 regulator-boot-on; 397 }; 398 399 pm8994_l26: l26 { 400 regulator-min-microvolt = <987500>; 401 regulator-max-microvolt = <987500>; 402 }; 403 404 pm8994_l27: l27 { 405 regulator-min-microvolt = <1200000>; 406 regulator-max-microvolt = <1200000>; 407 regulator-boot-on; 408 }; 409 410 pm8994_l28: l28 { 411 regulator-min-microvolt = <1000000>; 412 regulator-max-microvolt = <1000000>; 413 regulator-system-load = <10000>; 414 regulator-allow-set-load; 415 }; 416 417 pm8994_l29: l29 { 418 regulator-min-microvolt = <2700000>; 419 regulator-max-microvolt = <2700000>; 420 regulator-boot-on; 421 }; 422 423 pm8994_l30: l30 { 424 regulator-min-microvolt = <1800000>; 425 regulator-max-microvolt = <1800000>; 426 regulator-boot-on; 427 }; 428 429 pm8994_l31: l31 { 430 regulator-min-microvolt = <1200000>; 431 regulator-max-microvolt = <1200000>; 432 regulator-system-load = <10000>; 433 regulator-allow-set-load; 434 }; 435 436 pm8994_l32: l32 { 437 regulator-min-microvolt = <1800000>; 438 regulator-max-microvolt = <1800000>; 439 }; 440 441 pm8994_lvs1: lvs1 { 442 regulator-boot-on; 443 }; 444 pm8994_lvs2: lvs2 { 445 regulator-boot-on; 446 }; 447 }; 448}; 449 450&sdhc1 { 451 /* 452 * There is an issue with the eMMC causing permanent 453 * damage to the card if a quirk isn't addressed. 454 * Until it's fixed, disable the MMC so as not to brick 455 * devices. 456 */ 457 status = "disabled"; 458 459 /* 460 * Downstream pushes 2.95V to the sdhci device, 461 * but upstream driver REALLY wants to make vmmc 1.8v 462 * cause of the hs400-1_8v mode. MMC works fine without 463 * that regulator, so let's not use it for now. 464 * vqmmc is also disabled cause driver stll complains. 465 * 466 * vmmc-supply = <&pm8994_l20>; 467 * vqmmc-supply = <&pm8994_s4>; 468 */ 469}; 470 471&sdhc2 { 472 status = "okay"; 473 474 cd-gpios = <&tlmm 100 GPIO_ACTIVE_HIGH>; 475 vmmc-supply = <&pm8994_l21>; 476 vqmmc-supply = <&pm8994_l13>; 477}; 478 479&tlmm { 480 ts_int_active: ts-int-active-state { 481 pins = "gpio42"; 482 function = "gpio"; 483 drive-strength = <2>; 484 bias-disable; 485 input-enable; 486 }; 487 488 ts_reset_active: ts-reset-active-state { 489 pins = "gpio109"; 490 function = "gpio"; 491 drive-strength = <2>; 492 bias-disable; 493 output-low; 494 }; 495}; 496