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