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