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