Merge branch 'for-5.12/intel-ish' into for-linus
[linux-2.6-microblaze.git] / arch / arm / boot / dts / ste-ux500-samsung-golden.dts
1 // SPDX-License-Identifier: GPL-2.0-only
2 /dts-v1/;
3
4 #include "ste-db8500.dtsi"
5 #include "ste-ab8505.dtsi"
6 #include "ste-dbx5x0-pinctrl.dtsi"
7 #include <dt-bindings/gpio/gpio.h>
8 #include <dt-bindings/input/input.h>
9 #include <dt-bindings/interrupt-controller/irq.h>
10
11 /*
12  * Note: This device tree cannot be booted directly with the Samsung bootloader.
13  * You need an intermediate, device-tree compatible bootloader
14  * that locks the L2 cache. Otherwise the kernel will crash after decompression.
15  *
16  * There is a port of (mainline) U-Boot, see
17  * https://wiki.postmarketos.org/wiki/ST-Ericsson_NovaThor_U8500#U-Boot
18  */
19 / {
20         model = "Samsung Galaxy S III mini (GT-I8190)";
21         compatible = "samsung,golden", "st-ericsson,u8500";
22
23         chosen {
24                 stdout-path = &serial2;
25         };
26
27         i2c-gpio-0 {
28                 compatible = "i2c-gpio";
29                 sda-gpios = <&gpio2 14 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
30                 scl-gpios = <&gpio2 13 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
31
32                 pinctrl-names = "default";
33                 pinctrl-0 = <&i2c_gpio_0_default>;
34
35                 #address-cells = <1>;
36                 #size-cells = <0>;
37
38                 touchkey@20 {
39                         compatible = "coreriver,tc360-touchkey";
40                         reg = <0x20>;
41                         vdd-supply = <&ab8500_ldo_aux4_reg>;
42                         vcc-supply = <&ab8500_ldo_aux6_reg>;
43
44                         interrupt-parent = <&gpio2>;
45                         interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
46
47                         pinctrl-names = "default";
48                         pinctrl-0 = <&touchkey_default>;
49                         linux,keycodes = <KEY_MENU KEY_BACK>;
50                 };
51         };
52
53         i2c-gpio-1 {
54                 compatible = "i2c-gpio";
55                 sda-gpios = <&gpio4 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
56                 scl-gpios = <&gpio4 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
57
58                 pinctrl-names = "default";
59                 pinctrl-0 = <&i2c_gpio_1_default>;
60
61                 #address-cells = <1>;
62                 #size-cells = <0>;
63
64                 magnetometer@c {
65                         compatible = "alps,hscdtd008a";
66                         reg = <0x0c>;
67
68                         avdd-supply = <&ab8500_ldo_aux1_reg>;
69                         dvdd-supply = <&ab8500_ldo_aux8_reg>;
70                 };
71         };
72
73         soc {
74                 /* External Micro SD card slot */
75                 sdi0_per1@80126000 {
76                         status = "okay";
77
78                         arm,primecell-periphid = <0x10480180>;
79                         max-frequency = <100000000>;
80                         bus-width = <4>;
81
82                         non-removable;
83                         /*
84                          * Unfortunately, there is no way to enable the UHS
85                          * modes due to a limitation of the SD level translator:
86                          * It will either translate to 2.9V or disconnect the
87                          * DATA lines, so switching to 1.8V signal voltage fails.
88                          */
89                         cap-sd-highspeed;
90                         cap-mmc-highspeed;
91                         st,sig-pin-fbclk;
92                         full-pwr-cycle;
93
94                         vmmc-supply = <&ab8500_ldo_aux3_reg>;
95                         vqmmc-supply = <&sd_level_translator>;
96
97                         pinctrl-names = "default", "sleep";
98                         pinctrl-0 = <&mc0_a_2_default>;
99                         pinctrl-1 = <&mc0_a_2_sleep>;
100                 };
101
102                 /* WLAN SDIO */
103                 sdi1_per2@80118000 {
104                         status = "okay";
105
106                         arm,primecell-periphid = <0x10480180>;
107                         max-frequency = <50000000>;
108                         bus-width = <4>;
109
110                         non-removable;
111                         cap-sd-highspeed;
112
113                         vmmc-supply = <&wl_reg_on>;
114
115                         pinctrl-names = "default", "sleep";
116                         pinctrl-0 = <&mc1_a_2_default>;
117                         pinctrl-1 = <&mc1_a_2_sleep>;
118
119                         #address-cells = <1>;
120                         #size-cells = <0>;
121
122                         wifi@1 {
123                                 compatible = "brcm,bcm4329-fmac";
124                                 reg = <1>;
125
126                                 /* GPIO216 (WLAN_HOST_WAKE) */
127                                 interrupt-parent = <&gpio6>;
128                                 interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
129                                 interrupt-names = "host-wake";
130
131                                 pinctrl-names = "default";
132                                 pinctrl-0 = <&wlan_default>;
133                         };
134                 };
135
136                 /* eMMC */
137                 sdi2_per3@80005000 {
138                         status = "okay";
139
140                         arm,primecell-periphid = <0x10480180>;
141                         max-frequency = <100000000>;
142                         bus-width = <8>;
143
144                         non-removable;
145                         cap-mmc-highspeed;
146                         mmc-ddr-1_8v;
147
148                         vmmc-supply = <&vmem_3v3>;
149
150                         pinctrl-names = "default", "sleep";
151                         pinctrl-0 = <&mc2_a_1_default>;
152                         pinctrl-1 = <&mc2_a_1_sleep>;
153                 };
154
155                 /* BT UART */
156                 uart@80120000 {
157                         status = "okay";
158
159                         pinctrl-names = "default", "sleep";
160                         pinctrl-0 = <&u0_a_1_default>;
161                         pinctrl-1 = <&u0_a_1_sleep>;
162
163                         bluetooth {
164                                 compatible = "brcm,bcm4330-bt";
165                                 /* GPIO222 (BT_VREG_ON) */
166                                 shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
167                                 /* GPIO199 (BT_WAKE) */
168                                 device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
169                                 /* GPIO97 (BT_HOST_WAKE) */
170                                 host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
171
172                                 pinctrl-names = "default";
173                                 pinctrl-0 = <&bluetooth_default>;
174                         };
175                 };
176
177                 /* GPF UART */
178                 uart@80121000 {
179                         status = "okay";
180
181                         pinctrl-names = "default", "sleep";
182                         pinctrl-0 = <&u1rxtx_a_1_default &u1ctsrts_a_1_default>;
183                         pinctrl-1 = <&u1rxtx_a_1_sleep &u1ctsrts_a_1_sleep>;
184                 };
185
186                 /* Debugging console UART */
187                 uart@80007000 {
188                         status = "okay";
189
190                         pinctrl-names = "default", "sleep";
191                         pinctrl-0 = <&u2rxtx_c_1_default>;
192                         pinctrl-1 = <&u2rxtx_c_1_sleep>;
193                 };
194
195                 i2c@80004000 {
196                         status = "okay";
197
198                         pinctrl-names = "default", "sleep";
199                         pinctrl-0 = <&i2c0_a_1_default>;
200                         pinctrl-1 = <&i2c0_a_1_sleep>;
201
202                         proximity@44 {
203                                 compatible = "sharp,gp2ap002s00f";
204                                 reg = <0x44>;
205
206                                 /* GPIO146 (PS_INT) */
207                                 interrupt-parent = <&gpio4>;
208                                 interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
209
210                                 vdd-supply = <&ab8500_ldo_aux1_reg>;
211                                 vio-supply = <&ab8500_ldo_aux8_reg>;
212
213                                 pinctrl-names = "default";
214                                 pinctrl-0 = <&proximity_default>;
215
216                                 sharp,proximity-far-hysteresis = <0x40>;
217                                 sharp,proximity-close-hysteresis = <0x0f>;
218                         };
219                 };
220
221                 i2c@80128000 {
222                         status = "okay";
223
224                         pinctrl-names = "default", "sleep";
225                         pinctrl-0 = <&i2c2_b_2_default>;
226                         pinctrl-1 = <&i2c2_b_2_sleep>;
227
228                         imu@68 {
229                                 compatible = "invensense,mpu6050";
230                                 reg = <0x68>;
231
232                                 /* GPIO206 (ACC_INT) */
233                                 interrupt-parent = <&gpio6>;
234                                 interrupts = <14 IRQ_TYPE_EDGE_RISING>;
235
236                                 mount-matrix = "0", "1", "0",
237                                               "-1", "0", "0",
238                                                "0", "0", "1";
239
240                                 vdd-supply = <&ab8500_ldo_aux1_reg>;
241                                 vddio-supply = <&ab8500_ldo_aux8_reg>;
242
243                                 pinctrl-names = "default";
244                                 pinctrl-0 = <&imu_default>;
245                         };
246                 };
247
248                 i2c@80110000 {
249                         status = "okay";
250
251                         pinctrl-names = "default", "sleep";
252                         pinctrl-0 = <&i2c3_c_2_default>;
253                         pinctrl-1 = <&i2c3_c_2_sleep>;
254
255                         touchscreen@4a {
256                                 compatible = "atmel,maxtouch";
257                                 reg = <0x4a>;
258
259                                 /* GPIO218 (TSP_INT_1V8) */
260                                 interrupt-parent = <&gpio6>;
261                                 interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
262
263                                 /* VDDA is "analog supply", 2.57-3.47 V */
264                                 vdda-supply = <&ab8500_ldo_aux2_reg>;
265                                 /* VDD is "digital supply" 1.71-3.47V */
266                                 vdd-supply = <&ab8500_ldo_aux5_reg>;
267
268                                 pinctrl-names = "default";
269                                 pinctrl-0 = <&tsp_default>;
270                         };
271                 };
272
273                 prcmu@80157000 {
274                         ab8505 {
275                                 ab8500_usb {
276                                         pinctrl-names = "default", "sleep";
277                                         pinctrl-0 = <&usb_a_1_default>;
278                                         pinctrl-1 = <&usb_a_1_sleep>;
279                                 };
280
281                                 ab8505-regulators {
282                                         ab8500_ldo_aux1 {
283                                                 regulator-name = "sensor_3v";
284                                                 regulator-min-microvolt = <3000000>;
285                                                 regulator-max-microvolt = <3000000>;
286                                         };
287
288                                         ab8500_ldo_aux2 {
289                                                 regulator-name = "vreg_tsp_a3v3";
290                                                 regulator-min-microvolt = <3300000>;
291                                                 regulator-max-microvolt = <3300000>;
292                                         };
293
294                                         ab8500_ldo_aux3 {
295                                                 regulator-name = "vdd_tf_2v91";
296                                         };
297
298                                         ab8500_ldo_aux4 {
299                                                 regulator-name = "key_led_3.3v";
300                                                 regulator-min-microvolt = <3300000>;
301                                                 regulator-max-microvolt = <3300000>;
302                                         };
303
304                                         ab8500_ldo_aux5 {
305                                                 regulator-name = "vreg_tsp_1v8";
306                                                 regulator-min-microvolt = <1800000>;
307                                                 regulator-max-microvolt = <1800000>;
308                                         };
309
310                                         ab8500_ldo_aux6 {
311                                                 regulator-name = "touch_key_2.2v";
312                                                 regulator-min-microvolt = <2200000>;
313                                                 regulator-max-microvolt = <2200000>;
314                                         };
315
316                                         ab8500_ldo_aux8 {
317                                                 regulator-name = "sensor_1v8";
318                                         };
319                                 };
320                         };
321                 };
322
323                 mcde@a0350000 {
324                         status = "okay";
325                         pinctrl-names = "default";
326                         pinctrl-0 = <&dsi_default_mode>;
327
328                         dsi@a0351000 {
329                                 panel@0 {
330                                         compatible = "samsung,s6e63m0";
331                                         reg = <0>;
332                                         max-brightness = <15>;
333                                         vdd3-supply = <&panel_reg_3v0>;
334                                         vci-supply = <&panel_reg_1v8>;
335                                         reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
336                                         /* ESD (electrostatic discharge) detection interrupt */
337                                         interrupt-parent = <&gpio2>;
338                                         interrupts = <18 IRQ_TYPE_EDGE_RISING>;
339                                         interrupt-names = "esd";
340                                         pinctrl-names = "default";
341                                         pinctrl-0 = <&display_default_mode>;
342                                 };
343                         };
344                 };
345         };
346
347         gpio-keys {
348                 compatible = "gpio-keys";
349
350                 pinctrl-names = "default";
351                 pinctrl-0 = <&gpio_keys_default>;
352
353                 label = "GPIO Buttons";
354
355                 volume-up {
356                         label = "Volume Up";
357                         /* GPIO67 (VOL_UP) */
358                         gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
359                         linux,code = <KEY_VOLUMEUP>;
360                 };
361
362                 volume-down {
363                         label = "Volume Down";
364                         /* GPIO92 (VOL_DOWN) */
365                         gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
366                         linux,code = <KEY_VOLUMEDOWN>;
367                 };
368
369                 home {
370                         label = "Home";
371                         /* GPIO91 (HOME_KEY) */
372                         gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
373                         linux,code = <KEY_HOMEPAGE>;
374                 };
375         };
376
377         vibrator {
378                 compatible = "gpio-vibrator";
379                 /* GPIO195 (MOT_EN) */
380                 enable-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>;
381
382                 pinctrl-names = "default";
383                 pinctrl-0 = <&vibrator_default>;
384         };
385
386         /* External LDO for eMMC */
387         vmem_3v3: regulator-vmem {
388                 compatible = "regulator-fixed";
389
390                 regulator-name = "vmem_3v3";
391                 regulator-min-microvolt = <3300000>;
392                 regulator-max-microvolt = <3300000>;
393                 regulator-boot-on;
394
395                 startup-delay-us = <200>;
396
397                 /* GPIO223 (MEM_LDO_EN) */
398                 gpio = <&gpio6 31 GPIO_ACTIVE_HIGH>;
399                 enable-active-high;
400
401                 pinctrl-names = "default";
402                 pinctrl-0 = <&mem_ldo_default>;
403         };
404
405         /* TI TXS0206-29 level translator for 2.9 V */
406         sd_level_translator: regulator-sd-level-translator {
407                 compatible = "regulator-fixed";
408
409                 regulator-name = "sd-level-translator";
410                 regulator-min-microvolt = <2900000>;
411                 regulator-max-microvolt = <2900000>;
412
413                 startup-delay-us = <200>;
414
415                 /* GPIO87 (TXS0206-29_EN) */
416                 gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>;
417                 enable-active-high;
418
419                 pinctrl-names = "default";
420                 pinctrl-0 = <&sd_level_translator_default>;
421         };
422
423         /*
424          * WL_REG_ON takes WLAN out of reset and enables the internal regulators.
425          * The voltage specified here is only used to determine the OCR mask,
426          * the BCM chip is actually connected directly to VBAT.
427          */
428         wl_reg_on: regulator-wl-reg-on {
429                 compatible = "regulator-fixed";
430
431                 regulator-name = "wl-reg-on";
432                 regulator-min-microvolt = <3000000>;
433                 regulator-max-microvolt = <3000000>;
434
435                 startup-delay-us = <100000>;
436
437                 /* GPIO215 (WLAN_EN) */
438                 gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
439                 enable-active-high;
440
441                 pinctrl-names = "default";
442                 pinctrl-0 = <&wlan_en_default>;
443         };
444
445         /* MIC5366 GPIO-controlled regulator */
446         panel_reg_1v8: regulator-panel-1v8 {
447                 compatible = "regulator-fixed";
448
449                 regulator-name = "panel-fixed-supply";
450                 regulator-min-microvolt = <1800000>;
451                 regulator-max-microvolt = <1800000>;
452                 /* GPIO219 */
453                 gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
454
455                 startup-delay-us = <200>;
456                 enable-active-high;
457
458                 pinctrl-names = "default";
459                 pinctrl-0 = <&panel_reg_default_mode>;
460         };
461
462         /* MIC5366 GPIO-controlled regulator */
463         panel_reg_3v0: regulator-panel-3v0 {
464                 compatible = "regulator-fixed";
465
466                 regulator-name = "panel-fixed-supply";
467                 regulator-min-microvolt = <3000000>;
468                 regulator-max-microvolt = <3000000>;
469                 /* GPIO219 */
470                 gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
471
472                 startup-delay-us = <200>;
473                 enable-active-high;
474
475                 pinctrl-names = "default";
476                 pinctrl-0 = <&panel_reg_default_mode>;
477         };
478 };
479
480 &pinctrl {
481         gpio-keys {
482                 gpio_keys_default: gpio_keys_default {
483                         golden_cfg1 {
484                                 pins = "GPIO67",        /* VOL_UP */
485                                        "GPIO91",        /* HOME_KEY */
486                                        "GPIO92";        /* VOL_DOWN */
487                                 ste,config = <&gpio_in_pu>;
488                         };
489                 };
490         };
491
492         i2c-gpio-0 {
493                 i2c_gpio_0_default: i2c_gpio_0 {
494                         golden_cfg1 {
495                                 pins = "GPIO77",        /* TOUCHKEY_SCL */
496                                        "GPIO78";        /* TOUCHKEY_SDA */
497                                 ste,config = <&gpio_in_nopull>;
498                         };
499                 };
500         };
501
502         i2c-gpio-1 {
503                 i2c_gpio_1_default: i2c_gpio_1 {
504                         golden_cfg1 {
505                                 pins = "GPIO151",       /* COMP_SCL */
506                                        "GPIO152";       /* COMP_SDA */
507                                 ste,config = <&gpio_in_nopull>;
508                         };
509                 };
510         };
511
512         touchkey {
513                 touchkey_default: touchkey_default {
514                         golden_cfg1 {
515                                 pins = "GPIO79";        /* TOUCHKEY_INT */
516                                 ste,config = <&gpio_in_nopull>;
517                         };
518                 };
519         };
520
521         sdi0 {
522                 sd_level_translator_default: sd_level_translator_default {
523                         golden_cfg1 {
524                                 pins = "GPIO87_B3";     /* TXS0206-29_EN */
525                                 ste,config = <&gpio_out_lo>;
526                         };
527                 };
528         };
529
530         sdi2 {
531                 mem_ldo_default: mem_ldo_default {
532                         golden_cfg1 {
533                                 pins = "GPIO223_AH9";   /* MEM_LDO_EN */
534                                 ste,config = <&gpio_out_hi>;
535                         };
536                 };
537         };
538
539         mcde {
540                 dsi_default_mode: dsi_default {
541                         default_mux1 {
542                                 /* Mux in VSI0 used for DSI TE */
543                                 function = "lcd";
544                                 groups =
545                                 "lcdvsi0_a_1"; /* VSI0 for LCD */
546                         };
547                         default_cfg1 {
548                                 pins =
549                                 "GPIO68_E1"; /* VSI0 */
550                                 ste,config = <&in_nopull>;
551                         };
552                 };
553         };
554
555         display {
556                 display_default_mode: display_default {
557                         golden_cfg1 {
558                                 pins = "GPIO139_C9"; /* MIPI_DSI0_RESET_N */
559                                 ste,config = <&gpio_out_lo>;
560                         };
561                         golden_cfg2 {
562                                 pins = "GPIO82_C1"; /* LDI_ESD_DET */
563                                 ste,config = <&gpio_in_pu>;
564                         };
565                 };
566                 panel_reg_default_mode: panel_reg_default {
567                         golden_cfg1 {
568                                 pins = "GPIO219_AG10"; /* LCD_PWR_EN */
569                                 ste,config = <&gpio_out_lo>;
570                         };
571                 };
572         };
573
574         proximity {
575                 proximity_default: proximity_default {
576                         golden_cfg1 {
577                                 pins = "GPIO146_D13";   /* PS_INT */
578                                 ste,config = <&gpio_in_nopull>;
579                         };
580                 };
581         };
582
583         imu {
584                 imu_default: imu_default {
585                         golden_cfg1 {
586                                 pins = "GPIO206_AG24";  /* ACC_INT */
587                                 ste,config = <&gpio_in_pd>;
588                         };
589                 };
590         };
591
592         tsp {
593                 tsp_default: tsp_default {
594                         golden_cfg1 {
595                                 pins = "GPIO218_AH11";  /* TSP_INT_1V8 */
596                                 ste,config = <&gpio_in_nopull>;
597                         };
598                 };
599         };
600
601         wlan {
602                 wlan_default: wlan_default {
603                         golden_cfg1 {
604                                 pins = "GPIO216_AG12";  /* WLAN_HOST_WAKE */
605                                 ste,config = <&gpio_in_pd>;
606                         };
607                 };
608
609                 wlan_en_default: wlan_en_default {
610                         golden_cfg1 {
611                                 pins = "GPIO215_AH13";  /* WLAN_EN */
612                                 ste,config = <&gpio_out_lo>;
613                         };
614                 };
615         };
616
617         bluetooth {
618                 bluetooth_default: bluetooth_default {
619                         golden_cfg1 {
620                                 pins = "GPIO199_AH23",  /* BT_WAKE */
621                                        "GPIO222_AJ9";   /* BT_VREG_ON */
622                                 ste,config = <&gpio_out_lo>;
623                         };
624                         golden_cfg2 {
625                                 pins = "GPIO97_D9";     /* BT_HOST_WAKE */
626                                 ste,config = <&gpio_in_nopull>;
627                         };
628                 };
629         };
630
631         vibrator {
632                 vibrator_default: vibrator_default {
633                         golden_cfg1 {
634                                 pins = "GPIO195_AG28";  /* MOT_EN */
635                                 ste,config = <&gpio_out_lo>;
636                         };
637                 };
638         };
639 };
640
641 &ab8505_gpio {
642         /* Hog a few default settings */
643         pinctrl-names = "default";
644         pinctrl-0 = <&gpio_default>;
645
646         gpio {
647                 gpio_default: gpio_default {
648                         golden_mux {
649                                 /* Change unused pins to GPIO mode */
650                                 function = "gpio";
651                                 groups = "gpio3_a_1",   /* default: SysClkReq4 */
652                                          "gpio14_a_1";  /* default: PWMOut1 */
653                         };
654                         golden_cfg1 {
655                                 pins = "GPIO11_B17", "GPIO13_D17", "GPIO50_L4";
656                                 bias-disable;
657                         };
658                 };
659         };
660 };