1/* 2 * Google Snow board device tree source 3 * 4 * Copyright (c) 2012 Google, Inc 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 */ 10 11#include <dt-bindings/gpio/gpio.h> 12#include <dt-bindings/clock/maxim,max77686.h> 13#include <dt-bindings/interrupt-controller/irq.h> 14#include <dt-bindings/input/input.h> 15#include "exynos5250.dtsi" 16 17/ { 18 aliases { 19 i2c104 = &i2c_104; 20 }; 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 vbat: vbat-fixed-regulator { 55 compatible = "regulator-fixed"; 56 regulator-name = "vbat-supply"; 57 regulator-boot-on; 58 }; 59 60 i2c-arbitrator { 61 compatible = "i2c-arb-gpio-challenge"; 62 #address-cells = <1>; 63 #size-cells = <0>; 64 65 i2c-parent = <&i2c_4>; 66 67 our-claim-gpio = <&gpf0 3 GPIO_ACTIVE_LOW>; 68 their-claim-gpios = <&gpe0 4 GPIO_ACTIVE_LOW>; 69 slew-delay-us = <10>; 70 wait-retry-us = <3000>; 71 wait-free-us = <50000>; 72 73 pinctrl-names = "default"; 74 pinctrl-0 = <&arb_our_claim &arb_their_claim>; 75 76 /* Use ID 104 as a hint that we're on physical bus 4 */ 77 i2c_104: i2c@0 { 78 reg = <0>; 79 #address-cells = <1>; 80 #size-cells = <0>; 81 82 battery: sbs-battery@b { 83 compatible = "sbs,sbs-battery"; 84 reg = <0xb>; 85 sbs,poll-retry-count = <1>; 86 }; 87 88 cros_ec: embedded-controller@1e { 89 compatible = "google,cros-ec-i2c"; 90 reg = <0x1e>; 91 interrupts = <6 IRQ_TYPE_NONE>; 92 interrupt-parent = <&gpx1>; 93 pinctrl-names = "default"; 94 pinctrl-0 = <&ec_irq>; 95 wakeup-source; 96 }; 97 98 power-regulator@48 { 99 compatible = "ti,tps65090"; 100 reg = <0x48>; 101 102 /* 103 * Config irq to disable internal pulls 104 * even though we run in polling mode. 105 */ 106 pinctrl-names = "default"; 107 pinctrl-0 = <&tps65090_irq>; 108 109 vsys1-supply = <&vbat>; 110 vsys2-supply = <&vbat>; 111 vsys3-supply = <&vbat>; 112 infet1-supply = <&vbat>; 113 infet2-supply = <&vbat>; 114 infet3-supply = <&vbat>; 115 infet4-supply = <&vbat>; 116 infet5-supply = <&vbat>; 117 infet6-supply = <&vbat>; 118 infet7-supply = <&vbat>; 119 vsys-l1-supply = <&vbat>; 120 vsys-l2-supply = <&vbat>; 121 122 regulators { 123 dcdc1 { 124 ti,enable-ext-control; 125 }; 126 dcdc2 { 127 ti,enable-ext-control; 128 }; 129 dcdc3 { 130 ti,enable-ext-control; 131 }; 132 fet1: fet1 { 133 regulator-name = "vcd_led"; 134 ti,overcurrent-wait = <3>; 135 }; 136 tps65090_fet2: fet2 { 137 regulator-name = "video_mid"; 138 regulator-always-on; 139 ti,overcurrent-wait = <3>; 140 }; 141 fet3 { 142 regulator-name = "wwan_r"; 143 regulator-always-on; 144 ti,overcurrent-wait = <3>; 145 }; 146 fet4 { 147 regulator-name = "sdcard"; 148 ti,overcurrent-wait = <3>; 149 }; 150 fet5 { 151 regulator-name = "camout"; 152 regulator-always-on; 153 ti,overcurrent-wait = <3>; 154 }; 155 fet6: fet6 { 156 regulator-name = "lcd_vdd"; 157 ti,overcurrent-wait = <3>; 158 }; 159 tps65090_fet7: fet7 { 160 regulator-name = "video_mid_1a"; 161 regulator-always-on; 162 ti,overcurrent-wait = <3>; 163 }; 164 ldo1 { 165 }; 166 ldo2 { 167 }; 168 }; 169 170 charger { 171 compatible = "ti,tps65090-charger"; 172 }; 173 }; 174 }; 175 }; 176 177 sound { 178 samsung,i2s-controller = <&i2s0>; 179 }; 180 181 usb3_vbus_reg: regulator-usb3 { 182 compatible = "regulator-fixed"; 183 regulator-name = "P5.0V_USB3CON"; 184 regulator-min-microvolt = <5000000>; 185 regulator-max-microvolt = <5000000>; 186 gpio = <&gpx2 7 GPIO_ACTIVE_HIGH>; 187 pinctrl-names = "default"; 188 pinctrl-0 = <&usb3_vbus_en>; 189 enable-active-high; 190 }; 191 192 fixed-rate-clocks { 193 xxti { 194 compatible = "samsung,clock-xxti"; 195 clock-frequency = <24000000>; 196 }; 197 }; 198 199 backlight: backlight { 200 compatible = "pwm-backlight"; 201 pwms = <&pwm 0 1000000 0>; 202 brightness-levels = <0 100 500 1000 1500 2000 2500 2800>; 203 default-brightness-level = <7>; 204 enable-gpios = <&gpx3 0 GPIO_ACTIVE_HIGH>; 205 power-supply = <&fet1>; 206 pinctrl-0 = <&pwm0_out>; 207 pinctrl-names = "default"; 208 }; 209 210 panel: panel { 211 compatible = "auo,b116xw03"; 212 power-supply = <&fet6>; 213 backlight = <&backlight>; 214 215 port { 216 panel_in: endpoint { 217 remote-endpoint = <&bridge_out>; 218 }; 219 }; 220 }; 221 222 mmc3_pwrseq: mmc3_pwrseq { 223 compatible = "mmc-pwrseq-simple"; 224 reset-gpios = <&gpx0 2 GPIO_ACTIVE_LOW>, /* WIFI_RSTn */ 225 <&gpx0 1 GPIO_ACTIVE_LOW>; /* WIFI_EN */ 226 clocks = <&max77686 MAX77686_CLK_PMIC>; 227 clock-names = "ext_clock"; 228 }; 229}; 230 231&cpu0 { 232 cpu0-supply = <&buck2_reg>; 233}; 234 235&dp { 236 status = "okay"; 237 pinctrl-names = "default"; 238 pinctrl-0 = <&dp_hpd>; 239 samsung,color-space = <0>; 240 samsung,color-depth = <1>; 241 samsung,link-rate = <0x0a>; 242 samsung,lane-count = <2>; 243 hpd-gpios = <&gpx0 7 GPIO_ACTIVE_HIGH>; 244 245 ports { 246 port { 247 dp_out: endpoint { 248 remote-endpoint = <&bridge_in>; 249 }; 250 }; 251 }; 252}; 253 254&ehci { 255 samsung,vbus-gpio = <&gpx1 1 GPIO_ACTIVE_HIGH>; 256}; 257 258&fimd { 259 status = "okay"; 260 samsung,invert-vclk; 261}; 262 263&hdmi { 264 hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>; 265 pinctrl-names = "default"; 266 pinctrl-0 = <&hdmi_hpd_irq>; 267 phy = <&hdmiphy>; 268 ddc = <&i2c_2>; 269 hdmi-en-supply = <&tps65090_fet7>; 270 vdd-supply = <&ldo8_reg>; 271 vdd_osc-supply = <&ldo10_reg>; 272 vdd_pll-supply = <&ldo8_reg>; 273}; 274 275&i2c_0 { 276 status = "okay"; 277 samsung,i2c-sda-delay = <100>; 278 samsung,i2c-max-bus-freq = <378000>; 279 280 max77686: max77686@09 { 281 compatible = "maxim,max77686"; 282 interrupt-parent = <&gpx3>; 283 interrupts = <2 IRQ_TYPE_NONE>; 284 pinctrl-names = "default"; 285 pinctrl-0 = <&max77686_irq>; 286 wakeup-source; 287 reg = <0x09>; 288 #clock-cells = <1>; 289 290 voltage-regulators { 291 ldo1_reg: LDO1 { 292 regulator-name = "P1.0V_LDO_OUT1"; 293 regulator-min-microvolt = <1000000>; 294 regulator-max-microvolt = <1000000>; 295 regulator-always-on; 296 }; 297 298 ldo2_reg: LDO2 { 299 regulator-name = "P1.8V_LDO_OUT2"; 300 regulator-min-microvolt = <1800000>; 301 regulator-max-microvolt = <1800000>; 302 regulator-always-on; 303 }; 304 305 ldo3_reg: LDO3 { 306 regulator-name = "P1.8V_LDO_OUT3"; 307 regulator-min-microvolt = <1800000>; 308 regulator-max-microvolt = <1800000>; 309 regulator-always-on; 310 }; 311 312 ldo7_reg: LDO7 { 313 regulator-name = "P1.1V_LDO_OUT7"; 314 regulator-min-microvolt = <1100000>; 315 regulator-max-microvolt = <1100000>; 316 regulator-always-on; 317 }; 318 319 ldo8_reg: LDO8 { 320 regulator-name = "P1.0V_LDO_OUT8"; 321 regulator-min-microvolt = <1000000>; 322 regulator-max-microvolt = <1000000>; 323 regulator-always-on; 324 }; 325 326 ldo10_reg: LDO10 { 327 regulator-name = "P1.8V_LDO_OUT10"; 328 regulator-min-microvolt = <1800000>; 329 regulator-max-microvolt = <1800000>; 330 regulator-always-on; 331 }; 332 333 ldo12_reg: LDO12 { 334 regulator-name = "P3.0V_LDO_OUT12"; 335 regulator-min-microvolt = <3000000>; 336 regulator-max-microvolt = <3000000>; 337 regulator-always-on; 338 }; 339 340 ldo14_reg: LDO14 { 341 regulator-name = "P1.8V_LDO_OUT14"; 342 regulator-min-microvolt = <1800000>; 343 regulator-max-microvolt = <1800000>; 344 regulator-always-on; 345 }; 346 347 ldo15_reg: LDO15 { 348 regulator-name = "P1.0V_LDO_OUT15"; 349 regulator-min-microvolt = <1000000>; 350 regulator-max-microvolt = <1000000>; 351 regulator-always-on; 352 }; 353 354 ldo16_reg: LDO16 { 355 regulator-name = "P1.8V_LDO_OUT16"; 356 regulator-min-microvolt = <1800000>; 357 regulator-max-microvolt = <1800000>; 358 regulator-always-on; 359 }; 360 361 buck1_reg: BUCK1 { 362 regulator-name = "vdd_mif"; 363 regulator-min-microvolt = <950000>; 364 regulator-max-microvolt = <1300000>; 365 regulator-always-on; 366 regulator-boot-on; 367 }; 368 369 buck2_reg: BUCK2 { 370 regulator-name = "vdd_arm"; 371 regulator-min-microvolt = <850000>; 372 regulator-max-microvolt = <1350000>; 373 regulator-always-on; 374 regulator-boot-on; 375 }; 376 377 buck3_reg: BUCK3 { 378 regulator-name = "vdd_int"; 379 regulator-min-microvolt = <900000>; 380 regulator-max-microvolt = <1200000>; 381 regulator-always-on; 382 regulator-boot-on; 383 }; 384 385 buck4_reg: BUCK4 { 386 regulator-name = "vdd_g3d"; 387 regulator-min-microvolt = <850000>; 388 regulator-max-microvolt = <1300000>; 389 regulator-always-on; 390 regulator-boot-on; 391 }; 392 393 buck5_reg: BUCK5 { 394 regulator-name = "P1.8V_BUCK_OUT5"; 395 regulator-min-microvolt = <1800000>; 396 regulator-max-microvolt = <1800000>; 397 regulator-always-on; 398 regulator-boot-on; 399 }; 400 401 buck6_reg: BUCK6 { 402 regulator-name = "P1.35V_BUCK_OUT6"; 403 regulator-min-microvolt = <1350000>; 404 regulator-max-microvolt = <1350000>; 405 regulator-always-on; 406 }; 407 408 buck7_reg: BUCK7 { 409 regulator-name = "P2.0V_BUCK_OUT7"; 410 regulator-min-microvolt = <2000000>; 411 regulator-max-microvolt = <2000000>; 412 regulator-always-on; 413 }; 414 415 buck8_reg: BUCK8 { 416 regulator-name = "P2.85V_BUCK_OUT8"; 417 regulator-min-microvolt = <2850000>; 418 regulator-max-microvolt = <2850000>; 419 regulator-always-on; 420 }; 421 }; 422 }; 423}; 424 425&i2c_1 { 426 status = "okay"; 427 samsung,i2c-sda-delay = <100>; 428 samsung,i2c-max-bus-freq = <378000>; 429 430 trackpad@67 { 431 reg = <0x67>; 432 compatible = "cypress,cyapa"; 433 interrupts = <2 IRQ_TYPE_NONE>; 434 interrupt-parent = <&gpx1>; 435 wakeup-source; 436 }; 437}; 438 439/* 440 * Disabled pullups since external part has its own pullups and 441 * double-pulling gets us out of spec in some cases. 442 */ 443&i2c2_bus { 444 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 445}; 446 447&i2c_2 { 448 status = "okay"; 449 samsung,i2c-sda-delay = <100>; 450 samsung,i2c-max-bus-freq = <66000>; 451 452 hdmiddc@50 { 453 compatible = "samsung,exynos4210-hdmiddc"; 454 reg = <0x50>; 455 }; 456}; 457 458&i2c_3 { 459 status = "okay"; 460 samsung,i2c-sda-delay = <100>; 461 samsung,i2c-max-bus-freq = <66000>; 462}; 463 464&i2c_4 { 465 status = "okay"; 466 samsung,i2c-sda-delay = <100>; 467 samsung,i2c-max-bus-freq = <66000>; 468}; 469 470&i2c_5 { 471 status = "okay"; 472 samsung,i2c-sda-delay = <100>; 473 samsung,i2c-max-bus-freq = <66000>; 474}; 475 476&i2c_7 { 477 status = "okay"; 478 samsung,i2c-sda-delay = <100>; 479 samsung,i2c-max-bus-freq = <66000>; 480 481 ptn3460: lvds-bridge@20 { 482 compatible = "nxp,ptn3460"; 483 reg = <0x20>; 484 powerdown-gpios = <&gpy2 5 GPIO_ACTIVE_HIGH>; 485 reset-gpios = <&gpx1 5 GPIO_ACTIVE_HIGH>; 486 edid-emulation = <5>; 487 488 ports { 489 #address-cells = <1>; 490 #size-cells = <0>; 491 492 port@0 { 493 reg = <0>; 494 495 bridge_out: endpoint { 496 remote-endpoint = <&panel_in>; 497 }; 498 }; 499 500 port@1 { 501 reg = <1>; 502 503 bridge_in: endpoint { 504 remote-endpoint = <&dp_out>; 505 }; 506 }; 507 }; 508 }; 509}; 510 511&i2c_8 { 512 status = "okay"; 513 samsung,i2c-sda-delay = <100>; 514 samsung,i2c-max-bus-freq = <378000>; 515 516 hdmiphy: hdmiphy@38 { 517 compatible = "samsung,exynos4212-hdmiphy"; 518 reg = <0x38>; 519 }; 520}; 521 522&i2s0 { 523 status = "okay"; 524}; 525 526&mmc_0 { 527 status = "okay"; 528 num-slots = <1>; 529 non-removable; 530 samsung,dw-mshc-ciu-div = <3>; 531 samsung,dw-mshc-sdr-timing = <2 3>; 532 samsung,dw-mshc-ddr-timing = <1 2>; 533 pinctrl-names = "default"; 534 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus4 &sd0_bus8>; 535 bus-width = <8>; 536 cap-mmc-highspeed; 537}; 538 539&mmc_2 { 540 status = "okay"; 541 num-slots = <1>; 542 card-detect-delay = <200>; 543 samsung,dw-mshc-ciu-div = <3>; 544 samsung,dw-mshc-sdr-timing = <2 3>; 545 samsung,dw-mshc-ddr-timing = <1 2>; 546 pinctrl-names = "default"; 547 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>; 548 bus-width = <4>; 549 wp-gpios = <&gpc2 1 GPIO_ACTIVE_HIGH>; 550 cap-sd-highspeed; 551}; 552 553/* 554 * On Snow we've got SIP WiFi and so can keep drive strengths low to 555 * reduce EMI. 556 */ 557&mmc_3 { 558 status = "okay"; 559 num-slots = <1>; 560 non-removable; 561 cap-sdio-irq; 562 keep-power-in-suspend; 563 samsung,dw-mshc-ciu-div = <3>; 564 samsung,dw-mshc-sdr-timing = <2 3>; 565 samsung,dw-mshc-ddr-timing = <1 2>; 566 pinctrl-names = "default"; 567 pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4 &wifi_en &wifi_rst>; 568 bus-width = <4>; 569 cap-sd-highspeed; 570 mmc-pwrseq = <&mmc3_pwrseq>; 571}; 572 573&pinctrl_0 { 574 wifi_en: wifi-en { 575 samsung,pins = "gpx0-1"; 576 samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>; 577 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 578 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 579 }; 580 581 wifi_rst: wifi-rst { 582 samsung,pins = "gpx0-2"; 583 samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>; 584 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 585 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 586 }; 587 588 power_key_irq: power-key-irq { 589 samsung,pins = "gpx1-3"; 590 samsung,pin-function = <EXYNOS_PIN_FUNC_F>; 591 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 592 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 593 }; 594 595 ec_irq: ec-irq { 596 samsung,pins = "gpx1-6"; 597 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 598 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 599 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 600 }; 601 602 tps65090_irq: tps65090-irq { 603 samsung,pins = "gpx2-6"; 604 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 605 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 606 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 607 }; 608 609 usb3_vbus_en: usb3-vbus-en { 610 samsung,pins = "gpx2-7"; 611 samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>; 612 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 613 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 614 }; 615 616 max77686_irq: max77686-irq { 617 samsung,pins = "gpx3-2"; 618 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 619 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 620 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 621 }; 622 623 lid_irq: lid-irq { 624 samsung,pins = "gpx3-5"; 625 samsung,pin-function = <EXYNOS_PIN_FUNC_F>; 626 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 627 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 628 }; 629 630 hdmi_hpd_irq: hdmi-hpd-irq { 631 samsung,pins = "gpx3-7"; 632 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 633 samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; 634 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 635 }; 636}; 637 638&pinctrl_1 { 639 arb_their_claim: arb-their-claim { 640 samsung,pins = "gpe0-4"; 641 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 642 samsung,pin-pud = <EXYNOS_PIN_PULL_UP>; 643 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 644 }; 645 646 arb_our_claim: arb-our-claim { 647 samsung,pins = "gpf0-3"; 648 samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>; 649 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 650 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 651 }; 652}; 653 654&rtc { 655 status = "okay"; 656 clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>; 657 clock-names = "rtc", "rtc_src"; 658}; 659 660&sd3_bus4 { 661 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 662}; 663 664&sd3_clk { 665 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 666}; 667 668&sd3_cmd { 669 samsung,pin-pud = <EXYNOS_PIN_PULL_UP>; 670 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 671}; 672 673&spi_1 { 674 status = "okay"; 675 samsung,spi-src-clk = <0>; 676 num-cs = <1>; 677 cs-gpios = <&gpa2 5 GPIO_ACTIVE_HIGH>; 678}; 679 680&usbdrd_dwc3 { 681 dr_mode = "host"; 682}; 683 684&usbdrd_phy { 685 vbus-supply = <&usb3_vbus_reg>; 686}; 687 688#include "cros-ec-keyboard.dtsi" 689