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