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