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