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