1/* 2 * Copyright 2011 ST-Ericsson AB 3 * 4 * The code contained herein is licensed under the GNU General Public 5 * License. You may obtain a copy of the GNU General Public License 6 * Version 2 or later at the following locations: 7 * 8 * http://www.opensource.org/licenses/gpl-license.html 9 * http://www.gnu.org/copyleft/gpl.html 10 */ 11 12/dts-v1/; 13#include "ste-dbx5x0.dtsi" 14#include "ste-href-ab8500.dtsi" 15#include "ste-href-family-pinctrl.dtsi" 16 17/ { 18 model = "Calao Systems Snowball platform with device tree"; 19 compatible = "calaosystems,snowball-a9500", "st-ericsson,u9500"; 20 21 /* This stablilizes the serial port enumeration */ 22 aliases { 23 serial0 = &ux500_serial0; 24 serial1 = &ux500_serial1; 25 serial2 = &ux500_serial2; 26 }; 27 28 memory { 29 reg = <0x00000000 0x20000000>; 30 }; 31 32 en_3v3_reg: en_3v3 { 33 compatible = "regulator-fixed"; 34 regulator-name = "en-3v3-fixed-supply"; 35 regulator-min-microvolt = <3300000>; 36 regulator-max-microvolt = <3300000>; 37 /* AB8500 GPIOs start from 1 - offset 25 is GPIO26. */ 38 gpio = <&ab8500_gpio 25 0x4>; 39 startup-delay-us = <5000>; 40 enable-active-high; 41 }; 42 43 gpio_keys { 44 compatible = "gpio-keys"; 45 #address-cells = <1>; 46 #size-cells = <0>; 47 48 button@1 { 49 debounce-interval = <50>; 50 wakeup-source; 51 linux,code = <2>; 52 label = "userpb"; 53 gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>; 54 }; 55 button@2 { 56 debounce-interval = <50>; 57 wakeup-source; 58 linux,code = <3>; 59 label = "extkb1"; 60 gpios = <&gpio4 23 GPIO_ACTIVE_HIGH>; 61 }; 62 button@3 { 63 debounce-interval = <50>; 64 wakeup-source; 65 linux,code = <4>; 66 label = "extkb2"; 67 gpios = <&gpio4 24 GPIO_ACTIVE_HIGH>; 68 }; 69 button@4 { 70 debounce-interval = <50>; 71 wakeup-source; 72 linux,code = <5>; 73 label = "extkb3"; 74 gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>; 75 }; 76 button@5 { 77 debounce-interval = <50>; 78 wakeup-source; 79 linux,code = <6>; 80 label = "extkb4"; 81 gpios = <&gpio5 2 GPIO_ACTIVE_HIGH>; 82 }; 83 }; 84 85 leds { 86 compatible = "gpio-leds"; 87 pinctrl-names = "default"; 88 pinctrl-0 = <&gpioled_snowball_mode>; 89 used-led { 90 label = "user_led"; 91 gpios = <&gpio4 14 GPIO_ACTIVE_HIGH>; 92 default-state = "on"; 93 linux,default-trigger = "heartbeat"; 94 }; 95 }; 96 97 soc { 98 /* Name the GPIO muxed rails on the Snowball board */ 99 gpio@8012e000 { 100 /* GPIOs 0 - 31 */ 101 gpio-line-names = "", "", "", "", "", "", "", "", 102 "", "", "", "", "", "", "", "", 103 "", "", "", "", "", "", "", "", 104 "", "", "", "", "", "", "", 105 "AP_GPIO31"; 106 }; 107 108 gpio@8012e080 { 109 /* GPIOs 32 - 63 */ 110 gpio-line-names = "USR PB", "", "", "", "", "", "", "", 111 "", "", "", "", "", "", "", "", 112 "", "", "", "", "", "", "", "", 113 "", "", "", "", "", "", "", ""; 114 }; 115 116 gpio@8000e000 { 117 /* GPIOs 64 - 95 */ 118 gpio-line-names = "", "", "", "", "AP_GPIO68", "", "", "", 119 "", "", "", "", "", "", "", "", 120 "", "", "", "", "", "", "", "", 121 "", "", "", "", "", "", "", ""; 122 }; 123 124 gpio@8000e100 { 125 /* GPIOs 128 - 159 */ 126 gpio-line-names = "", "", "", "", "", "", "", "", 127 "", "", "", "", "IRQ_LAN", "RSTn_LAN", 128 "USR_LED", "", "", "", "", "", "", 129 "", "", "AP_GPIO151", "AP_GPIO152", 130 "", "", "", "", "", "", ""; 131 }; 132 133 gpio@8000e180 { 134 /* GPIOs 160 - 191 */ 135 gpio-line-names = "", "AP_GPIO161", "AP_GPIO162", 136 "ACCELEROMETER_INT1_RDY", 137 "ACCELEROMETER_INT2", "MAG_DRDY", 138 "GYRO_DRDY", "RSTn_MLC", "RSTn_SLC", 139 "GYRO_INT", "UART_WAKE", "GBF_RESET", 140 "", "", "", "", 141 "", "", "", "", "", "", "", "", 142 "", "", "", "", "", "", "", ""; 143 }; 144 145 gpio@8011e000 { 146 /* GPIOs 192 - 223 */ 147 gpio-line-names = "HDTV_INTn", "", "", "", "HDTV_RST", 148 "", "", "", "", "", "", "", "", "", 149 "", "", "", "", "", "", "", "", "", 150 "WLAN_RESETN", "WLAN_IRQ", "MMC_EN", 151 "MMC_CD", "", "", "", "", ""; 152 }; 153 154 gpio@8011e080 { 155 /* GPIOs 224 - 255 */ 156 gpio-line-names = "", "", "", "", "SD_SEL", "", "", "", 157 "", "", "", "", "", "", "", "", 158 "", "", "", "", "", "", "", "", 159 "", "", "", "", "", "", "", ""; 160 }; 161 162 msp0: msp@80123000 { 163 pinctrl-names = "default"; 164 pinctrl-0 = <&msp0_default_mode>; 165 status = "okay"; 166 }; 167 168 msp1: msp@80124000 { 169 pinctrl-names = "default"; 170 pinctrl-0 = <&msp1_default_mode>; 171 status = "okay"; 172 }; 173 174 msp2: msp@80117000 { 175 pinctrl-names = "default"; 176 pinctrl-0 = <&msp2_default_mode>; 177 }; 178 179 msp3: msp@80125000 { 180 status = "okay"; 181 }; 182 183 external-bus@50000000 { 184 status = "okay"; 185 186 ethernet@0 { 187 compatible = "smsc,lan9115"; 188 reg = <0 0x10000>; 189 interrupts = <12 IRQ_TYPE_EDGE_RISING>; 190 interrupt-parent = <&gpio4>; 191 vdd33a-supply = <&en_3v3_reg>; 192 vddvario-supply = <&db8500_vape_reg>; 193 pinctrl-names = "default"; 194 pinctrl-0 = <ð_snowball_mode>; 195 196 reg-shift = <1>; 197 reg-io-width = <2>; 198 smsc,force-internal-phy; 199 smsc,irq-active-high; 200 smsc,irq-push-pull; 201 202 clocks = <&prcc_pclk 3 0>; 203 }; 204 }; 205 206 /* ST6G3244ME level translator for 1.8/2.9 V */ 207 vmmci: regulator-gpio { 208 compatible = "regulator-gpio"; 209 210 /* GPIO228 SD_SEL */ 211 gpios = <&gpio7 4 GPIO_ACTIVE_HIGH>; 212 /* GPIO217 MMC_EN */ 213 enable-gpio = <&gpio6 25 GPIO_ACTIVE_HIGH>; 214 enable-active-high; 215 216 regulator-min-microvolt = <1800000>; 217 regulator-max-microvolt = <2900000>; 218 regulator-name = "mmci-reg"; 219 regulator-type = "voltage"; 220 221 startup-delay-us = <100>; 222 223 states = <1800000 0x1 224 2900000 0x0>; 225 }; 226 227 // External Micro SD slot 228 sdi0_per1@80126000 { 229 arm,primecell-periphid = <0x10480180>; 230 max-frequency = <100000000>; 231 bus-width = <4>; 232 cap-sd-highspeed; 233 cap-mmc-highspeed; 234 sd-uhs-sdr12; 235 sd-uhs-sdr25; 236 /* All direction control is used */ 237 st,sig-dir-cmd; 238 st,sig-dir-dat0; 239 st,sig-dir-dat2; 240 st,sig-dir-dat31; 241 st,sig-pin-fbclk; 242 full-pwr-cycle; 243 vmmc-supply = <&ab8500_ldo_aux3_reg>; 244 vqmmc-supply = <&vmmci>; 245 pinctrl-names = "default", "sleep"; 246 pinctrl-0 = <&sdi0_default_mode>; 247 pinctrl-1 = <&sdi0_sleep_mode>; 248 249 /* GPIO218 MMC_CD */ 250 cd-gpios = <&gpio6 26 GPIO_ACTIVE_LOW>; 251 252 status = "okay"; 253 }; 254 255 // WLAN SDIO channel 256 sdi1_per2@80118000 { 257 arm,primecell-periphid = <0x10480180>; 258 max-frequency = <100000000>; 259 bus-width = <4>; 260 pinctrl-names = "default", "sleep"; 261 pinctrl-0 = <&sdi1_default_mode>; 262 pinctrl-1 = <&sdi1_sleep_mode>; 263 264 status = "okay"; 265 }; 266 267 // Unused PoP eMMC - register and put it to sleep by default */ 268 sdi2_per3@80005000 { 269 arm,primecell-periphid = <0x10480180>; 270 pinctrl-names = "default"; 271 pinctrl-0 = <&sdi2_sleep_mode>; 272 273 status = "okay"; 274 }; 275 276 // On-board eMMC 277 sdi4_per2@80114000 { 278 arm,primecell-periphid = <0x10480180>; 279 max-frequency = <100000000>; 280 bus-width = <8>; 281 cap-mmc-highspeed; 282 vmmc-supply = <&ab8500_ldo_aux2_reg>; 283 pinctrl-names = "default", "sleep"; 284 pinctrl-0 = <&sdi4_default_mode>; 285 pinctrl-1 = <&sdi4_sleep_mode>; 286 287 status = "okay"; 288 }; 289 290 uart@80120000 { 291 pinctrl-names = "default", "sleep"; 292 pinctrl-0 = <&uart0_default_mode>; 293 pinctrl-1 = <&uart0_sleep_mode>; 294 status = "okay"; 295 }; 296 297 /* This UART is unused and thus left disabled */ 298 uart@80121000 { 299 pinctrl-names = "default", "sleep"; 300 pinctrl-0 = <&uart1_default_mode>; 301 pinctrl-1 = <&uart1_sleep_mode>; 302 }; 303 304 uart@80007000 { 305 pinctrl-names = "default", "sleep"; 306 pinctrl-0 = <&uart2_default_mode>; 307 pinctrl-1 = <&uart2_sleep_mode>; 308 status = "okay"; 309 }; 310 311 i2c@80004000 { 312 pinctrl-names = "default","sleep"; 313 pinctrl-0 = <&i2c0_default_mode>; 314 pinctrl-1 = <&i2c0_sleep_mode>; 315 }; 316 317 i2c@80122000 { 318 pinctrl-names = "default","sleep"; 319 pinctrl-0 = <&i2c1_default_mode>; 320 pinctrl-1 = <&i2c1_sleep_mode>; 321 }; 322 323 i2c@80128000 { 324 pinctrl-names = "default","sleep"; 325 pinctrl-0 = <&i2c2_default_mode>; 326 pinctrl-1 = <&i2c2_sleep_mode>; 327 lsm303dlh@18 { 328 /* Accelerometer */ 329 compatible = "st,lsm303dlh-accel"; 330 st,drdy-int-pin = <1>; 331 reg = <0x18>; 332 vdd-supply = <&ab8500_ldo_aux1_reg>; 333 vddio-supply = <&db8500_vsmps2_reg>; 334 pinctrl-names = "default"; 335 pinctrl-0 = <&accel_snowball_mode>; 336 interrupt-parent = <&gpio5>; 337 interrupts = <3 IRQ_TYPE_EDGE_RISING>, /* INT1 */ 338 <4 IRQ_TYPE_EDGE_RISING>; /* INT2 */ 339 }; 340 lsm303dlh@1e { 341 /* Magnetometer */ 342 compatible = "st,lsm303dlh-magn"; 343 reg = <0x1e>; 344 vdd-supply = <&ab8500_ldo_aux1_reg>; 345 vddio-supply = <&db8500_vsmps2_reg>; 346 pinctrl-names = "default"; 347 pinctrl-0 = <&magneto_snowball_mode>; 348 interrupt-parent = <&gpio5>; 349 interrupts = <5 IRQ_TYPE_EDGE_RISING>; /* DRDY line */ 350 }; 351 l3g4200d@68 { 352 /* Gyroscope */ 353 compatible = "st,l3g4200d-gyro"; 354 st,drdy-int-pin = <2>; 355 reg = <0x68>; 356 vdd-supply = <&ab8500_ldo_aux1_reg>; 357 vddio-supply = <&db8500_vsmps2_reg>; 358 pinctrl-names = "default"; 359 pinctrl-0 = <&gyro_snowball_mode>; 360 interrupt-parent = <&gpio5>; 361 interrupts = <6 IRQ_TYPE_EDGE_RISING>, /* DRDY line */ 362 <9 IRQ_TYPE_EDGE_RISING>; /* INT1 */ 363 }; 364 lsp001wm@5c { 365 /* Barometer/pressure sensor */ 366 compatible = "st,lps001wp-press"; 367 reg = <0x5c>; 368 vdd-supply = <&ab8500_ldo_aux1_reg>; 369 vddio-supply = <&db8500_vsmps2_reg>; 370 }; 371 }; 372 373 i2c@80110000 { 374 pinctrl-names = "default","sleep"; 375 pinctrl-0 = <&i2c3_default_mode>; 376 pinctrl-1 = <&i2c3_sleep_mode>; 377 }; 378 379 ssp@80002000 { 380 pinctrl-names = "default"; 381 pinctrl-0 = <&ssp0_snowball_mode>; 382 }; 383 384 cpufreq-cooling { 385 status = "okay"; 386 }; 387 388 prcmu@80157000 { 389 cpufreq { 390 status = "okay"; 391 }; 392 393 thermal@801573c0 { 394 num-trips = <4>; 395 396 trip0-temp = <70000>; 397 trip0-type = "active"; 398 trip0-cdev-num = <1>; 399 trip0-cdev-name0 = "thermal-cpufreq-0"; 400 401 trip1-temp = <75000>; 402 trip1-type = "active"; 403 trip1-cdev-num = <1>; 404 trip1-cdev-name0 = "thermal-cpufreq-0"; 405 406 trip2-temp = <80000>; 407 trip2-type = "active"; 408 trip2-cdev-num = <1>; 409 trip2-cdev-name0 = "thermal-cpufreq-0"; 410 411 trip3-temp = <85000>; 412 trip3-type = "critical"; 413 trip3-cdev-num = <0>; 414 415 status = "okay"; 416 }; 417 418 ab8500 { 419 ab8500-gpio { 420 /* 421 * AB8500 GPIOs are numbered starting from 1, so the first 422 * index 0 is what in the datasheet is called "GPIO1", and 423 * the second is "GPIO2" and so forth. Confusingly, the 424 * Snowball schematic then names the "GPIO2" line "PM_GPIO1". 425 * while later naming "GPIO4" as "PM_GPIO4". 426 */ 427 gpio-line-names = "", /* AB8500 GPIO1 */ 428 "PM_GPIO1", /* AB8500 GPIO2 */ 429 "WLAN_CLK_REQ", /* AB8500 GPIO3 */ 430 "PM_GPIO4", /* AB8500 GPIO4 */ 431 "", "", "", "", "", "", "", "", "", "", "", 432 "EN_3V6", /* AB8500 GPIO16 */ 433 "", "", "", "" ,"", "", "", "", "", 434 "EN_3V3", /* AB8500 GPIO26 */ 435 "", "", "", "", "", "", "", "", "", "", "", "", "", 436 "PM_GPIO40", /* AB8500 GPIO40 */ 437 "PM_GPIO41", /* AB8500 GPIO41 */ 438 "PM_GPIO42"; /* AB8500 GPIO42 */ 439 }; 440 441 ab8500_usb { 442 pinctrl-names = "default", "sleep"; 443 pinctrl-0 = <&musb_default_mode>; 444 pinctrl-1 = <&musb_sleep_mode>; 445 }; 446 447 ext_regulators: ab8500-ext-regulators { 448 ab8500_ext1_reg: ab8500_ext1 { 449 regulator-name = "ab8500-ext-supply1"; 450 }; 451 452 ab8500_ext2_reg_reg: ab8500_ext2 { 453 regulator-name = "ab8500-ext-supply2"; 454 }; 455 456 ab8500_ext3_reg_reg: ab8500_ext3 { 457 regulator-name = "ab8500-ext-supply3"; 458 }; 459 }; 460 461 ab8500-regulators { 462 ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { 463 regulator-name = "V-DISPLAY"; 464 }; 465 466 ab8500_ldo_aux2_reg: ab8500_ldo_aux2 { 467 regulator-name = "V-eMMC1"; 468 }; 469 470 ab8500_ldo_aux3_reg: ab8500_ldo_aux3 { 471 regulator-name = "V-MMC-SD"; 472 }; 473 474 ab8500_ldo_intcore_reg: ab8500_ldo_intcore { 475 regulator-name = "V-INTCORE"; 476 }; 477 478 ab8500_ldo_tvout_reg: ab8500_ldo_tvout { 479 regulator-name = "V-TVOUT"; 480 }; 481 482 ab8500_ldo_usb_reg: ab8500_ldo_usb { 483 regulator-name = "dummy"; 484 }; 485 486 ab8500_ldo_audio_reg: ab8500_ldo_audio { 487 regulator-name = "V-AUD"; 488 }; 489 490 ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 { 491 regulator-name = "V-AMIC1"; 492 }; 493 494 ab8500_ldo_anamic2_reg: ab8500_ldo_anamic2 { 495 regulator-name = "V-AMIC2"; 496 }; 497 498 ab8500_ldo_dmic_reg: ab8500_ldo_dmic { 499 regulator-name = "V-DMIC"; 500 }; 501 502 ab8500_ldo_ana_reg: ab8500_ldo_ana { 503 regulator-name = "V-CSI/DSI"; 504 }; 505 }; 506 }; 507 }; 508 509 pinctrl { 510 /* 511 * Set this up using hogs, as time goes by and as seems fit, these 512 * can be moved over to being controlled by respective device. 513 */ 514 pinctrl-names = "default"; 515 pinctrl-0 = <&gbf_snowball_mode>, 516 <&wlan_snowball_mode>; 517 518 ethernet { 519 /* 520 * Mux in "SM" which is used for the 521 * SMSC911x Ethernet adapter 522 */ 523 eth_snowball_mode: eth_snowball { 524 snowball_mux { 525 function = "sm"; 526 groups = "sm_b_1"; 527 }; 528 /* LAN IRQ pin */ 529 snowball_cfg1 { 530 pins = "GPIO140_B11"; 531 ste,config = <&in_nopull>; 532 }; 533 /* LAN reset pin */ 534 snowball_cfg2 { 535 pins = "GPIO141_C12"; 536 ste,config = <&gpio_out_hi>; 537 }; 538 539 }; 540 }; 541 sdi0 { 542 sdi0_default_mode: sdi0_default { 543 snowball_mux { 544 function = "mc0"; 545 /* Add the DAT31 pin even if it is not really used */ 546 groups = "mc0dat31dir_a_1"; 547 }; 548 snowball_cfg1 { 549 pins = "GPIO21_AB3"; /* DAT31DIR */ 550 ste,config = <&out_hi>; 551 }; 552 /* SD card detect GPIO pin, extend default state */ 553 snowball_cfg2 { 554 pins = "GPIO218_AH11"; 555 ste,config = <&gpio_in_pu>; 556 }; 557 /* VMMCI level-shifter enable */ 558 snowball_cfg3 { 559 pins = "GPIO217_AH12"; 560 ste,config = <&gpio_out_hi>; 561 }; 562 /* VMMCI level-shifter voltage select */ 563 snowball_cfg4 { 564 pins = "GPIO228_AJ6"; 565 ste,config = <&gpio_out_hi>; 566 }; 567 }; 568 }; 569 ssp0 { 570 ssp0_snowball_mode: ssp0_snowball_default { 571 snowball_mux { 572 function = "ssp0"; 573 groups = "ssp0_a_1"; 574 }; 575 snowball_cfg1 { 576 pins = "GPIO144_B13"; /* FRM */ 577 ste,config = <&gpio_out_hi>; 578 }; 579 snowball_cfg2 { 580 pins = "GPIO145_C13"; /* RXD */ 581 ste,config = <&in_pd>; 582 }; 583 snowball_cfg3 { 584 pins = 585 "GPIO146_D13", /* TXD */ 586 "GPIO143_D12"; /* CLK */ 587 ste,config = <&out_lo>; 588 }; 589 590 }; 591 }; 592 gpio_led { 593 gpioled_snowball_mode: gpioled_default { 594 snowball_cfg1 { 595 pins = "GPIO142_C11"; 596 ste,config = <&gpio_out_hi>; 597 }; 598 599 }; 600 }; 601 accelerometer { 602 accel_snowball_mode: accel_snowball { 603 /* Accelerometer lines */ 604 snowball_cfg1 { 605 pins = 606 "GPIO163_C20", /* ACCEL_IRQ1 */ 607 "GPIO164_B21"; /* ACCEL_IRQ2 */ 608 ste,config = <&gpio_in_pu>; 609 }; 610 }; 611 }; 612 gyro { 613 gyro_snowball_mode: gyro_snowball { 614 snowball_cfg1 { 615 pins = 616 "GPIO166_A22", /* DRDY */ 617 "GPIO169_D22"; /* INT */ 618 ste,config = <&gpio_in_pu>; 619 }; 620 }; 621 }; 622 magnetometer { 623 magneto_snowball_mode: magneto_snowball { 624 snowball_cfg1 { 625 pins = "GPIO165_C21"; /* MAG_DRDY */ 626 ste,config = <&gpio_in_pu>; 627 }; 628 }; 629 }; 630 gbf { 631 gbf_snowball_mode: gbf_snowball { 632 /* 633 * GBF (GPS, Bluetooth, FM-radio) interface, 634 * pull low to reset state 635 */ 636 snowball_cfg1 { 637 pins = "GPIO171_D23"; /* GBF_ENA_RESET */ 638 ste,config = <&gpio_out_lo>; 639 }; 640 }; 641 }; 642 wlan { 643 wlan_snowball_mode: wlan_snowball { 644 /* 645 * Activate this mode with the WLAN chip. 646 * These are plain GPIO pins used by WLAN 647 */ 648 snowball_cfg1 { 649 pins = 650 "GPIO161_D21", /* WLAN_PMU_EN */ 651 "GPIO215_AH13"; /* WLAN_ENA */ 652 ste,config = <&gpio_out_lo>; 653 }; 654 snowball_cfg2 { 655 pins = "GPIO216_AG12"; /* WLAN_IRQ */ 656 ste,config = <&gpio_in_pu>; 657 }; 658 }; 659 }; 660 }; 661 662 mcde@a0350000 { 663 pinctrl-names = "default", "sleep"; 664 pinctrl-0 = <&lcd_default_mode>; 665 pinctrl-1 = <&lcd_sleep_mode>; 666 }; 667 }; 668}; 669