Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[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                                         vdd3-supply = <&panel_reg_3v0>;
333                                         vci-supply = <&panel_reg_1v8>;
334                                         reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
335                                         /* ESD (electrostatic discharge) detection interrupt */
336                                         interrupt-parent = <&gpio2>;
337                                         interrupts = <18 IRQ_TYPE_EDGE_RISING>;
338                                         interrupt-names = "esd";
339                                         pinctrl-names = "default";
340                                         pinctrl-0 = <&display_default_mode>;
341                                 };
342                         };
343                 };
344         };
345
346         gpio-keys {
347                 compatible = "gpio-keys";
348
349                 pinctrl-names = "default";
350                 pinctrl-0 = <&gpio_keys_default>;
351
352                 label = "GPIO Buttons";
353
354                 volume-up {
355                         label = "Volume Up";
356                         /* GPIO67 (VOL_UP) */
357                         gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
358                         linux,code = <KEY_VOLUMEUP>;
359                 };
360
361                 volume-down {
362                         label = "Volume Down";
363                         /* GPIO92 (VOL_DOWN) */
364                         gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
365                         linux,code = <KEY_VOLUMEDOWN>;
366                 };
367
368                 home {
369                         label = "Home";
370                         /* GPIO91 (HOME_KEY) */
371                         gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
372                         linux,code = <KEY_HOMEPAGE>;
373                 };
374         };
375
376         vibrator {
377                 compatible = "gpio-vibrator";
378                 /* GPIO195 (MOT_EN) */
379                 enable-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>;
380
381                 pinctrl-names = "default";
382                 pinctrl-0 = <&vibrator_default>;
383         };
384
385         /* External LDO for eMMC */
386         vmem_3v3: regulator-vmem {
387                 compatible = "regulator-fixed";
388
389                 regulator-name = "vmem_3v3";
390                 regulator-min-microvolt = <3300000>;
391                 regulator-max-microvolt = <3300000>;
392                 regulator-boot-on;
393
394                 startup-delay-us = <200>;
395
396                 /* GPIO223 (MEM_LDO_EN) */
397                 gpio = <&gpio6 31 GPIO_ACTIVE_HIGH>;
398                 enable-active-high;
399
400                 pinctrl-names = "default";
401                 pinctrl-0 = <&mem_ldo_default>;
402         };
403
404         /* TI TXS0206-29 level translator for 2.9 V */
405         sd_level_translator: regulator-sd-level-translator {
406                 compatible = "regulator-fixed";
407
408                 regulator-name = "sd-level-translator";
409                 regulator-min-microvolt = <2900000>;
410                 regulator-max-microvolt = <2900000>;
411
412                 startup-delay-us = <200>;
413
414                 /* GPIO87 (TXS0206-29_EN) */
415                 gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>;
416                 enable-active-high;
417
418                 pinctrl-names = "default";
419                 pinctrl-0 = <&sd_level_translator_default>;
420         };
421
422         /*
423          * WL_REG_ON takes WLAN out of reset and enables the internal regulators.
424          * The voltage specified here is only used to determine the OCR mask,
425          * the BCM chip is actually connected directly to VBAT.
426          */
427         wl_reg_on: regulator-wl-reg-on {
428                 compatible = "regulator-fixed";
429
430                 regulator-name = "wl-reg-on";
431                 regulator-min-microvolt = <3000000>;
432                 regulator-max-microvolt = <3000000>;
433
434                 startup-delay-us = <100000>;
435
436                 /* GPIO215 (WLAN_EN) */
437                 gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
438                 enable-active-high;
439
440                 pinctrl-names = "default";
441                 pinctrl-0 = <&wlan_en_default>;
442         };
443
444         /* MIC5366 GPIO-controlled regulator */
445         panel_reg_1v8: regulator-panel-1v8 {
446                 compatible = "regulator-fixed";
447
448                 regulator-name = "panel-fixed-supply";
449                 regulator-min-microvolt = <1800000>;
450                 regulator-max-microvolt = <1800000>;
451                 /* GPIO219 */
452                 gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
453
454                 startup-delay-us = <200>;
455                 enable-active-high;
456
457                 pinctrl-names = "default";
458                 pinctrl-0 = <&panel_reg_default_mode>;
459         };
460
461         /* MIC5366 GPIO-controlled regulator */
462         panel_reg_3v0: regulator-panel-3v0 {
463                 compatible = "regulator-fixed";
464
465                 regulator-name = "panel-fixed-supply";
466                 regulator-min-microvolt = <3000000>;
467                 regulator-max-microvolt = <3000000>;
468                 /* GPIO219 */
469                 gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
470
471                 startup-delay-us = <200>;
472                 enable-active-high;
473
474                 pinctrl-names = "default";
475                 pinctrl-0 = <&panel_reg_default_mode>;
476         };
477 };
478
479 &pinctrl {
480         gpio-keys {
481                 gpio_keys_default: gpio_keys_default {
482                         golden_cfg1 {
483                                 pins = "GPIO67",        /* VOL_UP */
484                                        "GPIO91",        /* HOME_KEY */
485                                        "GPIO92";        /* VOL_DOWN */
486                                 ste,config = <&gpio_in_pu>;
487                         };
488                 };
489         };
490
491         i2c-gpio-0 {
492                 i2c_gpio_0_default: i2c_gpio_0 {
493                         golden_cfg1 {
494                                 pins = "GPIO77",        /* TOUCHKEY_SCL */
495                                        "GPIO78";        /* TOUCHKEY_SDA */
496                                 ste,config = <&gpio_in_nopull>;
497                         };
498                 };
499         };
500
501         i2c-gpio-1 {
502                 i2c_gpio_1_default: i2c_gpio_1 {
503                         golden_cfg1 {
504                                 pins = "GPIO151",       /* COMP_SCL */
505                                        "GPIO152";       /* COMP_SDA */
506                                 ste,config = <&gpio_in_nopull>;
507                         };
508                 };
509         };
510
511         touchkey {
512                 touchkey_default: touchkey_default {
513                         golden_cfg1 {
514                                 pins = "GPIO79";        /* TOUCHKEY_INT */
515                                 ste,config = <&gpio_in_nopull>;
516                         };
517                 };
518         };
519
520         sdi0 {
521                 sd_level_translator_default: sd_level_translator_default {
522                         golden_cfg1 {
523                                 pins = "GPIO87_B3";     /* TXS0206-29_EN */
524                                 ste,config = <&gpio_out_lo>;
525                         };
526                 };
527         };
528
529         sdi2 {
530                 mem_ldo_default: mem_ldo_default {
531                         golden_cfg1 {
532                                 pins = "GPIO223_AH9";   /* MEM_LDO_EN */
533                                 ste,config = <&gpio_out_hi>;
534                         };
535                 };
536         };
537
538         mcde {
539                 dsi_default_mode: dsi_default {
540                         default_mux1 {
541                                 /* Mux in VSI0 used for DSI TE */
542                                 function = "lcd";
543                                 groups =
544                                 "lcdvsi0_a_1"; /* VSI0 for LCD */
545                         };
546                         default_cfg1 {
547                                 pins =
548                                 "GPIO68_E1"; /* VSI0 */
549                                 ste,config = <&in_nopull>;
550                         };
551                 };
552         };
553
554         display {
555                 display_default_mode: display_default {
556                         golden_cfg1 {
557                                 pins = "GPIO139_C9"; /* MIPI_DSI0_RESET_N */
558                                 ste,config = <&gpio_out_lo>;
559                         };
560                         golden_cfg2 {
561                                 pins = "GPIO82_C1"; /* LDI_ESD_DET */
562                                 ste,config = <&gpio_in_pu>;
563                         };
564                 };
565                 panel_reg_default_mode: panel_reg_default {
566                         golden_cfg1 {
567                                 pins = "GPIO219_AG10"; /* LCD_PWR_EN */
568                                 ste,config = <&gpio_out_lo>;
569                         };
570                 };
571         };
572
573         proximity {
574                 proximity_default: proximity_default {
575                         golden_cfg1 {
576                                 pins = "GPIO146_D13";   /* PS_INT */
577                                 ste,config = <&gpio_in_nopull>;
578                         };
579                 };
580         };
581
582         imu {
583                 imu_default: imu_default {
584                         golden_cfg1 {
585                                 pins = "GPIO206_AG24";  /* ACC_INT */
586                                 ste,config = <&gpio_in_pd>;
587                         };
588                 };
589         };
590
591         tsp {
592                 tsp_default: tsp_default {
593                         golden_cfg1 {
594                                 pins = "GPIO218_AH11";  /* TSP_INT_1V8 */
595                                 ste,config = <&gpio_in_nopull>;
596                         };
597                 };
598         };
599
600         wlan {
601                 wlan_default: wlan_default {
602                         golden_cfg1 {
603                                 pins = "GPIO216_AG12";  /* WLAN_HOST_WAKE */
604                                 ste,config = <&gpio_in_pd>;
605                         };
606                 };
607
608                 wlan_en_default: wlan_en_default {
609                         golden_cfg1 {
610                                 pins = "GPIO215_AH13";  /* WLAN_EN */
611                                 ste,config = <&gpio_out_lo>;
612                         };
613                 };
614         };
615
616         bluetooth {
617                 bluetooth_default: bluetooth_default {
618                         golden_cfg1 {
619                                 pins = "GPIO199_AH23",  /* BT_WAKE */
620                                        "GPIO222_AJ9";   /* BT_VREG_ON */
621                                 ste,config = <&gpio_out_lo>;
622                         };
623                         golden_cfg2 {
624                                 pins = "GPIO97_D9";     /* BT_HOST_WAKE */
625                                 ste,config = <&gpio_in_nopull>;
626                         };
627                 };
628         };
629
630         vibrator {
631                 vibrator_default: vibrator_default {
632                         golden_cfg1 {
633                                 pins = "GPIO195_AG28";  /* MOT_EN */
634                                 ste,config = <&gpio_out_lo>;
635                         };
636                 };
637         };
638 };
639
640 &ab8505_gpio {
641         /* Hog a few default settings */
642         pinctrl-names = "default";
643         pinctrl-0 = <&gpio_default>;
644
645         gpio {
646                 gpio_default: gpio_default {
647                         golden_mux {
648                                 /* Change unused pins to GPIO mode */
649                                 function = "gpio";
650                                 groups = "gpio3_a_1",   /* default: SysClkReq4 */
651                                          "gpio14_a_1";  /* default: PWMOut1 */
652                         };
653                         golden_cfg1 {
654                                 pins = "GPIO11_B17", "GPIO13_D17", "GPIO50_L4";
655                                 bias-disable;
656                         };
657                 };
658         };
659 };