1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Google Spring board device tree source 4 * 5 * Copyright (c) 2013 Google, Inc 6 * Copyright (c) 2014 SUSE LINUX Products GmbH 7 */ 8 9/dts-v1/; 10#include <dt-bindings/gpio/gpio.h> 11#include <dt-bindings/interrupt-controller/irq.h> 12#include <dt-bindings/input/input.h> 13#include "exynos5250.dtsi" 14 15/ { 16 model = "Google Spring"; 17 compatible = "google,spring", "samsung,exynos5250", "samsung,exynos5"; 18 19 memory@40000000 { 20 device_type = "memory"; 21 reg = <0x40000000 0x80000000>; 22 }; 23 24 chosen { 25 bootargs = "console=tty1"; 26 stdout-path = "serial3:115200n8"; 27 }; 28 29 gpio-keys { 30 compatible = "gpio-keys"; 31 pinctrl-names = "default"; 32 pinctrl-0 = <&power_key_irq>, <&lid_irq>; 33 34 power { 35 label = "Power"; 36 gpios = <&gpx1 3 GPIO_ACTIVE_LOW>; 37 linux,code = <KEY_POWER>; 38 wakeup-source; 39 }; 40 41 lid-switch { 42 label = "Lid"; 43 gpios = <&gpx3 5 GPIO_ACTIVE_LOW>; 44 linux,input-type = <5>; /* EV_SW */ 45 linux,code = <0>; /* SW_LID */ 46 debounce-interval = <1>; 47 wakeup-source; 48 }; 49 }; 50 51 usb-hub { 52 compatible = "smsc,usb3503a"; 53 reset-gpios = <&gpe1 0 GPIO_ACTIVE_LOW>; 54 pinctrl-names = "default"; 55 pinctrl-0 = <&hsic_reset>; 56 }; 57 58 fixed-rate-clocks { 59 xxti { 60 compatible = "samsung,clock-xxti"; 61 clock-frequency = <24000000>; 62 }; 63 }; 64}; 65 66&cpu0 { 67 cpu0-supply = <&buck2_reg>; 68}; 69 70&dp { 71 status = "okay"; 72 pinctrl-names = "default"; 73 pinctrl-0 = <&dp_hpd_gpio>; 74 samsung,color-space = <0>; 75 samsung,color-depth = <1>; 76 samsung,link-rate = <0x0a>; 77 samsung,lane-count = <1>; 78 hpd-gpios = <&gpc3 0 GPIO_ACTIVE_HIGH>; 79}; 80 81&ehci { 82 samsung,vbus-gpio = <&gpx1 1 GPIO_ACTIVE_HIGH>; 83}; 84 85&fimd { 86 status = "okay"; 87 samsung,invert-vclk; 88}; 89 90&hdmi { 91 status = "okay"; 92 hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>; 93 pinctrl-names = "default"; 94 pinctrl-0 = <&hdmi_hpd_irq>; 95 ddc = <&i2c_2>; 96 hdmi-en-supply = <&ldo8_reg>; 97 vdd-supply = <&ldo8_reg>; 98 vdd_osc-supply = <&ldo10_reg>; 99 vdd_pll-supply = <&ldo8_reg>; 100}; 101 102&i2c_0 { 103 status = "okay"; 104 samsung,i2c-sda-delay = <100>; 105 samsung,i2c-max-bus-freq = <378000>; 106 107 s5m8767-pmic@66 { 108 compatible = "samsung,s5m8767-pmic"; 109 reg = <0x66>; 110 interrupt-parent = <&gpx3>; 111 interrupts = <2 IRQ_TYPE_NONE>; 112 pinctrl-names = "default"; 113 pinctrl-0 = <&s5m8767_irq &s5m8767_dvs &s5m8767_ds>; 114 wakeup-source; 115 116 s5m8767,pmic-buck-dvs-gpios = <&gpd1 0 GPIO_ACTIVE_LOW>, /* DVS1 */ 117 <&gpd1 1 GPIO_ACTIVE_LOW>, /* DVS2 */ 118 <&gpd1 2 GPIO_ACTIVE_LOW>; /* DVS3 */ 119 120 s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_LOW>, /* SET1 */ 121 <&gpx2 4 GPIO_ACTIVE_LOW>, /* SET2 */ 122 <&gpx2 5 GPIO_ACTIVE_LOW>; /* SET3 */ 123 124 /* 125 * The following arrays of DVS voltages are not used, since we are 126 * not using GPIOs to control PMIC bucks, but they must be defined 127 * to please the driver. 128 */ 129 s5m8767,pmic-buck2-dvs-voltage = <1350000>, <1300000>, 130 <1250000>, <1200000>, 131 <1150000>, <1100000>, 132 <1000000>, <950000>; 133 134 s5m8767,pmic-buck3-dvs-voltage = <1100000>, <1100000>, 135 <1100000>, <1100000>, 136 <1000000>, <1000000>, 137 <1000000>, <1000000>; 138 139 s5m8767,pmic-buck4-dvs-voltage = <1200000>, <1200000>, 140 <1200000>, <1200000>, 141 <1200000>, <1200000>, 142 <1200000>, <1200000>; 143 144 clocks { 145 compatible = "samsung,s5m8767-clk"; 146 #clock-cells = <1>; 147 clock-output-names = "en32khz_ap", 148 "en32khz_cp", 149 "en32khz_bt"; 150 }; 151 152 regulators { 153 ldo4_reg: LDO4 { 154 regulator-name = "P1.0V_LDO_OUT4"; 155 regulator-min-microvolt = <1000000>; 156 regulator-max-microvolt = <1000000>; 157 regulator-always-on; 158 op_mode = <0>; 159 }; 160 161 ldo5_reg: LDO5 { 162 regulator-name = "P1.0V_LDO_OUT5"; 163 regulator-min-microvolt = <1000000>; 164 regulator-max-microvolt = <1000000>; 165 regulator-always-on; 166 op_mode = <0>; 167 }; 168 169 ldo6_reg: LDO6 { 170 regulator-name = "vdd_mydp"; 171 regulator-min-microvolt = <1000000>; 172 regulator-max-microvolt = <1000000>; 173 regulator-always-on; 174 op_mode = <3>; 175 }; 176 177 ldo7_reg: LDO7 { 178 regulator-name = "P1.1V_LDO_OUT7"; 179 regulator-min-microvolt = <1100000>; 180 regulator-max-microvolt = <1100000>; 181 regulator-always-on; 182 op_mode = <3>; 183 }; 184 185 ldo8_reg: LDO8 { 186 regulator-name = "P1.0V_LDO_OUT8"; 187 regulator-min-microvolt = <1000000>; 188 regulator-max-microvolt = <1000000>; 189 regulator-always-on; 190 op_mode = <3>; 191 }; 192 193 ldo10_reg: LDO10 { 194 regulator-name = "P1.8V_LDO_OUT10"; 195 regulator-min-microvolt = <1800000>; 196 regulator-max-microvolt = <1800000>; 197 regulator-always-on; 198 op_mode = <3>; 199 }; 200 201 ldo11_reg: LDO11 { 202 regulator-name = "P1.8V_LDO_OUT11"; 203 regulator-min-microvolt = <1800000>; 204 regulator-max-microvolt = <1800000>; 205 regulator-always-on; 206 op_mode = <0>; 207 }; 208 209 ldo12_reg: LDO12 { 210 regulator-name = "P3.0V_LDO_OUT12"; 211 regulator-min-microvolt = <3000000>; 212 regulator-max-microvolt = <3000000>; 213 regulator-always-on; 214 op_mode = <3>; 215 }; 216 217 ldo13_reg: LDO13 { 218 regulator-name = "P1.8V_LDO_OUT13"; 219 regulator-min-microvolt = <1800000>; 220 regulator-max-microvolt = <1800000>; 221 regulator-always-on; 222 op_mode = <0>; 223 }; 224 225 ldo14_reg: LDO14 { 226 regulator-name = "P1.8V_LDO_OUT14"; 227 regulator-min-microvolt = <1800000>; 228 regulator-max-microvolt = <1800000>; 229 regulator-always-on; 230 op_mode = <3>; 231 }; 232 233 ldo15_reg: LDO15 { 234 regulator-name = "P1.0V_LDO_OUT15"; 235 regulator-min-microvolt = <1000000>; 236 regulator-max-microvolt = <1000000>; 237 regulator-always-on; 238 op_mode = <3>; 239 }; 240 241 ldo16_reg: LDO16 { 242 regulator-name = "P1.8V_LDO_OUT16"; 243 regulator-min-microvolt = <1800000>; 244 regulator-max-microvolt = <1800000>; 245 regulator-always-on; 246 op_mode = <3>; 247 }; 248 249 ldo17_reg: LDO17 { 250 regulator-name = "P2.8V_LDO_OUT17"; 251 regulator-min-microvolt = <2800000>; 252 regulator-max-microvolt = <2800000>; 253 regulator-always-on; 254 op_mode = <0>; 255 }; 256 257 ldo25_reg: LDO25 { 258 regulator-name = "vdd_bridge"; 259 regulator-min-microvolt = <1200000>; 260 regulator-max-microvolt = <1200000>; 261 regulator-always-on; 262 op_mode = <1>; 263 }; 264 265 buck1_reg: BUCK1 { 266 regulator-name = "vdd_mif"; 267 regulator-min-microvolt = <950000>; 268 regulator-max-microvolt = <1300000>; 269 regulator-always-on; 270 regulator-boot-on; 271 op_mode = <3>; 272 }; 273 274 buck2_reg: BUCK2 { 275 regulator-name = "vdd_arm"; 276 regulator-min-microvolt = <850000>; 277 regulator-max-microvolt = <1350000>; 278 regulator-always-on; 279 regulator-boot-on; 280 op_mode = <3>; 281 }; 282 283 buck3_reg: BUCK3 { 284 regulator-name = "vdd_int"; 285 regulator-min-microvolt = <900000>; 286 regulator-max-microvolt = <1200000>; 287 regulator-always-on; 288 regulator-boot-on; 289 op_mode = <3>; 290 }; 291 292 buck4_reg: BUCK4 { 293 regulator-name = "vdd_g3d"; 294 regulator-min-microvolt = <850000>; 295 regulator-max-microvolt = <1300000>; 296 regulator-boot-on; 297 op_mode = <3>; 298 }; 299 300 buck5_reg: BUCK5 { 301 regulator-name = "P1.8V_BUCK_OUT5"; 302 regulator-min-microvolt = <1800000>; 303 regulator-max-microvolt = <1800000>; 304 regulator-always-on; 305 regulator-boot-on; 306 op_mode = <1>; 307 }; 308 309 buck6_reg: BUCK6 { 310 regulator-name = "P1.2V_BUCK_OUT6"; 311 regulator-min-microvolt = <1200000>; 312 regulator-max-microvolt = <1200000>; 313 regulator-always-on; 314 regulator-boot-on; 315 op_mode = <0>; 316 }; 317 318 buck9_reg: BUCK9 { 319 regulator-name = "vdd_ummc"; 320 regulator-min-microvolt = <950000>; 321 regulator-max-microvolt = <3000000>; 322 regulator-always-on; 323 regulator-boot-on; 324 op_mode = <3>; 325 }; 326 }; 327 }; 328}; 329 330&i2c_1 { 331 status = "okay"; 332 samsung,i2c-sda-delay = <100>; 333 samsung,i2c-max-bus-freq = <378000>; 334 335 trackpad@4b { 336 compatible = "atmel,maxtouch"; 337 reg = <0x4b>; 338 interrupt-parent = <&gpx1>; 339 interrupts = <2 IRQ_TYPE_EDGE_FALLING>; 340 pinctrl-names = "default"; 341 pinctrl-0 = <&trackpad_irq>; 342 linux,gpio-keymap = <KEY_RESERVED 343 KEY_RESERVED 344 KEY_RESERVED 345 KEY_RESERVED 346 KEY_RESERVED 347 BTN_LEFT>; 348 wakeup-source; 349 }; 350}; 351 352/* 353 * Disabled pullups since external part has its own pullups and 354 * double-pulling gets us out of spec in some cases. 355 */ 356&i2c2_bus { 357 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 358}; 359 360&i2c_2 { 361 status = "okay"; 362 /* used by HDMI DDC */ 363 samsung,i2c-sda-delay = <100>; 364 samsung,i2c-max-bus-freq = <66000>; 365}; 366 367&i2c_3 { 368 status = "okay"; 369 samsung,i2c-sda-delay = <100>; 370 samsung,i2c-max-bus-freq = <66000>; 371}; 372 373&i2c_4 { 374 status = "okay"; 375 samsung,i2c-sda-delay = <100>; 376 samsung,i2c-max-bus-freq = <66000>; 377 378 cros_ec: embedded-controller@1e { 379 compatible = "google,cros-ec-i2c"; 380 reg = <0x1e>; 381 interrupts = <6 IRQ_TYPE_NONE>; 382 interrupt-parent = <&gpx1>; 383 wakeup-source; 384 pinctrl-names = "default"; 385 pinctrl-0 = <&ec_irq>; 386 }; 387}; 388 389&i2c_5 { 390 status = "okay"; 391 samsung,i2c-sda-delay = <100>; 392 samsung,i2c-max-bus-freq = <66000>; 393}; 394 395&i2c_7 { 396 status = "okay"; 397 samsung,i2c-sda-delay = <100>; 398 samsung,i2c-max-bus-freq = <66000>; 399 400 temperature-sensor@4c { 401 compatible = "gmt,g781"; 402 reg = <0x4c>; 403 }; 404}; 405 406&i2c_8 { 407 status = "okay"; 408 /* used by HDMI PHY */ 409 samsung,i2c-sda-delay = <100>; 410 samsung,i2c-max-bus-freq = <378000>; 411}; 412 413&i2s0 { 414 status = "okay"; 415}; 416 417&mixer { 418 status = "okay"; 419}; 420 421&mmc_0 { 422 status = "okay"; 423 broken-cd; 424 card-detect-delay = <200>; 425 samsung,dw-mshc-ciu-div = <3>; 426 samsung,dw-mshc-sdr-timing = <2 3>; 427 samsung,dw-mshc-ddr-timing = <1 2>; 428 pinctrl-names = "default"; 429 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus4 &sd0_bus8>; 430 bus-width = <8>; 431 cap-mmc-highspeed; 432}; 433 434/* 435 * On Spring we've got SIP WiFi and so can keep drive strengths low to 436 * reduce EMI. 437 */ 438&mmc_1 { 439 status = "okay"; 440 broken-cd; 441 card-detect-delay = <200>; 442 samsung,dw-mshc-ciu-div = <3>; 443 samsung,dw-mshc-sdr-timing = <2 3>; 444 samsung,dw-mshc-ddr-timing = <1 2>; 445 pinctrl-names = "default"; 446 pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_cd &sd1_bus4>; 447 bus-width = <4>; 448 cap-sd-highspeed; 449}; 450 451&pinctrl_0 { 452 s5m8767_dvs: s5m8767-dvs { 453 samsung,pins = "gpd1-0", "gpd1-1", "gpd1-2"; 454 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 455 samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; 456 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 457 }; 458 459 dp_hpd_gpio: dp-hpd-gpio { 460 samsung,pins = "gpc3-0"; 461 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 462 samsung,pin-pud = <EXYNOS_PIN_PULL_UP>; 463 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 464 }; 465 466 trackpad_irq: trackpad-irq { 467 samsung,pins = "gpx1-2"; 468 samsung,pin-function = <EXYNOS_PIN_FUNC_F>; 469 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 470 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 471 }; 472 473 power_key_irq: power-key-irq { 474 samsung,pins = "gpx1-3"; 475 samsung,pin-function = <EXYNOS_PIN_FUNC_F>; 476 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 477 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 478 }; 479 480 ec_irq: ec-irq { 481 samsung,pins = "gpx1-6"; 482 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 483 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 484 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 485 }; 486 487 s5m8767_ds: s5m8767-ds { 488 samsung,pins = "gpx2-3", "gpx2-4", "gpx2-5"; 489 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 490 samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; 491 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 492 }; 493 494 s5m8767_irq: s5m8767-irq { 495 samsung,pins = "gpx3-2"; 496 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 497 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 498 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 499 }; 500 501 lid_irq: lid-irq { 502 samsung,pins = "gpx3-5"; 503 samsung,pin-function = <EXYNOS_PIN_FUNC_F>; 504 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 505 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 506 }; 507 508 hdmi_hpd_irq: hdmi-hpd-irq { 509 samsung,pins = "gpx3-7"; 510 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 511 samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; 512 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 513 }; 514}; 515 516&pinctrl_1 { 517 hsic_reset: hsic-reset { 518 samsung,pins = "gpe1-0"; 519 samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>; 520 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 521 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 522 }; 523}; 524 525&sd1_bus4 { 526 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 527}; 528 529&sd1_cd { 530 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 531}; 532 533&sd1_clk { 534 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 535}; 536 537&sd1_cmd { 538 samsung,pin-pud = <EXYNOS_PIN_PULL_UP>; 539 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 540}; 541 542&spi_1 { 543 status = "okay"; 544 samsung,spi-src-clk = <0>; 545 num-cs = <1>; 546}; 547 548#include "cros-ec-keyboard.dtsi" 549