1// SPDX-License-Identifier: GPL-2.0-only 2// Copyright (C) 2019 Stephan Gerhold 3 4/dts-v1/; 5 6#include "msm8916-pm8916.dtsi" 7#include <dt-bindings/gpio/gpio.h> 8#include <dt-bindings/input/input.h> 9#include <dt-bindings/interrupt-controller/irq.h> 10 11/* 12 * NOTE: The original firmware from Samsung can only boot ARM32 kernels. 13 * Unfortunately, the firmware is signed and cannot be replaced easily. 14 * There seems to be no way to boot ARM64 kernels on this device at the moment, 15 * even though the hardware would support it. 16 * 17 * However, it is possible to use this device tree by compiling an ARM32 kernel 18 * instead. For clarity and build testing this device tree is maintained next 19 * to the other MSM8916 device trees. However, it is actually used through 20 * arch/arm/boot/dts/qcom-msm8916-samsung-serranove.dts 21 */ 22 23/ { 24 model = "Samsung Galaxy S4 Mini Value Edition"; 25 compatible = "samsung,serranove", "qcom,msm8916"; 26 chassis-type = "handset"; 27 28 aliases { 29 serial0 = &blsp1_uart2; 30 }; 31 32 chosen { 33 stdout-path = "serial0"; 34 }; 35 36 reserved-memory { 37 /* Additional memory used by Samsung firmware modifications */ 38 tz-apps@85500000 { 39 reg = <0x0 0x85500000 0x0 0xb00000>; 40 no-map; 41 }; 42 }; 43 44 gpio-keys { 45 compatible = "gpio-keys"; 46 47 pinctrl-names = "default"; 48 pinctrl-0 = <&gpio_keys_default>; 49 50 label = "GPIO Buttons"; 51 52 button-volume-up { 53 label = "Volume Up"; 54 gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>; 55 linux,code = <KEY_VOLUMEUP>; 56 }; 57 58 button-home { 59 label = "Home"; 60 gpios = <&msmgpio 109 GPIO_ACTIVE_LOW>; 61 linux,code = <KEY_HOMEPAGE>; 62 }; 63 }; 64 65 gpio-hall-sensor { 66 compatible = "gpio-keys"; 67 68 pinctrl-names = "default"; 69 pinctrl-0 = <&gpio_hall_sensor_default>; 70 71 label = "GPIO Hall Effect Sensor"; 72 73 event-hall-sensor { 74 label = "Hall Effect Sensor"; 75 gpios = <&msmgpio 52 GPIO_ACTIVE_LOW>; 76 linux,input-type = <EV_SW>; 77 linux,code = <SW_LID>; 78 linux,can-disable; 79 }; 80 }; 81 82 reg_vdd_tsp: regulator-vdd-tsp { 83 compatible = "regulator-fixed"; 84 regulator-name = "vdd_tsp"; 85 regulator-min-microvolt = <3300000>; 86 regulator-max-microvolt = <3300000>; 87 88 gpio = <&msmgpio 73 GPIO_ACTIVE_HIGH>; 89 enable-active-high; 90 91 pinctrl-names = "default"; 92 pinctrl-0 = <&tsp_en_default>; 93 }; 94 95 reg_touch_key: regulator-touch-key { 96 compatible = "regulator-fixed"; 97 regulator-name = "touch_key"; 98 regulator-min-microvolt = <2800000>; 99 regulator-max-microvolt = <2800000>; 100 101 gpio = <&msmgpio 86 GPIO_ACTIVE_HIGH>; 102 enable-active-high; 103 104 pinctrl-names = "default"; 105 pinctrl-0 = <&tkey_en_default>; 106 }; 107 108 reg_key_led: regulator-key-led { 109 compatible = "regulator-fixed"; 110 regulator-name = "key_led"; 111 regulator-min-microvolt = <3300000>; 112 regulator-max-microvolt = <3300000>; 113 114 gpio = <&msmgpio 60 GPIO_ACTIVE_HIGH>; 115 enable-active-high; 116 117 pinctrl-names = "default"; 118 pinctrl-0 = <&tkey_led_en_default>; 119 }; 120 121 i2c-muic { 122 compatible = "i2c-gpio"; 123 sda-gpios = <&msmgpio 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 124 scl-gpios = <&msmgpio 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 125 126 pinctrl-names = "default"; 127 pinctrl-0 = <&muic_i2c_default>; 128 129 #address-cells = <1>; 130 #size-cells = <0>; 131 132 muic: extcon@14 { 133 compatible = "siliconmitus,sm5504-muic"; 134 reg = <0x14>; 135 136 interrupt-parent = <&msmgpio>; 137 interrupts = <12 IRQ_TYPE_EDGE_FALLING>; 138 139 pinctrl-names = "default"; 140 pinctrl-0 = <&muic_irq_default>; 141 }; 142 }; 143 144 i2c-tkey { 145 compatible = "i2c-gpio"; 146 sda-gpios = <&msmgpio 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 147 scl-gpios = <&msmgpio 17 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 148 149 pinctrl-names = "default"; 150 pinctrl-0 = <&tkey_i2c_default>; 151 152 #address-cells = <1>; 153 #size-cells = <0>; 154 155 touchkey@20 { 156 compatible = "coreriver,tc360-touchkey"; 157 reg = <0x20>; 158 159 interrupt-parent = <&msmgpio>; 160 interrupts = <98 IRQ_TYPE_EDGE_FALLING>; 161 162 vcc-supply = <®_touch_key>; 163 vdd-supply = <®_key_led>; 164 vddio-supply = <&pm8916_l6>; 165 166 linux,keycodes = <KEY_APPSELECT KEY_BACK>; 167 168 pinctrl-names = "default"; 169 pinctrl-0 = <&tkey_default>; 170 }; 171 }; 172 173 i2c-nfc { 174 compatible = "i2c-gpio"; 175 sda-gpios = <&msmgpio 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 176 scl-gpios = <&msmgpio 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 177 178 pinctrl-names = "default"; 179 pinctrl-0 = <&nfc_i2c_default>; 180 181 #address-cells = <1>; 182 #size-cells = <0>; 183 184 nfc@2b { 185 compatible = "nxp,pn547", "nxp,nxp-nci-i2c"; 186 reg = <0x2b>; 187 188 interrupt-parent = <&msmgpio>; 189 interrupts = <21 IRQ_TYPE_EDGE_RISING>; 190 191 enable-gpios = <&msmgpio 20 GPIO_ACTIVE_HIGH>; 192 firmware-gpios = <&msmgpio 49 GPIO_ACTIVE_HIGH>; 193 194 pinctrl-names = "default"; 195 pinctrl-0 = <&nfc_default>; 196 }; 197 }; 198}; 199 200&blsp_i2c2 { 201 status = "okay"; 202 203 imu@6b { 204 compatible = "st,lsm6ds3"; 205 reg = <0x6b>; 206 207 interrupt-parent = <&msmgpio>; 208 interrupts = <115 IRQ_TYPE_EDGE_RISING>; 209 210 pinctrl-names = "default"; 211 pinctrl-0 = <&imu_irq_default>; 212 }; 213}; 214 215&blsp_i2c4 { 216 status = "okay"; 217 218 battery@35 { 219 compatible = "richtek,rt5033-battery"; 220 reg = <0x35>; 221 222 interrupt-parent = <&msmgpio>; 223 interrupts = <121 IRQ_TYPE_EDGE_FALLING>; 224 225 pinctrl-names = "default"; 226 pinctrl-0 = <&fg_alert_default>; 227 }; 228}; 229 230&blsp_i2c5 { 231 status = "okay"; 232 233 touchscreen@20 { 234 compatible = "zinitix,bt541"; 235 reg = <0x20>; 236 237 interrupt-parent = <&msmgpio>; 238 interrupts = <13 IRQ_TYPE_EDGE_FALLING>; 239 240 touchscreen-size-x = <540>; 241 touchscreen-size-y = <960>; 242 243 vdd-supply = <®_vdd_tsp>; 244 vddo-supply = <&pm8916_l6>; 245 246 pinctrl-names = "default"; 247 pinctrl-0 = <&tsp_irq_default>; 248 }; 249}; 250 251&blsp1_uart2 { 252 status = "okay"; 253}; 254 255&pm8916_resin { 256 status = "okay"; 257 linux,code = <KEY_VOLUMEDOWN>; 258}; 259 260&pm8916_vib { 261 status = "okay"; 262}; 263 264&pronto { 265 status = "okay"; 266 267 iris { 268 compatible = "qcom,wcn3660b"; 269 }; 270}; 271 272&sdhc_1 { 273 status = "okay"; 274 275 pinctrl-names = "default", "sleep"; 276 pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>; 277 pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>; 278}; 279 280&sdhc_2 { 281 status = "okay"; 282 283 pinctrl-names = "default", "sleep"; 284 pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>; 285 pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>; 286 287 non-removable; 288 289 /* 290 * FIXME: Disable UHS-I modes since tuning fails with: 291 * 292 * sdhci_msm 7864900.sdhci: mmc1: No tuning point found 293 * mmc1: tuning execution failed: -5 294 * mmc1: error -5 whilst initialising SD card 295 * 296 * This is the quirk used on downstream, which suggests this is 297 * a hardware limitation. However, probing a card using DDR50 works 298 * (without tuning), so maybe only tuning is broken? 299 */ 300 no-1-8-v; 301}; 302 303&usb { 304 status = "okay"; 305 extcon = <&muic>, <&muic>; 306}; 307 308&usb_hs_phy { 309 extcon = <&muic>; 310}; 311 312&smd_rpm_regulators { 313 vdd_l1_l2_l3-supply = <&pm8916_s3>; 314 vdd_l4_l5_l6-supply = <&pm8916_s4>; 315 vdd_l7-supply = <&pm8916_s4>; 316 317 s3 { 318 regulator-min-microvolt = <1200000>; 319 regulator-max-microvolt = <1300000>; 320 }; 321 322 s4 { 323 regulator-min-microvolt = <1800000>; 324 regulator-max-microvolt = <2100000>; 325 }; 326 327 l1 { 328 regulator-min-microvolt = <1225000>; 329 regulator-max-microvolt = <1225000>; 330 }; 331 332 l2 { 333 regulator-min-microvolt = <1200000>; 334 regulator-max-microvolt = <1200000>; 335 }; 336 337 l4 { 338 regulator-min-microvolt = <2050000>; 339 regulator-max-microvolt = <2050000>; 340 }; 341 342 l5 { 343 regulator-min-microvolt = <1800000>; 344 regulator-max-microvolt = <1800000>; 345 }; 346 347 l6 { 348 regulator-min-microvolt = <1800000>; 349 regulator-max-microvolt = <1800000>; 350 }; 351 352 l7 { 353 regulator-min-microvolt = <1800000>; 354 regulator-max-microvolt = <1800000>; 355 }; 356 357 l8 { 358 regulator-min-microvolt = <2850000>; 359 regulator-max-microvolt = <2900000>; 360 }; 361 362 l9 { 363 regulator-min-microvolt = <3300000>; 364 regulator-max-microvolt = <3300000>; 365 }; 366 367 l10 { 368 regulator-min-microvolt = <2700000>; 369 regulator-max-microvolt = <2800000>; 370 }; 371 372 l11 { 373 regulator-min-microvolt = <1800000>; 374 regulator-max-microvolt = <2950000>; 375 regulator-allow-set-load; 376 regulator-system-load = <200000>; 377 }; 378 379 l12 { 380 regulator-min-microvolt = <1800000>; 381 regulator-max-microvolt = <2950000>; 382 }; 383 384 l13 { 385 regulator-min-microvolt = <3075000>; 386 regulator-max-microvolt = <3075000>; 387 }; 388 389 l14 { 390 regulator-min-microvolt = <1800000>; 391 regulator-max-microvolt = <3300000>; 392 }; 393 394 l15 { 395 regulator-min-microvolt = <1800000>; 396 regulator-max-microvolt = <3300000>; 397 }; 398 399 l16 { 400 regulator-min-microvolt = <1800000>; 401 regulator-max-microvolt = <3300000>; 402 }; 403 404 l17 { 405 regulator-min-microvolt = <2850000>; 406 regulator-max-microvolt = <2850000>; 407 }; 408 409 l18 { 410 regulator-min-microvolt = <2700000>; 411 regulator-max-microvolt = <2700000>; 412 }; 413}; 414 415&msmgpio { 416 fg_alert_default: fg-alert-default { 417 pins = "gpio121"; 418 function = "gpio"; 419 420 drive-strength = <2>; 421 bias-disable; 422 }; 423 424 gpio_keys_default: gpio-keys-default { 425 pins = "gpio107", "gpio109"; 426 function = "gpio"; 427 428 drive-strength = <2>; 429 bias-pull-up; 430 }; 431 432 gpio_hall_sensor_default: gpio-hall-sensor-default { 433 pins = "gpio52"; 434 function = "gpio"; 435 436 drive-strength = <2>; 437 bias-disable; 438 }; 439 440 imu_irq_default: imu-irq-default { 441 pins = "gpio115"; 442 function = "gpio"; 443 444 drive-strength = <2>; 445 bias-disable; 446 }; 447 448 muic_i2c_default: muic-i2c-default { 449 pins = "gpio105", "gpio106"; 450 function = "gpio"; 451 452 drive-strength = <2>; 453 bias-disable; 454 }; 455 456 muic_irq_default: muic-irq-default { 457 pins = "gpio12"; 458 function = "gpio"; 459 460 drive-strength = <2>; 461 bias-disable; 462 }; 463 464 nfc_default: nfc-default { 465 pins = "gpio20", "gpio49"; 466 function = "gpio"; 467 468 drive-strength = <2>; 469 bias-disable; 470 471 irq { 472 pins = "gpio21"; 473 function = "gpio"; 474 475 drive-strength = <2>; 476 bias-pull-down; 477 }; 478 }; 479 480 nfc_i2c_default: nfc-i2c-default { 481 pins = "gpio0", "gpio1"; 482 function = "gpio"; 483 484 drive-strength = <2>; 485 bias-disable; 486 }; 487 488 tkey_default: tkey-default { 489 pins = "gpio98"; 490 function = "gpio"; 491 492 drive-strength = <2>; 493 bias-disable; 494 }; 495 496 tkey_en_default: tkey-en-default { 497 pins = "gpio86"; 498 function = "gpio"; 499 500 drive-strength = <2>; 501 bias-disable; 502 }; 503 504 tkey_i2c_default: tkey-i2c-default { 505 pins = "gpio16", "gpio17"; 506 function = "gpio"; 507 508 drive-strength = <2>; 509 bias-disable; 510 }; 511 512 tkey_led_en_default: tkey-led-en-default { 513 pins = "gpio60"; 514 function = "gpio"; 515 516 drive-strength = <2>; 517 bias-disable; 518 }; 519 520 tsp_en_default: tsp-en-default { 521 pins = "gpio73"; 522 function = "gpio"; 523 524 drive-strength = <2>; 525 bias-disable; 526 }; 527 528 tsp_irq_default: tsp-irq-default { 529 pins = "gpio13"; 530 function = "gpio"; 531 532 drive-strength = <2>; 533 bias-disable; 534 }; 535}; 536