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