1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Google Spring board device tree source 4 * 5 * Copyright (c) 2013 Google, Inc 6 * Copyright (c) 2014 SUSE LINUX Products GmbH 7 */ 8 9/dts-v1/; 10#include <dt-bindings/gpio/gpio.h> 11#include <dt-bindings/interrupt-controller/irq.h> 12#include <dt-bindings/input/input.h> 13#include "exynos5250.dtsi" 14 15/ { 16 model = "Google Spring"; 17 compatible = "google,spring", "samsung,exynos5250", "samsung,exynos5"; 18 19 aliases { 20 i2c0 = "/i2c@12C60000"; 21 i2c1 = "/i2c@12C70000"; 22 i2c2 = "/i2c@12C80000"; 23 i2c3 = "/i2c@12C90000"; 24 i2c4 = "/i2c@12CA0000"; 25 i2c5 = "/i2c@12CB0000"; 26 i2c6 = "/i2c@12CC0000"; 27 i2c7 = "/i2c@12CD0000"; 28 i2c104 = &cros_ec_ldo_tunnel; 29 spi0 = "/spi@12d20000"; 30 spi1 = "/spi@12d30000"; 31 spi2 = "/spi@12d40000"; 32 spi3 = "/spi@131a0000"; 33 spi4 = "/spi@131b0000"; 34 mmc0 = "/mmc@12000000"; 35 serial0 = "/serial@12C30000"; 36 console = "/serial@12C30000"; 37 i2s = "/sound@3830000"; 38 }; 39 40 memory { 41 reg = <0x40000000 0x80000000>; 42 }; 43 44 flash@0 { 45 spl { /* spl size override */ 46 size = <0x8000>; 47 }; 48 }; 49 50 chosen { 51 bootargs = "console=tty1"; 52 stdout-path = "serial3:115200n8"; 53 }; 54 55 board-rev { 56 compatible = "google,board-revision"; 57 google,board-rev-gpios = <&gpy4 0 0>, <&gpy4 1 0>, 58 <&gpy4 2 0>; 59 }; 60 61 i2c@12C90000 { 62 clock-frequency = <100000>; 63 tpm@20 { 64 reg = <0x20>; 65 compatible = "infineon,slb9645tt"; 66 }; 67 }; 68 69 mmc@12200000 { 70 samsung,bus-width = <8>; 71 samsung,timing = <1 3 3>; 72 samsung,removable = <0>; 73 }; 74 75 mmc@12210000 { 76 status = "disabled"; 77 }; 78 79 mmc@12220000 { 80 /* MMC2 pins are used as GPIO for eDP bridge */ 81 status = "disabled"; 82 }; 83 84 mmc@12230000 { 85 status = "disabled"; 86 }; 87 88 ehci@12110000 { 89 samsung,vbus-gpio = <&gpx1 1 GPIO_ACTIVE_HIGH>; 90 status = "okay"; 91 }; 92 93 xhci@12000000 { 94 samsung,vbus-gpio = <&gpx2 7 GPIO_ACTIVE_HIGH>; 95 }; 96 97 spi@12d30000 { 98 spi-max-frequency = <50000000>; 99 firmware_storage_spi: flash@0 { 100 compatible = "spi-flash"; 101 reg = <0>; 102 }; 103 }; 104 105 tmu@10060000 { 106 samsung,min-temp = <25>; 107 samsung,max-temp = <125>; 108 samsung,start-warning = <95>; 109 samsung,start-tripping = <105>; 110 samsung,hw-tripping = <110>; 111 samsung,efuse-min-value = <40>; 112 samsung,efuse-value = <55>; 113 samsung,efuse-max-value = <100>; 114 samsung,slope = <274761730>; 115 samsung,dc-value = <25>; 116 }; 117 118 fimd@14400000 { 119 samsung,vl-freq = <60>; 120 samsung,vl-col = <1366>; 121 samsung,vl-row = <768>; 122 samsung,vl-width = <1366>; 123 samsung,vl-height = <768>; 124 125 samsung,vl-clkp; 126 samsung,vl-dp; 127 samsung,vl-hsp; 128 samsung,vl-vsp; 129 130 samsung,vl-bpix = <4>; 131 132 samsung,vl-hspw = <32>; 133 samsung,vl-hbpd = <80>; 134 samsung,vl-hfpd = <48>; 135 samsung,vl-vspw = <5>; 136 samsung,vl-vbpd = <14>; 137 samsung,vl-vfpd = <3>; 138 samsung,vl-cmd-allow-len = <0xf>; 139 140 samsung,winid = <0>; 141 samsung,interface-mode = <1>; 142 samsung,dp-enabled = <1>; 143 samsung,dual-lcd-enabled = <0>; 144 }; 145 146 dp@145b0000 { 147 samsung,lt-status = <0>; 148 149 samsung,master-mode = <0>; 150 samsung,bist-mode = <0>; 151 samsung,bist-pattern = <0>; 152 samsung,h-sync-polarity = <0>; 153 samsung,v-sync-polarity = <0>; 154 samsung,interlaced = <0>; 155 samsung,color-space = <0>; 156 samsung,dynamic-range = <0>; 157 samsung,ycbcr-coeff = <0>; 158 samsung,color-depth = <1>; 159 }; 160 161 backlight: backlight { 162 compatible = "pwm-backlight"; 163 pwms = <&pwm 0 1000000 0>; 164 brightness-levels = <0 100 500 1000 1500 2000 2500 2800>; 165 default-brightness-level = <1>; 166 enable-gpios = <&gpx3 0 GPIO_ACTIVE_HIGH>; 167 power-supply = <&fet1>; 168 }; 169 170 panel: panel { 171 compatible = "auo,b116xw03"; 172 power-supply = <&fet6>; 173 backlight = <&backlight>; 174 175 port { 176 panel_in: endpoint { 177 remote-endpoint = <&bridge_out>; 178 }; 179 }; 180 }; 181}; 182 183&i2c_0 { 184 status = "okay"; 185 samsung,i2c-sda-delay = <100>; 186 samsung,i2c-max-bus-freq = <378000>; 187 188 s5m8767-pmic@66 { 189 compatible = "samsung,s5m8767-pmic"; 190 reg = <0x66>; 191 interrupt-parent = <&gpx3>; 192 wakeup-source; 193 194 s5m8767,pmic-buck-dvs-gpios = <&gpd1 0 GPIO_ACTIVE_LOW>, /* DVS1 */ 195 <&gpd1 1 GPIO_ACTIVE_LOW>, /* DVS2 */ 196 <&gpd1 2 GPIO_ACTIVE_LOW>; /* DVS3 */ 197 198 s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_LOW>, /* SET1 */ 199 <&gpx2 4 GPIO_ACTIVE_LOW>, /* SET2 */ 200 <&gpx2 5 GPIO_ACTIVE_LOW>; /* SET3 */ 201 202 /* 203 * The following arrays of DVS voltages are not used, since we are 204 * not using GPIOs to control PMIC bucks, but they must be defined 205 * to please the driver. 206 */ 207 s5m8767,pmic-buck2-dvs-voltage = <1350000>, <1300000>, 208 <1250000>, <1200000>, 209 <1150000>, <1100000>, 210 <1000000>, <950000>; 211 212 s5m8767,pmic-buck3-dvs-voltage = <1100000>, <1100000>, 213 <1100000>, <1100000>, 214 <1000000>, <1000000>, 215 <1000000>, <1000000>; 216 217 s5m8767,pmic-buck4-dvs-voltage = <1200000>, <1200000>, 218 <1200000>, <1200000>, 219 <1200000>, <1200000>, 220 <1200000>, <1200000>; 221 222 clocks { 223 compatible = "samsung,s5m8767-clk"; 224 #clock-cells = <1>; 225 clock-output-names = "en32khz_ap", 226 "en32khz_cp", 227 "en32khz_bt"; 228 }; 229 230 regulators { 231 ldo4_reg: LDO4 { 232 regulator-name = "P1.0V_LDO_OUT4"; 233 regulator-min-microvolt = <1000000>; 234 regulator-max-microvolt = <1000000>; 235 regulator-always-on; 236 op_mode = <0>; 237 }; 238 239 ldo5_reg: LDO5 { 240 regulator-name = "P1.8V_LDO_OUT5"; 241 regulator-min-microvolt = <1800000>; 242 regulator-max-microvolt = <1800000>; 243 regulator-always-on; 244 op_mode = <0>; 245 }; 246 247 ldo6_reg: LDO6 { 248 regulator-name = "vdd_mydp"; 249 regulator-min-microvolt = <1200000>; 250 regulator-max-microvolt = <1200000>; 251 regulator-always-on; 252 op_mode = <3>; 253 }; 254 255 ldo7_reg: LDO7 { 256 regulator-name = "P1.1V_LDO_OUT7"; 257 regulator-min-microvolt = <1100000>; 258 regulator-max-microvolt = <1100000>; 259 regulator-always-on; 260 op_mode = <3>; 261 }; 262 263 ldo8_reg: LDO8 { 264 regulator-name = "P1.0V_LDO_OUT8"; 265 regulator-min-microvolt = <1000000>; 266 regulator-max-microvolt = <1000000>; 267 regulator-always-on; 268 op_mode = <3>; 269 }; 270 271 ldo10_reg: LDO10 { 272 regulator-name = "P1.8V_LDO_OUT10"; 273 regulator-min-microvolt = <1800000>; 274 regulator-max-microvolt = <1800000>; 275 regulator-always-on; 276 op_mode = <3>; 277 }; 278 279 ldo11_reg: LDO11 { 280 regulator-name = "P1.8V_LDO_OUT11"; 281 regulator-min-microvolt = <1800000>; 282 regulator-max-microvolt = <1800000>; 283 regulator-always-on; 284 op_mode = <0>; 285 }; 286 287 ldo12_reg: LDO12 { 288 regulator-name = "P3.0V_LDO_OUT12"; 289 regulator-min-microvolt = <3000000>; 290 regulator-max-microvolt = <3000000>; 291 regulator-always-on; 292 op_mode = <3>; 293 }; 294 295 ldo13_reg: LDO13 { 296 regulator-name = "P1.8V_LDO_OUT13"; 297 regulator-min-microvolt = <1800000>; 298 regulator-max-microvolt = <1800000>; 299 regulator-always-on; 300 op_mode = <0>; 301 }; 302 303 ldo14_reg: LDO14 { 304 regulator-name = "P1.8V_LDO_OUT14"; 305 regulator-min-microvolt = <1800000>; 306 regulator-max-microvolt = <1800000>; 307 regulator-always-on; 308 op_mode = <3>; 309 }; 310 311 ldo15_reg: LDO15 { 312 regulator-name = "P1.0V_LDO_OUT15"; 313 regulator-min-microvolt = <1000000>; 314 regulator-max-microvolt = <1000000>; 315 regulator-always-on; 316 op_mode = <3>; 317 }; 318 319 ldo16_reg: LDO16 { 320 regulator-name = "P1.8V_LDO_OUT16"; 321 regulator-min-microvolt = <1800000>; 322 regulator-max-microvolt = <1800000>; 323 regulator-always-on; 324 op_mode = <3>; 325 }; 326 327 ldo17_reg: LDO17 { 328 regulator-name = "P1.2V_LDO_OUT17"; 329 regulator-min-microvolt = <1200000>; 330 regulator-max-microvolt = <1200000>; 331 regulator-always-on; 332 op_mode = <0>; 333 }; 334 335 ldo25_reg: LDO25 { 336 regulator-name = "vdd_bridge"; 337 regulator-min-microvolt = <1200000>; 338 regulator-max-microvolt = <1200000>; 339 regulator-always-on; 340 op_mode = <1>; 341 }; 342 343 buck1_reg: BUCK1 { 344 regulator-name = "vdd_mif"; 345 regulator-min-microvolt = <950000>; 346 regulator-max-microvolt = <1300000>; 347 regulator-always-on; 348 regulator-boot-on; 349 op_mode = <3>; 350 }; 351 352 buck2_reg: BUCK2 { 353 regulator-name = "vdd_arm"; 354 regulator-min-microvolt = <850000>; 355 regulator-max-microvolt = <1350000>; 356 regulator-always-on; 357 regulator-boot-on; 358 op_mode = <3>; 359 }; 360 361 buck3_reg: BUCK3 { 362 regulator-name = "vdd_int"; 363 regulator-min-microvolt = <900000>; 364 regulator-max-microvolt = <1200000>; 365 regulator-always-on; 366 regulator-boot-on; 367 op_mode = <3>; 368 }; 369 370 buck4_reg: BUCK4 { 371 regulator-name = "vdd_g3d"; 372 regulator-min-microvolt = <850000>; 373 regulator-max-microvolt = <1300000>; 374 regulator-boot-on; 375 op_mode = <3>; 376 }; 377 378 buck5_reg: BUCK5 { 379 regulator-name = "P1.8V_BUCK_OUT5"; 380 regulator-min-microvolt = <1800000>; 381 regulator-max-microvolt = <1800000>; 382 regulator-always-on; 383 regulator-boot-on; 384 op_mode = <1>; 385 }; 386 387 buck6_reg: BUCK6 { 388 regulator-name = "P1.2V_BUCK_OUT6"; 389 regulator-min-microvolt = <2050000>; 390 regulator-max-microvolt = <2050000>; 391 regulator-always-on; 392 regulator-boot-on; 393 op_mode = <0>; 394 }; 395 396 buck9_reg: BUCK9 { 397 regulator-name = "vdd_ummc"; 398 regulator-min-microvolt = <950000>; 399 regulator-max-microvolt = <3000000>; 400 regulator-always-on; 401 regulator-boot-on; 402 op_mode = <3>; 403 }; 404 }; 405 }; 406}; 407 408&dp { 409 status = "okay"; 410 samsung,color-space = <0>; 411 samsung,dynamic-range = <0>; 412 samsung,ycbcr-coeff = <0>; 413 samsung,color-depth = <1>; 414 samsung,link-rate = <0x0a>; 415 samsung,lane-count = <1>; 416 samsung,hpd-gpio = <&gpc3 0 GPIO_ACTIVE_HIGH>; 417 418 ports { 419 port@0 { 420 dp_out: endpoint { 421 remote-endpoint = <&bridge_in>; 422 }; 423 }; 424 }; 425}; 426 427&i2c_1 { 428 status = "okay"; 429 samsung,i2c-sda-delay = <100>; 430 samsung,i2c-max-bus-freq = <378000>; 431}; 432 433&i2c_2 { 434 status = "okay"; 435 samsung,i2c-sda-delay = <100>; 436 samsung,i2c-max-bus-freq = <66000>; 437}; 438 439&i2c_3 { 440 status = "okay"; 441 samsung,i2c-sda-delay = <100>; 442 samsung,i2c-max-bus-freq = <66000>; 443}; 444 445&i2c_4 { 446 status = "okay"; 447 samsung,i2c-sda-delay = <100>; 448 samsung,i2c-max-bus-freq = <66000>; 449 clock-frequency = <66000>; 450 451 cros_ec: embedded-controller { 452 compatible = "google,cros-ec-i2c"; 453 reg = <0x1e>; 454 interrupts = <6 IRQ_TYPE_NONE>; 455 interrupt-parent = <&gpx1>; 456 wakeup-source; 457 u-boot,i2c-offset-len = <0>; 458 ec-interrupt = <&gpx1 6 GPIO_ACTIVE_LOW>; 459 cros_ec_ldo_tunnel: cros-ec-ldo-tunnel { 460 compatible = "google,cros-ec-ldo-tunnel"; 461 #address-cells = <1>; 462 #size-cells = <0>; 463 power-regulator { 464 compatible = "ti,tps65090"; 465 reg = <0x48>; 466 467 regulators { 468 dcdc1 { 469 ti,enable-ext-control; 470 }; 471 dcdc2 { 472 ti,enable-ext-control; 473 }; 474 dcdc3 { 475 ti,enable-ext-control; 476 }; 477 fet1: fet1 { 478 regulator-name = "vcd_led"; 479 ti,overcurrent-wait = <3>; 480 }; 481 tps65090_fet2: fet2 { 482 regulator-name = "video_mid"; 483 regulator-always-on; 484 ti,overcurrent-wait = <3>; 485 }; 486 fet3 { 487 regulator-name = "wwan_r"; 488 regulator-always-on; 489 ti,overcurrent-wait = <3>; 490 }; 491 fet4 { 492 regulator-name = "sdcard"; 493 ti,overcurrent-wait = <3>; 494 }; 495 fet5 { 496 regulator-name = "camout"; 497 regulator-always-on; 498 ti,overcurrent-wait = <3>; 499 }; 500 fet6: fet6 { 501 regulator-name = "lcd_vdd"; 502 ti,overcurrent-wait = <3>; 503 }; 504 tps65090_fet7: fet7 { 505 regulator-name = "video_mid_1a"; 506 regulator-always-on; 507 ti,overcurrent-wait = <3>; 508 }; 509 ldo1 { 510 }; 511 ldo2 { 512 }; 513 }; 514 }; 515 }; 516 }; 517}; 518 519&i2c_5 { 520 status = "okay"; 521 samsung,i2c-sda-delay = <100>; 522 samsung,i2c-max-bus-freq = <66000>; 523}; 524 525&i2c_7 { 526 status = "okay"; 527 samsung,i2c-sda-delay = <100>; 528 samsung,i2c-max-bus-freq = <66000>; 529 530 ps8622-bridge@8 { 531 compatible = "parade,ps8622"; 532 reg = <0x8>; 533 sleep-gpios = <&gpc3 6 GPIO_ACTIVE_LOW>; 534 reset-gpios = <&gpc3 1 GPIO_ACTIVE_LOW>; 535 hotplug-gpios = <&gpc3 0 GPIO_ACTIVE_HIGH>; 536 power-supply = <&ldo6_reg>; 537 parade,regs = /bits/ 8 < 538 0x02 0xa1 0x01 /* HPD low */ 539 /* 540 * SW setting: [1:0] SW output 1.2V voltage is 541 * lower to 96% 542 */ 543 0x04 0x14 0x01 544 /* RCO SS setting: [5:4] = b01 0.5%, b10 1%, b11 1.5% */ 545 0x04 0xe3 0x20 546 0x04 0xe2 0x80 /* [7] RCO SS enable */ 547 /* 548 * RPHY Setting: [3:2] CDR tune wait cycle before 549 * measure for fine tune b00: 1us, 550 * 01: 0.5us, 10:2us, 11:4us 551 */ 552 0x04 0x8a 0x0c 553 0x04 0x89 0x08 /* [3] RFD always on */ 554 /* 555 * CTN lock in/out: 20000ppm/80000ppm. Lock out 2 times 556 */ 557 0x04 0x71 0x2d 558 /* 2.7G CDR settings */ 559 0x04 0x7d 0x07 /* NOF=40LSB for HBR CDR setting */ 560 0x04 0x7b 0x00 /* [1:0] Fmin=+4bands */ 561 0x04 0x7a 0xfd /* [7:5] DCO_FTRNG=+-40% */ 562 /* 563 * 1.62G CDR settings: 564 * [5:2]NOF=64LSB [1:0]DCO scale is 2/5 565 */ 566 0x04 0xc0 0x12 567 0x04 0xc1 0x92 /* Gitune=-37% */ 568 0x04 0xc2 0x1c /* Fbstep=100% */ 569 0x04 0x32 0x80 /* [7] LOS signal disable */ 570 /* RPIO Setting */ 571 /* [7:4] LVDS driver bias current 75% (250mV swing) */ 572 0x04 0x00 0xb0 573 /* [7:6] Right-bar GPIO output strength is 8mA */ 574 0x04 0x15 0x40 575 /* EQ Training State Machine Setting */ 576 0x04 0x54 0x10 /* RCO calibration start */ 577 /* [4:0] MAX_LANE_COUNT set to one lane */ 578 0x01 0x02 0x81 579 /* [4:0] LANE_COUNT_SET set to one lane */ 580 0x01 0x21 0x81 581 0x00 0x52 0x20 582 0x00 0xf1 0x03 /* HPD CP toggle enable */ 583 0x00 0x62 0x41 584 /* Counter number add 1ms counter delay */ 585 0x00 0xf6 0x01 586 /* 587 * [6]PWM function control by DPCD0040f[7], default 588 * is PWM block always works 589 */ 590 0x00 0x77 0x06 591 0x00 0x4c 0x04 592 /* 593 * 04h Adjust VTotal tolerance to fix the 30Hz no- 594 * display issue 595 * DPCD00400='h00 Parade OUI = 'h001cf8 596 */ 597 0x01 0xc0 0x00 598 0x01 0xc1 0x1c /* DPCD00401='h1c */ 599 0x01 0xc2 0xf8 /* DPCD00402='hf8 */ 600 /* DPCD403~408 = ASCII code D2SLV5='h4432534c5635 */ 601 0x01 0xc3 0x44 602 0x01 0xc4 0x32 /* DPCD404 */ 603 0x01 0xc5 0x53 /* DPCD405 */ 604 0x01 0xc6 0x4c /* DPCD406 */ 605 0x01 0xc7 0x56 /* DPCD407 */ 606 0x01 0xc8 0x35 /* DPCD408 */ 607 /* DPCD40A Initial Code major revision '01' */ 608 0x01 0xca 0x01 609 /* DPCD40B Initial Code minor revision '05' */ 610 0x01 0xcb 0x05 611 0x01 0xa5 0xa0 /* DPCD720, Select internal PWM */ 612 /* 613 * 0xff for 100% PWM of brightness, 0h for 0% brightness 614 */ 615 0x01 0xa7 0x00 616 /* 617 * Set LVDS output as 6bit-VESA mapping, single LVDS 618 * channel 619 */ 620 0x01 0xcc 0x13 621 0x02 0xb1 0x20 /* Enable SSC set by register */ 622 /* Set SSC enabled and +/-1% central spreading */ 623 0x04 0x10 0x16 624 0x04 0x59 0x60 /* MPU Clock source: LC => RCO */ 625 0x04 0x54 0x14 /* LC -> RCO */ 626 0x02 0xa1 0x91>; /* HPD high */ 627 ports { 628 port@0 { 629 bridge_out: endpoint { 630 remote-endpoint = <&panel_in>; 631 }; 632 }; 633 634 port@1 { 635 bridge_in: endpoint { 636 remote-endpoint = <&dp_out>; 637 }; 638 }; 639 }; 640 }; 641 642 soundcodec@20 { 643 reg = <0x20>; 644 compatible = "maxim,max98088-codec"; 645 }; 646}; 647 648#include "cros-ec-keyboard.dtsi" 649