1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Samsung Galaxy A2 Core (a2corelte) device tree source 4 * 5 * Copyright (c) 2018 Samsung Electronics Co., Ltd. 6 * Copyright (c) 2025 Kaustabh Chakraborty <kauschluss@disroot.org> 7 */ 8 9/dts-v1/; 10#include "exynos7870.dtsi" 11#include <dt-bindings/gpio/gpio.h> 12#include <dt-bindings/input/input.h> 13#include <dt-bindings/interrupt-controller/irq.h> 14 15/ { 16 model = "Samsung Galaxy A2 Core"; 17 compatible = "samsung,a2corelte", "samsung,exynos7870"; 18 chassis-type = "handset"; 19 20 aliases { 21 mmc0 = &mmc0; 22 mmc1 = &mmc1; 23 mmc2 = &mmc2; 24 serial0 = &serial0; 25 serial1 = &serial1; 26 serial2 = &serial2; 27 }; 28 29 chosen { 30 #address-cells = <2>; 31 #size-cells = <1>; 32 ranges; 33 34 stdout-path = &serial2; 35 36 framebuffer@67000000 { 37 compatible = "simple-framebuffer"; 38 reg = <0x0 0x67000000 (540 * 960 * 4)>; 39 width = <540>; 40 height = <960>; 41 stride = <(540 * 4)>; 42 format = "a8r8g8b8"; 43 }; 44 }; 45 46 gpio-keys { 47 compatible = "gpio-keys"; 48 label = "GPIO Keys"; 49 50 pinctrl-names = "default"; 51 pinctrl-0 = <&key_power &key_voldown &key_volup>; 52 53 key-power { 54 label = "Power Key"; 55 gpios = <&gpa0 0 GPIO_ACTIVE_LOW>; 56 linux,code = <KEY_POWER>; 57 }; 58 59 key-voldown { 60 label = "Volume Down Key"; 61 gpios = <&gpa2 1 GPIO_ACTIVE_LOW>; 62 linux,code = <KEY_VOLUMEDOWN>; 63 }; 64 65 key-volup { 66 label = "Volume Up Key"; 67 gpios = <&gpa2 0 GPIO_ACTIVE_LOW>; 68 linux,code = <KEY_VOLUMEUP>; 69 }; 70 }; 71 72 memory@40000000 { 73 device_type = "memory"; 74 reg = <0x0 0x40000000 0x3f200000>; 75 }; 76 77 pwrseq_mmc1: pwrseq-mmc1 { 78 compatible = "mmc-pwrseq-simple"; 79 reset-gpios = <&gpd3 6 GPIO_ACTIVE_LOW>; 80 }; 81 82 /* mmc2: vmmc */ 83 vdd_fixed_mmc2: regulator-fixed-mmc2 { 84 compatible = "regulator-fixed"; 85 regulator-name = "vdd_fixed_mmc2"; 86 regulator-max-microvolt = <2800000>; 87 regulator-min-microvolt = <2800000>; 88 gpio = <&gpc0 0 GPIO_ACTIVE_HIGH>; 89 enable-active-high; 90 }; 91 92 vdd_fixed_proxled: regulator-fixed-proxled { 93 compatible = "regulator-fixed"; 94 regulator-name = "vdd_fixed_proxled"; 95 regulator-boot-on; 96 regulator-always-on; 97 gpio = <&gpd4 3 GPIO_ACTIVE_HIGH>; 98 enable-active-high; 99 }; 100 101 reserved-memory { 102 #address-cells = <2>; 103 #size-cells = <1>; 104 ranges; 105 106 ramoops@46800000 { 107 compatible = "ramoops"; 108 reg = <0x0 0x46800000 0x8000>; 109 console-size = <0x4000>; 110 pmsg-size = <0x4000>; 111 }; 112 113 framebuffer@67000000 { 114 reg = <0x0 0x67000000 (540 * 960 * 4)>; 115 no-map; 116 }; 117 }; 118 119 vibrator { 120 compatible = "regulator-haptic"; 121 haptic-supply = <&vdd_ldo32>; 122 min-microvolt = <3300000>; 123 max-microvolt = <3300000>; 124 }; 125}; 126 127&gpu { 128 status = "okay"; 129}; 130 131&hsi2c0 { 132 #address-cells = <1>; 133 #size-cells = <0>; 134 135 status = "okay"; 136 137 pmic@66 { 138 compatible = "samsung,s2mpu05-pmic"; 139 reg = <0x66>; 140 interrupt-parent = <&gpa0>; 141 interrupts = <2 IRQ_TYPE_LEVEL_LOW>; 142 143 pinctrl-names = "default"; 144 pinctrl-0 = <&pmic_irq>; 145 146 regulators { 147 vdd_buck1: buck1 { 148 regulator-name = "vdd_buck1"; 149 regulator-min-microvolt = <500000>; 150 regulator-max-microvolt = <1300000>; 151 regulator-ramp-delay = <12000>; 152 regulator-boot-on; 153 regulator-always-on; 154 }; 155 156 vdd_buck2: buck2 { 157 regulator-name = "vdd_buck2"; 158 regulator-min-microvolt = <500000>; 159 regulator-max-microvolt = <1300000>; 160 regulator-ramp-delay = <12000>; 161 regulator-boot-on; 162 regulator-always-on; 163 }; 164 165 vdd_buck3: buck3 { 166 regulator-name = "vdd_buck3"; 167 regulator-min-microvolt = <500000>; 168 regulator-max-microvolt = <1300000>; 169 regulator-ramp-delay = <12000>; 170 regulator-boot-on; 171 regulator-always-on; 172 }; 173 174 vdd_buck4: buck4 { 175 regulator-name = "vdd_buck4"; 176 regulator-min-microvolt = <1200000>; 177 regulator-max-microvolt = <1500000>; 178 regulator-ramp-delay = <12000>; 179 regulator-boot-on; 180 regulator-always-on; 181 }; 182 183 vdd_buck5: buck5 { 184 regulator-name = "vdd_buck5"; 185 regulator-min-microvolt = <1800000>; 186 regulator-max-microvolt = <2100000>; 187 regulator-ramp-delay = <12000>; 188 regulator-boot-on; 189 regulator-always-on; 190 }; 191 192 vdd_ldo1: ldo1 { 193 regulator-name = "vdd_ldo1"; 194 regulator-min-microvolt = <650000>; 195 regulator-max-microvolt = <1350000>; 196 regulator-ramp-delay = <12000>; 197 regulator-boot-on; 198 regulator-always-on; 199 }; 200 201 /* mmc2: vqmmc */ 202 vdd_ldo2: ldo2 { 203 regulator-name = "vdd_ldo2"; 204 regulator-min-microvolt = <1800000>; 205 regulator-max-microvolt = <2800000>; 206 regulator-ramp-delay = <12000>; 207 }; 208 209 vdd_ldo3: ldo3 { 210 regulator-name = "vdd_ldo3"; 211 regulator-min-microvolt = <800000>; 212 regulator-max-microvolt = <2375000>; 213 regulator-ramp-delay = <12000>; 214 regulator-boot-on; 215 regulator-always-on; 216 }; 217 218 vdd_ldo4: ldo4 { 219 regulator-name = "vdd_ldo4"; 220 regulator-min-microvolt = <800000>; 221 regulator-max-microvolt = <1350000>; 222 regulator-ramp-delay = <12000>; 223 regulator-boot-on; 224 regulator-always-on; 225 }; 226 227 vdd_ldo5: ldo5 { 228 regulator-name = "vdd_ldo5"; 229 regulator-min-microvolt = <800000>; 230 regulator-max-microvolt = <1350000>; 231 regulator-ramp-delay = <12000>; 232 regulator-boot-on; 233 regulator-always-on; 234 }; 235 236 vdd_ldo6: ldo6 { 237 regulator-name = "vdd_ldo6"; 238 regulator-min-microvolt = <800000>; 239 regulator-max-microvolt = <1350000>; 240 regulator-ramp-delay = <12000>; 241 regulator-boot-on; 242 regulator-always-on; 243 }; 244 245 vdd_ldo7: ldo7 { 246 regulator-name = "vdd_ldo7"; 247 regulator-min-microvolt = <800000>; 248 regulator-max-microvolt = <2375000>; 249 regulator-ramp-delay = <12000>; 250 regulator-boot-on; 251 regulator-always-on; 252 }; 253 254 /* usbdrd: vdd33 */ 255 vdd_ldo8: ldo8 { 256 regulator-name = "vdd_ldo8"; 257 regulator-min-microvolt = <1800000>; 258 regulator-max-microvolt = <3375000>; 259 regulator-ramp-delay = <12000>; 260 }; 261 262 vdd_ldo9: ldo9 { 263 regulator-name = "vdd_ldo9"; 264 regulator-min-microvolt = <650000>; 265 regulator-max-microvolt = <1350000>; 266 regulator-ramp-delay = <12000>; 267 regulator-boot-on; 268 regulator-always-on; 269 }; 270 271 vdd_ldo10: ldo10 { 272 regulator-name = "vdd_ldo10"; 273 regulator-min-microvolt = <650000>; 274 regulator-max-microvolt = <1350000>; 275 regulator-ramp-delay = <12000>; 276 regulator-boot-on; 277 regulator-always-on; 278 }; 279 280 vdd_ldo25: ldo25 { 281 regulator-name = "vdd_ldo25"; 282 regulator-min-microvolt = <800000>; 283 regulator-max-microvolt = <2375000>; 284 regulator-ramp-delay = <12000>; 285 regulator-boot-on; 286 regulator-always-on; 287 }; 288 289 /* mmc0: vmmc */ 290 vdd_ldo26: ldo26 { 291 regulator-name = "vdd_ldo26"; 292 regulator-min-microvolt = <1800000>; 293 regulator-max-microvolt = <3375000>; 294 regulator-ramp-delay = <12000>; 295 }; 296 297 /* mmc0: vqmmc */ 298 vdd_ldo27: ldo27 { 299 regulator-name = "vdd_ldo27"; 300 regulator-min-microvolt = <800000>; 301 regulator-max-microvolt = <2375000>; 302 regulator-ramp-delay = <12000>; 303 }; 304 305 vdd_ldo29: ldo29 { 306 regulator-name = "vdd_ldo29"; 307 regulator-min-microvolt = <3300000>; 308 regulator-max-microvolt = <3300000>; 309 regulator-boot-on; 310 regulator-always-on; 311 }; 312 313 vdd_ldo30: ldo30 { 314 regulator-name = "vdd_ldo30"; 315 regulator-min-microvolt = <1800000>; 316 regulator-max-microvolt = <1800000>; 317 regulator-boot-on; 318 regulator-always-on; 319 }; 320 321 vdd_ldo31: ldo31 { 322 regulator-name = "vdd_ldo31"; 323 regulator-min-microvolt = <2800000>; 324 regulator-max-microvolt = <2800000>; 325 regulator-ramp-delay = <12000>; 326 regulator-boot-on; 327 regulator-always-on; 328 }; 329 330 /* vibrator: haptic */ 331 vdd_ldo32: ldo32 { 332 regulator-name = "vdd_ldo32"; 333 regulator-min-microvolt = <3300000>; 334 regulator-max-microvolt = <3300000>; 335 regulator-ramp-delay = <12000>; 336 }; 337 338 vdd_ldo33: ldo33 { 339 regulator-name = "vdd_ldo33"; 340 regulator-min-microvolt = <1800000>; 341 regulator-max-microvolt = <1800000>; 342 regulator-ramp-delay = <12000>; 343 regulator-boot-on; 344 regulator-always-on; 345 }; 346 347 vdd_ldo34: ldo34 { 348 regulator-name = "vdd_ldo34"; 349 regulator-min-microvolt = <1800000>; 350 regulator-max-microvolt = <1800000>; 351 regulator-ramp-delay = <12000>; 352 regulator-boot-on; 353 regulator-always-on; 354 }; 355 356 /* touchscreen: vdd */ 357 vdd_ldo35: ldo35 { 358 regulator-name = "vdd_ldo35"; 359 regulator-min-microvolt = <2800000>; 360 regulator-max-microvolt = <2800000>; 361 regulator-ramp-delay = <12000>; 362 }; 363 }; 364 }; 365}; 366 367&i2c5 { 368 #address-cells = <1>; 369 #size-cells = <0>; 370 371 samsung,i2c-sda-delay = <100>; 372 samsung,i2c-max-bus-freq = <400000>; 373 374 status = "okay"; 375 376 accelerometer@1d { 377 compatible = "st,lis2ds12"; 378 reg = <0x1d>; 379 interrupt-parent = <&gpa2>; 380 interrupts = <3 IRQ_TYPE_EDGE_RISING>; 381 382 pinctrl-names = "default"; 383 pinctrl-0 = <&accel_irq>; 384 385 st,drdy-int-pin = <1>; 386 }; 387 388 proximity@48 { 389 compatible = "sensortek,stk3013", "sensortek,stk3310"; 390 reg = <0x48>; 391 interrupt-parent = <&gpa0>; 392 interrupts = <5 IRQ_TYPE_EDGE_BOTH>; 393 394 pinctrl-names = "default"; 395 pinctrl-0 = <&proxm_irq>; 396 397 proximity-near-level = <25>; 398 }; 399}; 400 401&i2c6 { 402 #address-cells = <1>; 403 #size-cells = <0>; 404 405 samsung,i2c-sda-delay = <100>; 406 samsung,i2c-max-bus-freq = <400000>; 407 408 status = "okay"; 409 410 touchscreen@4b { 411 compatible = "syna,rmi4-i2c"; 412 reg = <0x4b>; 413 interrupt-parent = <&gpa0>; 414 interrupts = <6 IRQ_TYPE_LEVEL_LOW>; 415 #address-cells = <1>; 416 #size-cells = <0>; 417 418 pinctrl-names = "default"; 419 pinctrl-0 = <&touch_irq>; 420 421 vdd-supply = <&vdd_ldo35>; 422 423 syna,reset-delay-ms = <200>; 424 syna,startup-delay-ms = <200>; 425 426 rmi4-f01@1 { 427 reg = <0x01>; 428 syna,nosleep-mode = <1>; 429 }; 430 431 rmi4-f12@12 { 432 reg = <0x12>; 433 syna,sensor-type = <1>; 434 syna,rezero-wait-ms = <200>; 435 syna,clip-x-high = <539>; 436 syna,clip-y-high = <959>; 437 touchscreen-x-mm = <62>; 438 touchscreen-y-mm = <110>; 439 }; 440 }; 441}; 442 443&mmc0 { 444 pinctrl-names = "default"; 445 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_rdqs &sd0_bus1 &sd0_bus4 &sd0_bus8>; 446 447 vmmc-supply = <&vdd_ldo26>; 448 vqmmc-supply = <&vdd_ldo27>; 449 450 fifo-depth = <64>; 451 samsung,dw-mshc-ciu-div = <3>; 452 samsung,dw-mshc-sdr-timing = <0 4>; 453 samsung,dw-mshc-ddr-timing = <2 4>; 454 non-removable; 455 456 status = "okay"; 457}; 458 459&mmc1 { 460 #address-cells = <1>; 461 #size-cells = <0>; 462 463 pinctrl-names = "default"; 464 pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_bus1 &sd1_bus4>; 465 466 mmc-pwrseq = <&pwrseq_mmc1>; 467 468 bus-width = <4>; 469 fifo-depth = <64>; 470 samsung,dw-mshc-ciu-div = <3>; 471 samsung,dw-mshc-sdr-timing = <0 3>; 472 samsung,dw-mshc-ddr-timing = <1 2>; 473 non-removable; 474 cap-sd-highspeed; 475 cap-sdio-irq; 476 477 status = "okay"; 478 479 wifi@1 { 480 compatible = "brcm,bcm43430a1-fmac", "brcm,bcm4329-fmac"; 481 reg = <0x1>; 482 interrupt-names = "host-wake"; 483 interrupt-parent = <&gpa2>; 484 interrupts = <2 IRQ_TYPE_LEVEL_LOW>; 485 486 reset-gpios = <&gpd3 6 GPIO_ACTIVE_LOW>; 487 }; 488}; 489 490&mmc2 { 491 pinctrl-names = "default"; 492 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus1 &sd2_bus4 &dwmmc2_irq>; 493 494 vmmc-supply = <&vdd_fixed_mmc2>; 495 vqmmc-supply = <&vdd_ldo2>; 496 497 bus-width = <4>; 498 card-detect-delay = <200>; 499 fifo-depth = <64>; 500 samsung,dw-mshc-ciu-div = <3>; 501 samsung,dw-mshc-sdr-timing = <0 3>; 502 samsung,dw-mshc-ddr-timing = <1 2>; 503 sd-uhs-sdr50; 504 sd-uhs-sdr104; 505 broken-cd; 506 disable-wp; 507 508 status = "okay"; 509}; 510 511&oscclk { 512 clock-frequency = <26000000>; 513}; 514 515&pinctrl_alive { 516 accel_irq: accel-irq-pins { 517 samsung,pins = "gpa2-3"; 518 samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 519 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 520 samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>; 521 }; 522 523 dwmmc2_irq: dwmmc2-irq-pins { 524 samsung,pins = "gpa0-1"; 525 samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 526 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 527 samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>; 528 }; 529 530 fuel_irq: fuel-irq-pins { 531 samsung,pins = "gpa0-3"; 532 samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 533 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 534 samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>; 535 }; 536 537 key_power: key-power-pins { 538 samsung,pins = "gpa0-0"; 539 samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 540 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 541 samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>; 542 }; 543 544 key_voldown: key-voldown-pins { 545 samsung,pins = "gpa2-1"; 546 samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 547 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 548 samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>; 549 }; 550 551 key_volup: key-volup-pins { 552 samsung,pins = "gpa2-0"; 553 samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 554 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 555 samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>; 556 }; 557 558 pmic_irq: pmic-irq-pins { 559 samsung,pins = "gpa0-2"; 560 samsung,pin-pud = <EXYNOS_PIN_PULL_UP>; 561 samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>; 562 }; 563 564 proxm_irq: proxm-irq-pins { 565 samsung,pins = "gpa0-5"; 566 samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 567 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 568 samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>; 569 }; 570 571 touch_irq: touch-irq-pins { 572 samsung,pins = "gpa0-6"; 573 samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 574 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 575 samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>; 576 }; 577 578 wlan_hostwake: wlan-hostwake-pins { 579 samsung,pins = "gpa2-2"; 580 samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>; 581 samsung,pin-pud = <EXYNOS_PIN_PULL_UP>; 582 }; 583}; 584 585&pinctrl_top { 586 bt_enable: bt-enable-pins { 587 samsung,pins = "gpd4-0"; 588 samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>; 589 samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>; 590 samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>; 591 samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; 592 }; 593 594 wlan_enable: wlan-enable-pins { 595 samsung,pins = "gpd3-6"; 596 samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>; 597 samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>; 598 samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>; 599 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 600 samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>; 601 samsung,pin-val = <0>; 602 }; 603}; 604 605&serial1 { 606 status = "okay"; 607 608 bluetooth { 609 compatible = "brcm,bcm43430a1-bt"; 610 611 pinctrl-names = "default"; 612 pinctrl-0 = <&bt_btwake &bt_hostwake &bt_enable>; 613 614 device-wakeup-gpios = <&gpa1 2 GPIO_ACTIVE_HIGH>; 615 host-wakeup-gpios = <&gpa1 6 GPIO_ACTIVE_HIGH>; 616 shutdown-gpios = <&gpd4 0 GPIO_ACTIVE_HIGH>; 617 618 max-speed = <3000000>; 619 }; 620}; 621 622&serial2 { 623 status = "okay"; 624}; 625 626&usbdrd { 627 vdd33-supply = <&vdd_ldo8>; 628 629 status = "okay"; 630}; 631