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