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