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