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