1// SPDX-License-Identifier: BSD-3-Clause 2/* 3 * Copyright (c) 2025, André Apitzsch <git@apitzsch.eu> 4 */ 5 6/dts-v1/; 7 8#include <dt-bindings/leds/common.h> 9 10#include "msm8976.dtsi" 11#include "pm8004.dtsi" 12#include "pm8950.dtsi" 13 14/ { 15 model = "BQ Aquaris X5 Plus (Longcheer L9360)"; 16 compatible = "longcheer,l9360", "qcom,msm8976"; 17 chassis-type = "handset"; 18 19 aliases { 20 mmc0 = &sdhc_1; /* SDC1 eMMC slot */ 21 mmc1 = &sdhc_2; /* SDC2 SD card slot */ 22 }; 23 24 chosen { 25 #address-cells = <2>; 26 #size-cells = <2>; 27 ranges; 28 29 framebuffer0: framebuffer@83200000 { 30 compatible = "simple-framebuffer"; 31 reg = <0x0 0x83200000 0x0 (1080 * 1920 * 3)>; 32 width = <1080>; 33 height = <1920>; 34 stride = <(1080 * 3)>; 35 format = "r8g8b8"; 36 37 power-domains = <&gcc MDSS_GDSC>; 38 39 clocks = <&gcc GCC_MDSS_AHB_CLK>, 40 <&gcc GCC_MDSS_AXI_CLK>, 41 <&gcc GCC_MDSS_VSYNC_CLK>, 42 <&gcc GCC_MDSS_MDP_CLK>, 43 <&gcc GCC_MDSS_BYTE0_CLK>, 44 <&gcc GCC_MDSS_PCLK0_CLK>, 45 <&gcc GCC_MDSS_ESC0_CLK>; 46 }; 47 }; 48 49 gpio-keys { 50 compatible = "gpio-keys"; 51 52 pinctrl-0 = <&hall_sensor_default>, <&volume_up_default>; 53 pinctrl-names = "default"; 54 55 event-hall-sensor { 56 label = "Hall Effect Sensor"; 57 gpios = <&tlmm 107 GPIO_ACTIVE_HIGH>; 58 linux,input-type = <EV_SW>; 59 linux,code = <SW_LID>; 60 linux,can-disable; 61 wakeup-source; 62 }; 63 64 key-volume-up { 65 label = "Volume Up"; 66 gpios = <&tlmm 113 GPIO_ACTIVE_LOW>; 67 linux,code = <KEY_VOLUMEUP>; 68 }; 69 }; 70 71 leds { 72 compatible = "gpio-leds"; 73 74 led-0 { 75 gpios = <&tlmm 101 GPIO_ACTIVE_HIGH>; 76 color = <LED_COLOR_ID_WHITE>; 77 default-state = "off"; 78 function = LED_FUNCTION_KBD_BACKLIGHT; 79 80 pinctrl-0 = <&button_backlight_default>; 81 pinctrl-names = "default"; 82 }; 83 }; 84 85 reg_ts_vdd: regulator-vdd-ts { 86 compatible = "regulator-fixed"; 87 regulator-name = "regulator-vdd-ts"; 88 89 gpio = <&tlmm 33 GPIO_ACTIVE_HIGH>; 90 enable-active-high; 91 }; 92 93 reserved-memory { 94 framebuffer@83000000 { 95 reg = <0x0 0x83000000 0x0 0x2800000>; 96 no-map; 97 }; 98 }; 99 100 vph_pwr: regulator-vph-pwr { 101 compatible = "regulator-fixed"; 102 regulator-name = "vph-pwr"; 103 regulator-always-on; 104 regulator-boot-on; 105 }; 106}; 107 108&blsp1_i2c2 { 109 status = "okay"; 110 111 led-controller@30 { 112 compatible = "kinetic,ktd2026"; 113 reg = <0x30>; 114 #address-cells = <1>; 115 #size-cells = <0>; 116 117 multi-led { 118 color = <LED_COLOR_ID_RGB>; 119 function = LED_FUNCTION_STATUS; 120 121 #address-cells = <1>; 122 #size-cells = <0>; 123 124 led@0 { 125 reg = <0>; 126 color = <LED_COLOR_ID_RED>; 127 }; 128 129 led@1 { 130 reg = <1>; 131 color = <LED_COLOR_ID_GREEN>; 132 }; 133 134 led@2 { 135 reg = <2>; 136 color = <LED_COLOR_ID_BLUE>; 137 }; 138 }; 139 }; 140}; 141 142&blsp1_i2c4 { 143 status = "okay"; 144 145 nfc@28 { 146 compatible = "nxp,pn547", "nxp,nxp-nci-i2c"; 147 reg = <0x28>; 148 149 interrupts-extended = <&tlmm 140 IRQ_TYPE_EDGE_RISING>; 150 151 enable-gpios = <&tlmm 122 GPIO_ACTIVE_HIGH>; 152 firmware-gpios = <&tlmm 109 GPIO_ACTIVE_HIGH>; 153 154 pinctrl-0 = <&nfc_default>; 155 pinctrl-1 = <&nfc_sleep>; 156 pinctrl-names = "default", "sleep"; 157 }; 158}; 159 160&blsp2_i2c2 { 161 status = "okay"; 162 163 touchscreen@20 { 164 reg = <0x20>; 165 compatible = "syna,rmi4-i2c"; 166 167 interrupts-extended = <&tlmm 65 IRQ_TYPE_EDGE_FALLING>; 168 169 pinctrl-0 = <&ts_int_default>, <&ts_reset_default>; 170 pinctrl-1 = <&ts_int_sleep>, <&ts_reset_sleep>; 171 pinctrl-names = "default", "sleep"; 172 173 vdd-supply = <&pm8950_l6>; 174 vio-supply = <®_ts_vdd>; 175 176 reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>; 177 178 syna,reset-delay-ms = <200>; 179 syna,startup-delay-ms = <200>; 180 181 #address-cells = <1>; 182 #size-cells = <0>; 183 184 rmi4-f01@1 { 185 reg = <0x1>; 186 syna,nosleep-mode = <1>; 187 }; 188 189 rmi4-f12@12 { 190 reg = <0x12>; 191 syna,sensor-type = <1>; 192 }; 193 194 rmi4-f1a@1a { 195 reg = <0x1a>; 196 /* Keys listed from right to left */ 197 linux,keycodes = <KEY_APPSELECT KEY_HOMEPAGE KEY_BACK>; 198 }; 199 }; 200}; 201 202&blsp2_uart2 { 203 status = "okay"; 204}; 205 206&gcc { 207 vdd_gfx-supply = <&pm8004_s5>; 208}; 209 210&pm8004_spmi_regulators { 211 vdd_s2-supply = <&vph_pwr>; 212 vdd_s5-supply = <&vph_pwr>; 213 214 /* Cluster 1 supply */ 215 pm8004_s2: s2 { 216 /* regulator-min-microvolt = <500000>; */ 217 /* Set .95V to prevent unstabilities until CPR for this SoC is done */ 218 regulator-min-microvolt = <950000>; 219 regulator-max-microvolt = <1165000>; 220 regulator-name = "vdd_apc1"; 221 /* Set always on until the CPU PLL is done */ 222 regulator-always-on; 223 regulator-boot-on; 224 }; 225 226 pm8004_s5: s5 { 227 regulator-min-microvolt = <950000>; 228 regulator-max-microvolt = <1165000>; 229 regulator-enable-ramp-delay = <500>; 230 regulator-name = "vdd_gfx"; 231 /* Hack this on until the gpu driver is ready for it */ 232 regulator-always-on; 233 }; 234}; 235 236&pm8950_resin { 237 linux,code = <KEY_VOLUMEDOWN>; 238 status = "okay"; 239}; 240 241&pm8950_spmi_regulators { 242 vdd_s5-supply = <&vph_pwr>; 243 244 /* Cluster 0 supply */ 245 pm8950_spmi_s5: s5 { 246 /* Set .95V to prevent unstabilities until CPR for this SoC is done */ 247 /* regulator-min-microvolt = <500000>; */ 248 regulator-min-microvolt = <950000>; 249 regulator-max-microvolt = <1165000>; 250 regulator-name = "vdd_apc0"; 251 /* Set always on until the CPU PLL is done */ 252 regulator-always-on; 253 regulator-boot-on; 254 }; 255}; 256 257&rpm_requests { 258 pm8950_regulators: regulators { 259 compatible = "qcom,rpm-pm8950-regulators"; 260 261 vdd_s1-supply = <&vph_pwr>; 262 vdd_s2-supply = <&vph_pwr>; 263 vdd_s3-supply = <&vph_pwr>; 264 vdd_s4-supply = <&vph_pwr>; 265 vdd_s6-supply = <&vph_pwr>; 266 vdd_l1_l19-supply = <&pm8950_s3>; 267 vdd_l2_l23-supply = <&pm8950_s3>; 268 vdd_l3-supply = <&pm8950_s3>; 269 vdd_l5_l6_l7_l16-supply = <&pm8950_s4>; 270 vdd_l8_l11_l12_l17_l22-supply = <&vph_pwr>; 271 272 pm8950_s1: s1 { 273 regulator-min-microvolt = <1000000>; 274 regulator-max-microvolt = <1162500>; 275 }; 276 277 pm8950_s3: s3 { 278 regulator-min-microvolt = <1325000>; 279 regulator-max-microvolt = <1325000>; 280 }; 281 282 pm8950_s4: s4 { 283 regulator-min-microvolt = <2050000>; 284 regulator-max-microvolt = <2050000>; 285 }; 286 287 pm8950_l1: l1 { 288 regulator-min-microvolt = <1200000>; 289 regulator-max-microvolt = <1200000>; 290 }; 291 292 pm8950_l2: l2 { 293 regulator-min-microvolt = <1200000>; 294 regulator-max-microvolt = <1200000>; 295 }; 296 297 pm8950_l3: l3 { 298 regulator-min-microvolt = <1000000>; 299 regulator-max-microvolt = <1100000>; 300 }; 301 302 pm8950_l5: l5 { 303 regulator-min-microvolt = <1800000>; 304 regulator-max-microvolt = <1800000>; 305 }; 306 307 pm8950_l6: l6 { 308 regulator-min-microvolt = <1800000>; 309 regulator-max-microvolt = <1800000>; 310 }; 311 312 pm8950_l7: l7 { 313 regulator-min-microvolt = <1800000>; 314 regulator-max-microvolt = <1800000>; 315 }; 316 317 pm8950_l8: l8 { 318 regulator-min-microvolt = <2900000>; 319 regulator-max-microvolt = <2900000>; 320 }; 321 322 pm8950_l9: l9 { 323 regulator-min-microvolt = <3000000>; 324 regulator-max-microvolt = <3300000>; 325 }; 326 327 pm8950_l10: l10 { 328 regulator-min-microvolt = <2800000>; 329 regulator-max-microvolt = <2800000>; 330 }; 331 332 pm8950_l11: l11 { 333 regulator-min-microvolt = <2950000>; 334 regulator-max-microvolt = <2950000>; 335 }; 336 337 pm8950_l12: l12 { 338 regulator-min-microvolt = <1800000>; 339 regulator-max-microvolt = <2950000>; 340 }; 341 342 pm8950_l13: l13 { 343 regulator-min-microvolt = <3075000>; 344 regulator-max-microvolt = <3075000>; 345 }; 346 347 pm8950_l14: l14 { 348 regulator-min-microvolt = <1800000>; 349 regulator-max-microvolt = <3300000>; 350 }; 351 352 pm8950_l15: l15 { 353 regulator-min-microvolt = <1800000>; 354 regulator-max-microvolt = <3300000>; 355 }; 356 357 pm8950_l16: l16 { 358 regulator-min-microvolt = <1800000>; 359 regulator-max-microvolt = <1800000>; 360 }; 361 362 pm8950_l17: l17 { 363 regulator-min-microvolt = <2850000>; 364 regulator-max-microvolt = <2850000>; 365 }; 366 367 pm8950_l19: l19 { 368 regulator-min-microvolt = <1200000>; 369 regulator-max-microvolt = <1350000>; 370 }; 371 372 pm8950_l22: l22 { 373 regulator-min-microvolt = <2800000>; 374 regulator-max-microvolt = <2800000>; 375 }; 376 377 pm8950_l23: l23 { 378 regulator-min-microvolt = <1200000>; 379 regulator-max-microvolt = <1200000>; 380 }; 381 }; 382}; 383 384&sdhc_1 { 385 bus-width = <8>; 386 non-removable; 387 vmmc-supply = <&pm8950_l8>; 388 vqmmc-supply = <&pm8950_l5>; 389 status = "okay"; 390}; 391 392&sdhc_2 { 393 bus-width = <4>; 394 cd-gpios = <&tlmm 100 GPIO_ACTIVE_LOW>; 395 vmmc-supply = <&pm8950_l11>; 396 vqmmc-supply = <&pm8950_l12>; 397 398 pinctrl-0 = <&sdc2_default>, <&sdc2_cd_default>; 399 pinctrl-1 = <&sdc2_sleep>, <&sdc2_cd_sleep>; 400 pinctrl-names = "default", "sleep"; 401 402 status = "okay"; 403}; 404 405&tlmm { 406 gpio-reserved-ranges = <0 4>; 407 408 button_backlight_default: button-backlight-default-state { 409 pins = "gpio101"; 410 function = "gpio"; 411 drive-strength = <2>; 412 bias-disable; 413 }; 414 415 hall_sensor_default: hall-sensor-default-state { 416 pins = "gpio107"; 417 function = "gpio"; 418 drive-strength = <6>; 419 bias-pull-up; 420 }; 421 422 nfc_default: nfc-default-state { 423 pins = "gpio122", "gpio140"; 424 function = "gpio"; 425 drive-strength = <6>; 426 bias-pull-up; 427 }; 428 429 nfc_sleep: nfc-sleep-state { 430 int-pins { 431 pins = "gpio140"; 432 function = "gpio"; 433 drive-strength = <6>; 434 bias-pull-up; 435 }; 436 ven-pins { 437 pins = "gpio122"; 438 function = "gpio"; 439 drive-strength = <6>; 440 bias-disable; 441 }; 442 }; 443 444 sdc2_cd_default: sdc2-cd-default-state { 445 pins = "gpio100"; 446 function = "gpio"; 447 drive-strength = <2>; 448 bias-pull-up; 449 }; 450 451 sdc2_cd_sleep: sdc2-cd-sleep-state { 452 pins = "gpio100"; 453 function = "gpio"; 454 drive-strength = <2>; 455 bias-disable; 456 }; 457 458 ts_int_default: ts-int-state { 459 pins = "gpio65"; 460 function = "gpio"; 461 drive-strength = <2>; 462 bias-pull-down; 463 }; 464 465 ts_int_sleep: ts-int-state { 466 pins = "gpio65"; 467 function = "gpio"; 468 drive-strength = <2>; 469 bias-pull-up; 470 }; 471 472 ts_reset_default: ts-reset-state { 473 pins = "gpio64"; 474 function = "gpio"; 475 drive-strength = <8>; 476 bias-pull-up; 477 }; 478 479 ts_reset_sleep: ts-sleep-state { 480 pins = "gpio64"; 481 function = "gpio"; 482 drive-strength = <2>; 483 bias-pull-down; 484 }; 485 486 volume_up_default: volume-up-default-state { 487 pins = "gpio113"; 488 function = "gpio"; 489 drive-strength = <2>; 490 bias-pull-up; 491 }; 492}; 493 494&xo_board { 495 clock-frequency = <19200000>; 496}; 497