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