1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Devicetree for the Samsung XCover 2 GT-S7710 also known as Skomer. 4 */ 5 6/dts-v1/; 7#include "ste-db8500.dtsi" 8#include "ste-ab8505.dtsi" 9#include "ste-dbx5x0-pinctrl.dtsi" 10#include <dt-bindings/gpio/gpio.h> 11#include <dt-bindings/leds/common.h> 12#include <dt-bindings/input/input.h> 13#include <dt-bindings/interrupt-controller/irq.h> 14 15/ { 16 model = "Samsung XCover 2 (GT-S7710)"; 17 compatible = "samsung,skomer", "st-ericsson,u8500"; 18 19 chosen { 20 stdout-path = &serial2; 21 }; 22 23 /* TI TXS0206 level translator for 2.9 V */ 24 sd_level_translator: regulator-gpio { 25 compatible = "regulator-fixed"; 26 27 /* GPIO87 EN */ 28 gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>; 29 enable-active-high; 30 31 regulator-name = "sd-level-translator"; 32 regulator-min-microvolt = <2900000>; 33 regulator-max-microvolt = <2900000>; 34 regulator-type = "voltage"; 35 36 startup-delay-us = <200>; 37 38 pinctrl-names = "default"; 39 pinctrl-0 = <&sd_level_translator_default>; 40 }; 41 42 /* External LDO MIC5366-3.3YMT for eMMC */ 43 ldo_3v3_reg: regulator-gpio-ldo-3v3 { 44 compatible = "regulator-fixed"; 45 regulator-name = "en-3v3-fixed-supply"; 46 regulator-min-microvolt = <3300000>; 47 regulator-max-microvolt = <3300000>; 48 gpio = <&gpio6 31 GPIO_ACTIVE_HIGH>; 49 startup-delay-us = <5000>; 50 enable-active-high; 51 pinctrl-names = "default"; 52 pinctrl-0 = <&emmc_ldo_en_default_mode>; 53 }; 54 55 wlan_en: regulator-gpio-wlan-en { 56 compatible = "regulator-fixed"; 57 regulator-name = "wl-reg-on"; 58 regulator-min-microvolt = <3000000>; 59 regulator-max-microvolt = <3000000>; 60 startup-delay-us = <200000>; 61 /* GPIO215 WLAN_EN */ 62 gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>; 63 enable-active-high; 64 pinctrl-names = "default"; 65 pinctrl-0 = <&wlan_en_default_mode>; 66 }; 67 68 vibrator { 69 compatible = "gpio-vibrator"; 70 enable-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>; 71 pinctrl-names = "default"; 72 pinctrl-0 = <&vibrator_default>; 73 }; 74 75 gpio-keys { 76 compatible = "gpio-keys"; 77 pinctrl-names = "default"; 78 pinctrl-0 = <&gpio_keys_default_mode>; 79 80 button-home { 81 linux,code = <KEY_HOME>; 82 label = "HOME"; 83 /* GPIO91 */ 84 gpios = <&gpio2 27 GPIO_ACTIVE_LOW>; 85 }; 86 button-volup { 87 linux,code = <KEY_VOLUMEUP>; 88 label = "VOL+"; 89 /* GPIO67 */ 90 gpios = <&gpio2 3 GPIO_ACTIVE_LOW>; 91 }; 92 button-voldown { 93 linux,code = <KEY_VOLUMEDOWN>; 94 label = "VOL-"; 95 /* GPIO92 */ 96 gpios = <&gpio2 28 GPIO_ACTIVE_LOW>; 97 }; 98 button-menu { 99 linux,code = <KEY_MENU>; 100 label = "MENU"; 101 /* GPIO204 */ 102 gpios = <&gpio6 12 GPIO_ACTIVE_LOW>; 103 }; 104 button-back { 105 linux,code = <KEY_BACK>; 106 label = "BACK"; 107 /* GPIO205 */ 108 gpios = <&gpio6 13 GPIO_ACTIVE_LOW>; 109 }; 110 }; 111 112 ktd253: backlight { 113 compatible = "kinetic,ktd253"; 114 /* GPIO 69 */ 115 enable-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>; 116 /* Default to 13/32 brightness */ 117 default-brightness = <13>; 118 pinctrl-names = "default"; 119 pinctrl-0 = <&gpio_backlight_default_mode>; 120 }; 121 122 /* Richtek RT8515GQW Flash LED Driver IC */ 123 flash { 124 compatible = "richtek,rt8515"; 125 /* GPIO 140 */ 126 enf-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>; 127 /* GPIO 141 */ 128 ent-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>; 129 /* 130 * RFS is 16 kOhm and RTS is 100 kOhm giving 131 * the flash max current 343mA and torch max 132 * current 55 mA. 133 */ 134 richtek,rfs-ohms = <16000>; 135 richtek,rts-ohms = <100000>; 136 pinctrl-names = "default"; 137 pinctrl-0 = <&gpio_flash_default_mode>; 138 139 led { 140 function = LED_FUNCTION_FLASH; 141 color = <LED_COLOR_ID_WHITE>; 142 flash-max-timeout-us = <250000>; 143 flash-max-microamp = <343750>; 144 led-max-microamp = <55000>; 145 }; 146 }; 147 148 i2c-gpio-0 { 149 compatible = "i2c-gpio"; 150 sda-gpios = <&gpio4 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 151 scl-gpios = <&gpio4 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 152 pinctrl-names = "default"; 153 pinctrl-0 = <&i2c_gpio_0_default>; 154 #address-cells = <1>; 155 #size-cells = <0>; 156 /* TODO: this should be used by the NCP6914 Camera power management unit */ 157 }; 158 159 i2c-gpio-1 { 160 compatible = "i2c-gpio"; 161 sda-gpios = <&gpio4 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 162 scl-gpios = <&gpio4 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; 163 pinctrl-names = "default"; 164 pinctrl-0 = <&i2c_gpio_1_default>; 165 #address-cells = <1>; 166 #size-cells = <0>; 167 magnetometer@c { 168 compatible = "alps,hscdtd008a"; 169 reg = <0x0c>; 170 avdd-supply = <&ab8500_ldo_aux1_reg>; 171 dvdd-supply = <&ab8500_ldo_aux8_reg>; 172 }; 173 }; 174 175 soc { 176 // External Micro SD slot 177 mmc@80126000 { 178 arm,primecell-periphid = <0x10480180>; 179 max-frequency = <100000000>; 180 bus-width = <4>; 181 cap-sd-highspeed; 182 cap-mmc-highspeed; 183 /* All direction control is used */ 184 st,sig-dir-cmd; 185 st,sig-dir-dat0; 186 st,sig-dir-dat2; 187 st,sig-dir-dat31; 188 st,sig-pin-fbclk; 189 full-pwr-cycle; 190 vmmc-supply = <&ab8500_ldo_aux3_reg>; 191 vqmmc-supply = <&sd_level_translator>; 192 pinctrl-names = "default", "sleep"; 193 pinctrl-0 = <&mc0_a_1_default>; 194 pinctrl-1 = <&mc0_a_1_sleep>; 195 status = "okay"; 196 }; 197 198 // WLAN SDIO channel 199 mmc@80118000 { 200 arm,primecell-periphid = <0x10480180>; 201 max-frequency = <50000000>; 202 bus-width = <4>; 203 non-removable; 204 cap-sd-highspeed; 205 vmmc-supply = <&wlan_en>; 206 pinctrl-names = "default", "sleep"; 207 pinctrl-0 = <&mc1_a_2_default>; 208 pinctrl-1 = <&mc1_a_2_sleep>; 209 status = "okay"; 210 #address-cells = <1>; 211 #size-cells = <0>; 212 213 wifi@1 { 214 compatible = "brcm,bcm4329-fmac"; 215 reg = <1>; 216 /* GPIO216 WL_HOST_WAKE */ 217 interrupt-parent = <&gpio6>; 218 interrupts = <24 IRQ_TYPE_EDGE_FALLING>; 219 interrupt-names = "host-wake"; 220 pinctrl-names = "default"; 221 pinctrl-0 = <&wlan_default_mode>; 222 }; 223 }; 224 225 // eMMC 226 mmc@80005000 { 227 arm,primecell-periphid = <0x10480180>; 228 max-frequency = <100000000>; 229 bus-width = <8>; 230 non-removable; 231 cap-mmc-highspeed; 232 mmc-ddr-1_8v; 233 vmmc-supply = <&ldo_3v3_reg>; 234 pinctrl-names = "default", "sleep"; 235 pinctrl-0 = <&mc2_a_1_default>; 236 pinctrl-1 = <&mc2_a_1_sleep>; 237 238 status = "okay"; 239 }; 240 241 /* GBF (Bluetooth) UART */ 242 uart@80120000 { 243 pinctrl-names = "default", "sleep"; 244 pinctrl-0 = <&u0_a_1_default>; 245 pinctrl-1 = <&u0_a_1_sleep>; 246 status = "okay"; 247 248 /* FIXME: not quite working yet, probably needs regulators */ 249 bluetooth { 250 compatible = "brcm,bcm4330-bt"; 251 shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>; 252 device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>; 253 host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>; 254 pinctrl-names = "default"; 255 pinctrl-0 = <&bluetooth_default_mode>; 256 }; 257 }; 258 259 /* GPF UART */ 260 uart@80121000 { 261 status = "okay"; 262 pinctrl-names = "default", "sleep"; 263 pinctrl-0 = <&u1rxtx_a_1_default &u1ctsrts_a_1_default>; 264 pinctrl-1 = <&u1rxtx_a_1_sleep &u1ctsrts_a_1_sleep>; 265 }; 266 267 /* Debugging console UART connected to AB8505 USB */ 268 uart@80007000 { 269 status = "okay"; 270 pinctrl-names = "default", "sleep"; 271 pinctrl-0 = <&u2rxtx_c_1_default>; 272 pinctrl-1 = <&u2rxtx_c_1_sleep>; 273 }; 274 275 prcmu@80157000 { 276 ab8505 { 277 ab8500_usb { 278 pinctrl-names = "default", "sleep"; 279 pinctrl-0 = <&usb_a_1_default>; 280 pinctrl-1 = <&usb_a_1_sleep>; 281 }; 282 283 ab8505-regulators { 284 ab8500_ldo_aux1 { 285 /* Used for VDD for sensors */ 286 regulator-name = "AUX1"; 287 regulator-min-microvolt = <3000000>; 288 regulator-max-microvolt = <3300000>; 289 }; 290 291 ab8500_ldo_aux2 { 292 /* Supplies the Cypress TMA140 touchscreen only with 3.3V */ 293 regulator-name = "AUX2"; 294 regulator-min-microvolt = <3300000>; 295 regulator-max-microvolt = <3300000>; 296 }; 297 298 ab8500_ldo_aux3 { 299 /* Used for voltage for external MMC/SD card */ 300 regulator-name = "AUX3"; 301 regulator-min-microvolt = <1100000>; 302 regulator-max-microvolt = <3300000>; 303 }; 304 305 ab8500_ldo_aux4 { 306 regulator-name = "AUX4"; 307 /* Hammer to 3.0V for the display */ 308 regulator-min-microvolt = <3000000>; 309 regulator-max-microvolt = <3000000>; 310 }; 311 312 ab8500_ldo_aux5 { 313 regulator-name = "AUX5"; 314 regulator-min-microvolt = <1050000>; 315 regulator-max-microvolt = <2790000>; 316 regulator-always-on; 317 }; 318 319 ab8500_ldo_aux6 { 320 regulator-name = "AUX6"; 321 /* Hammer to 1.8V for the display */ 322 regulator-min-microvolt = <1800000>; 323 regulator-max-microvolt = <1800000>; 324 }; 325 326 ab8500_ldo_aux8 { 327 /* Mostly VIO for sensors */ 328 regulator-name = "AUX8"; 329 }; 330 }; 331 }; 332 }; 333 334 /* I2C0 */ 335 i2c@80004000 { 336 status = "okay"; 337 338 pinctrl-names = "default", "sleep"; 339 pinctrl-0 = <&i2c0_a_1_default>; 340 pinctrl-1 = <&i2c0_a_1_sleep>; 341 342 proximity@44 { 343 compatible = "sharp,gp2ap002s00f"; 344 clock-frequency = <400000>; 345 reg = <0x44>; 346 347 interrupt-parent = <&gpio4>; 348 interrupts = <18 IRQ_TYPE_EDGE_FALLING>; 349 vdd-supply = <&ab8500_ldo_aux1_reg>; 350 vio-supply = <&ab8500_ldo_aux8_reg>; 351 pinctrl-names = "default"; 352 pinctrl-0 = <&gp2ap002_skomer_default>; 353 sharp,proximity-far-hysteresis = /bits/ 8 <0x2f>; 354 sharp,proximity-close-hysteresis = /bits/ 8 <0x0f>; 355 }; 356 }; 357 358 359 /* I2C2 */ 360 i2c@80128000 { 361 status = "okay"; 362 363 pinctrl-names = "default", "sleep"; 364 pinctrl-0 = <&i2c2_b_2_default>; 365 pinctrl-1 = <&i2c2_b_2_sleep>; 366 367 accel@18 { 368 compatible = "bosch,bma254"; 369 clock-frequency = <400000>; 370 reg = <0x18>; 371 372 /* GPIO224 used as "smart alert" interrupt */ 373 interrupt-parent = <&gpio7>; 374 interrupts = <0 IRQ_TYPE_EDGE_RISING>; 375 376 mount-matrix = "0", "-1", "0", 377 "1", "0", "0", 378 "0", "0", "1"; 379 vdd-supply = <&ab8500_ldo_aux1_reg>; 380 vddio-supply = <&ab8500_ldo_aux8_reg>; 381 pinctrl-names = "default"; 382 pinctrl-0 = <&bma254_skomer_default>; 383 }; 384 }; 385 386 /* I2C3 */ 387 i2c@80110000 { 388 status = "okay"; 389 390 pinctrl-names = "default", "sleep"; 391 pinctrl-0 = <&i2c3_c_2_default>; 392 pinctrl-1 = <&i2c3_c_2_sleep>; 393 394 /* Cypress CY8CTMA140 touchscreen */ 395 touchscreen@20 { 396 compatible = "cypress,cy8ctma140"; 397 clock-frequency = <400000>; 398 reg = <0x20>; 399 400 touchscreen-size-x = <480>; 401 touchscreen-size-y = <800>; 402 touchscreen-max-pressure = <255>; 403 404 /* GPIO218 for IRQ */ 405 interrupt-parent = <&gpio6>; 406 interrupts = <26 IRQ_TYPE_EDGE_FALLING>; 407 408 /* VDD is "digital supply" nominally 1.71-3.6V */ 409 vdd-supply = <&ab8500_ldo_aux2_reg>; 410 /* VCPIN is "analog supply", 2.7-3.6 V */ 411 vcpin-supply = <&ab8500_ldo_aux2_reg>; 412 413 pinctrl-names = "default"; 414 pinctrl-0 = <&tma140_skomer_default>; 415 }; 416 }; 417 418 mcde@a0350000 { 419 status = "okay"; 420 pinctrl-names = "default"; 421 pinctrl-0 = <&dsi_default_mode>; 422 423 dsi@a0351000 { 424 panel { 425 /* NT35510-based Hydis HVA40WV1 */ 426 compatible = "hydis,hva40wv1", "novatek,nt35510"; 427 reg = <0>; 428 /* v_lcd_3v0 2.3-4.8V */ 429 vdd-supply = <&ab8500_ldo_aux4_reg>; 430 /* v_lcd_1v8 1.65-3.3V */ 431 vddi-supply = <&ab8500_ldo_aux6_reg>; 432 /* GPIO 139 */ 433 reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>; 434 pinctrl-names = "default"; 435 pinctrl-0 = <&display_default_mode>; 436 backlight = <&ktd253>; 437 }; 438 }; 439 }; 440 }; 441}; 442 443&pinctrl { 444 /* 445 * This extends the MC0 default config to include DAT32DIR 446 * which is used by this machine. If we don't do this the 447 * SD card does not work. 448 */ 449 sdi0 { 450 mc0_a_1_default { 451 default_mux { 452 function = "mc0"; 453 /* This machine uses the DAT31 pin */ 454 groups = "mc0_a_1", "mc0dat31dir_a_1"; 455 }; 456 default_cfg5 { 457 pins = "GPIO21_AB3"; /* DAT31DIR */ 458 ste,config = <&out_hi>; 459 }; 460 }; 461 }; 462 463 /* The unused FBCLK needs to be pulled down on this machine */ 464 sdi2 { 465 mc2_a_1_default { 466 default_cfg2 { 467 pins = "GPIO130_C8"; /* FBCLK */ 468 ste,config = <&in_pd>; 469 }; 470 }; 471 }; 472 473 mcde { 474 dsi_default_mode: dsi_default { 475 default_mux1 { 476 /* Mux in VSI0 used for DSI TE */ 477 function = "lcd"; 478 groups = "lcdvsi0_a_1"; /* VSI0 for LCD */ 479 }; 480 default_cfg1 { 481 pins = "GPIO68_E1"; /* VSI0 */ 482 ste,config = <&in_nopull>; 483 }; 484 }; 485 }; 486 487 /* Two GPIO lines used by the display */ 488 display { 489 display_default_mode: display_default { 490 skomer_cfg1 { 491 /* 492 * OLED DETECT or check_pba, this appears to be high 493 * on "PBA" which I guess is "prototype board A". 494 */ 495 pins = "GPIO93_B7"; 496 ste,config = <&gpio_in_nopull>; 497 }; 498 skomer_cfg2 { 499 pins = "GPIO139_C9"; 500 /* 501 * MIPI_DSI0_RESET_N resets the display, leave high 502 * (de-asserted) so we only assert reset explicitly 503 * from the display driver. 504 */ 505 ste,config = <&gpio_out_hi>; 506 }; 507 }; 508 }; 509 backlight { 510 gpio_backlight_default_mode: backlight_default { 511 skomer_cfg1 { 512 pins = "GPIO69_E2"; /* LCD_BL_CTRL */ 513 ste,config = <&gpio_out_lo>; 514 }; 515 }; 516 }; 517 flash { 518 gpio_flash_default_mode: flash_default { 519 skomer_cfg1 { 520 pins = "GPIO140_B11", "GPIO141_C12"; 521 ste,config = <&gpio_out_lo>; 522 }; 523 }; 524 }; 525 /* GPIO that enables the 2.9V SD card level translator */ 526 sd-level-translator { 527 sd_level_translator_default: sd_level_translator_default { 528 /* level shifter on GPIO87 */ 529 skomer_cfg1 { 530 pins = "GPIO87_B3"; 531 ste,config = <&gpio_out_hi>; 532 }; 533 }; 534 }; 535 /* GPIO that enables the LDO regulator for the eMMC */ 536 emmc-ldo { 537 emmc_ldo_en_default_mode: emmc_ldo_default { 538 /* LDO enable on GPIO223 */ 539 skomer_cfg1 { 540 pins = "GPIO223_AH9"; 541 ste,config = <&gpio_out_hi>; 542 }; 543 }; 544 }; 545 /* GPIO keys */ 546 gpio-keys { 547 gpio_keys_default_mode: gpio_keys_default { 548 skomer_cfg1 { 549 pins = "GPIO67_G2", /* VOL UP */ 550 "GPIO91_B6", /* HOME */ 551 "GPIO92_D6", /* VOL DOWN */ 552 "GPIO204_AF23", /* MENU */ 553 "GPIO205_AG23"; /* BACK */ 554 ste,config = <&gpio_in_pu>; 555 }; 556 }; 557 }; 558 /* Interrupt line for BMA254 */ 559 bma254 { 560 bma254_skomer_default: bma254_skomer { 561 skomer_cfg1 { 562 pins = "GPIO224_AG9"; 563 ste,config = <&gpio_in_pd>; 564 }; 565 }; 566 }; 567 /* Interrupt line for light/proximity sensor GP2AP002 */ 568 gp2ap002 { 569 gp2ap002_skomer_default: gp2ap002_skomer { 570 skomer_cfg1 { 571 pins = "GPIO146_D13"; 572 ste,config = <&gpio_in_nopull>; 573 }; 574 }; 575 }; 576 /* GPIO-based I2C bus for NCP6914 */ 577 i2c-gpio-0 { 578 i2c_gpio_0_default: i2c_gpio_0 { 579 skomer_cfg1 { 580 pins = "GPIO143_D12", "GPIO144_B13"; 581 ste,config = <&gpio_in_nopull>; 582 }; 583 }; 584 }; 585 /* GPIO-based I2C bus for ALPS HSCD compass */ 586 i2c-gpio-1 { 587 i2c_gpio_1_default: i2c_gpio_1 { 588 skomer_cfg1 { 589 pins = "GPIO151_B17", "GPIO152_D16"; 590 ste,config = <&gpio_in_nopull>; 591 }; 592 }; 593 }; 594 wlan { 595 wlan_default_mode: wlan_default { 596 skomer_cfg1 { 597 pins = "GPIO216_AG12"; 598 ste,config = <&gpio_in_pd>; 599 }; 600 }; 601 wlan_en_default_mode: wlan_en_default { 602 skomer_cfg2 { 603 pins = "GPIO215_AH13"; 604 ste,config = <&gpio_out_lo>; 605 }; 606 }; 607 }; 608 bluetooth { 609 bluetooth_default_mode: bluetooth_default { 610 skomer_cfg1 { 611 pins = "GPIO199_AH23", "GPIO222_AJ9"; 612 ste,config = <&gpio_out_lo>; 613 }; 614 skomer_cfg2 { 615 pins = "GPIO97_D9"; 616 ste,config = <&gpio_in_nopull>; 617 }; 618 }; 619 }; 620 vibrator { 621 vibrator_default: vibrator_default { 622 skomer_cfg1 { 623 pins = "GPIO195_AG28"; /* MOT_EN */ 624 ste,config = <&gpio_out_lo>; 625 }; 626 }; 627 }; 628 /* Interrupt line for the Cypress TMA140 touchscreen */ 629 touchscreen { 630 tma140_skomer_default: tma140_skomer { 631 skomer_cfg1 { 632 pins = "GPIO218_AH11"; 633 ste,config = <&gpio_in_nopull>; 634 }; 635 }; 636 }; 637}; 638 639&ab8505_gpio { 640 /* Hog a few default settings */ 641 pinctrl-names = "default"; 642 pinctrl-0 = <&gpio_default>; 643 644 gpio { 645 gpio_default: gpio_default { 646 skomer_mux { 647 /* Change unused pins to GPIO mode */ 648 function = "gpio"; 649 groups = "gpio3_a_1", /* default: SysClkReq4 */ 650 "gpio14_a_1"; /* default: PWMOut1 */ 651 }; 652 skomer_cfg1 { 653 pins = "GPIO11_B17", "GPIO13_D17", "GPIO50_L4"; 654 bias-disable; 655 }; 656 }; 657 }; 658}; 659