Merge branch 'work.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[linux-2.6-microblaze.git] / arch / arm / boot / dts / ste-ux500-samsung-gavini.dts
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Devicetree for the Samsung Galaxy Beam GT-I8530 also known as Gavini.
4  */
5
6 /dts-v1/;
7 #include "ste-db8500.dtsi"
8 #include "ste-ab8500.dtsi"
9 #include "ste-dbx5x0-pinctrl.dtsi"
10 #include <dt-bindings/gpio/gpio.h>
11 #include <dt-bindings/leds/common.h>
12 #include <dt-bindings/input/input.h>
13 #include <dt-bindings/interrupt-controller/irq.h>
14
15 / {
16         model = "Samsung Galaxy Beam (GT-I8530)";
17         compatible = "samsung,gavini", "st-ericsson,u8500";
18
19         chosen {
20                 stdout-path = &serial2;
21         };
22
23         /* TI TXS0206 level translator for 2.9 V */
24         sd_level_translator: regulator-gpio {
25                 compatible = "regulator-fixed";
26
27                 /* GPIO193 EN */
28                 gpios = <&gpio6 1 GPIO_ACTIVE_HIGH>;
29                 enable-active-high;
30
31                 regulator-name = "sd-level-translator";
32                 regulator-min-microvolt = <2900000>;
33                 regulator-max-microvolt = <2900000>;
34                 regulator-type = "voltage";
35
36                 startup-delay-us = <200>;
37
38                 pinctrl-names = "default";
39                 pinctrl-0 = <&sd_level_translator_default>;
40         };
41
42         /* External LDO for eMMC LDO VMEM_3V3 controlled by GPIO6 */
43         ldo_3v3_reg: regulator-gpio-ldo-3v3 {
44                 compatible = "regulator-fixed";
45                 /* Supplied in turn by VBAT */
46                 regulator-name = "VMEM_3V3";
47                 regulator-min-microvolt = <3300000>;
48                 regulator-max-microvolt = <3300000>;
49                 gpio = <&gpio0 6 GPIO_ACTIVE_HIGH>;
50                 startup-delay-us = <5000>; // FIXME
51                 enable-active-high;
52                 pinctrl-names = "default";
53                 pinctrl-0 = <&emmc_ldo_en_default_mode>;
54         };
55
56         /*
57          * External Ricoh "TSP" regulator for the touchscreen.
58          * One GPIO line controls two voltages of 3.3V and 1.8V
59          * this line is known as "TSP_LDO_ON1" in the schematics.
60          */
61         ldo_tsp_3v3_reg: regulator-gpio-tsp-ldo-3v3 {
62                 compatible = "regulator-fixed";
63                 /* Supplied in turn by VBAT */
64                 regulator-name = "LDO_TSP_A3V3";
65                 regulator-min-microvolt = <3300000>;
66                 regulator-max-microvolt = <3300000>;
67                 /* GPIO94 controls this regulator */
68                 gpio = <&gpio2 30 GPIO_ACTIVE_HIGH>;
69                 /* 70 ms power-on delay */
70                 startup-delay-us = <70000>;
71                 enable-active-high;
72                 pinctrl-names = "default";
73                 pinctrl-0 = <&tsp_ldo_en_default_mode>;
74         };
75         ldo_tsp_1v8_reg: regulator-gpio-tsp-ldo-1v8 {
76                 compatible = "regulator-fixed";
77                 /* Supplied in turn by VBAT */
78                 regulator-name = "VREG_TSP_1V8";
79                 regulator-min-microvolt = <1800000>;
80                 regulator-max-microvolt = <1800000>;
81                 /* GPIO94 controls this regulator */
82                 gpio = <&gpio2 30 GPIO_ACTIVE_HIGH>;
83                 /* 70 ms power-on delay */
84                 startup-delay-us = <70000>;
85                 enable-active-high;
86                 pinctrl-names = "default";
87                 pinctrl-0 = <&tsp_ldo_en_default_mode>;
88         };
89
90         /*
91          * External Ricoh RP152L010B-TR LCD LDO regulator for the display.
92          * LCD_PWR_EN controls both a 3.0V and 1.8V output.
93          */
94         lcd_3v0_reg: regulator-gpio-lcd-3v0 {
95                 compatible = "regulator-fixed";
96                 /* Supplied in turn by VBAT */
97                 regulator-name = "VREG_LCD_3V0";
98                 regulator-min-microvolt = <3000000>;
99                 regulator-max-microvolt = <3000000>;
100                 /* GPIO219 controls this regulator */
101                 gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
102                 enable-active-high;
103                 pinctrl-names = "default";
104                 pinctrl-0 = <&lcd_pwr_en_default_mode>;
105         };
106         lcd_1v8_reg: regulator-gpio-lcd-1v8 {
107                 compatible = "regulator-fixed";
108                 /* Supplied in turn by VBAT */
109                 regulator-name = "VREG_LCD_1V8";
110                 regulator-min-microvolt = <1800000>;
111                 regulator-max-microvolt = <1800000>;
112                 /* GPIO219 controls this regulator too */
113                 gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
114                 enable-active-high;
115                 pinctrl-names = "default";
116                 pinctrl-0 = <&lcd_pwr_en_default_mode>;
117         };
118
119         /*
120          * This regulator is a GPIO line that drives the Broadcom WLAN
121          * line WL_REG_ON high and enables the internal regulators
122          * inside the chip. Unfortunatley it is erroneously named
123          * WLAN_RST_N on the schematic but it is not a reset line.
124          *
125          * The voltage specified here is only used to determine the OCR mask,
126          * the for the SDIO connector, the chip is actually connected
127          * directly to VBAT.
128          */
129         wl_reg: regulator-gpio-wlan {
130                 compatible = "regulator-fixed";
131                 regulator-name = "WL_REG_ON";
132                 regulator-min-microvolt = <3000000>;
133                 regulator-max-microvolt = <3000000>;
134                 startup-delay-us = <100000>;
135                 /* GPIO215 (WLAN_RST_N to WL_REG_ON) */
136                 gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
137                 enable-active-high;
138                 pinctrl-names = "default";
139                 pinctrl-0 = <&wlan_ldo_en_default>;
140         };
141
142         gpio-keys {
143                 compatible = "gpio-keys";
144                 pinctrl-names = "default";
145                 pinctrl-0 = <&gpio_keys_default_mode>;
146
147                 button-projector {
148                         linux,code = <KEY_SWITCHVIDEOMODE>;
149                         label = "Projector";
150                         /* GPIO32 "Projector On HotKey" */
151                         gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
152                 };
153                 button-home {
154                         linux,code = <KEY_HOME>;
155                         label = "HOME";
156                         /* GPIO91 */
157                         gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
158                 };
159                 button-volup {
160                         linux,code = <KEY_VOLUMEUP>;
161                         label = "VOL+";
162                         /* GPIO67 */
163                         gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
164                 };
165                 button-voldown {
166                         linux,code = <KEY_VOLUMEDOWN>;
167                         label = "VOL-";
168                         /* GPIO92 */
169                         gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
170                 };
171         };
172
173         /* Richtek RT8515GQW Flash LED Driver IC */
174         flash {
175                 compatible = "richtek,rt8515";
176                 /* GPIO 140 */
177                 enf-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
178                 /* GPIO 141 */
179                 ent-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
180                 /*
181                  * RFS is 16 kOhm and RTS is 100 kOhm giving
182                  * the flash max current 343mA and torch max
183                  * current 55 mA.
184                  */
185                 richtek,rfs-ohms = <16000>;
186                 richtek,rts-ohms = <100000>;
187                 pinctrl-names = "default";
188                 pinctrl-0 = <&gpio_flash_default_mode>;
189
190                 led {
191                         function = LED_FUNCTION_FLASH;
192                         color = <LED_COLOR_ID_WHITE>;
193                         flash-max-timeout-us = <250000>;
194                         flash-max-microamp = <343750>;
195                         led-max-microamp = <55000>;
196                 };
197         };
198
199         gpio-leds {
200                 compatible = "gpio-leds";
201                 pinctrl-names = "default";
202                 pinctrl-0 = <&gpio_leds_default_mode>;
203                 used-led {
204                         label = "touchkeys";
205                         /* GPIO68 */
206                         gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
207                         default-state = "on";
208                 };
209         };
210
211         ktd259: backlight {
212                 compatible = "kinetic,ktd259";
213                 /* GPIO20 */
214                 enable-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
215                 /* Default to 13/32 brightness */
216                 default-brightness = <13>;
217                 pinctrl-names = "default";
218                 pinctrl-0 = <&ktd259_backlight_default_mode>;
219         };
220
221         /* Bit-banged I2C on GPIO143 and GPIO144 also called "SUBPMU I2C" */
222         i2c-gpio-0 {
223                 compatible = "i2c-gpio";
224                 sda-gpios = <&gpio4 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
225                 scl-gpios = <&gpio4 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
226                 pinctrl-names = "default";
227                 pinctrl-0 = <&i2c_gpio_0_default>;
228                 #address-cells = <1>;
229                 #size-cells = <0>;
230
231                 /* TODO: Memsic MMC328 magnetometer */
232                 magnetometer@30 {
233                         compatible = "memsic,mmc328";
234                         reg = <0x30>;
235                         /* TODO: if you have the schematic, check if both voltages come from AUX2 */
236                         /* VDA 1.8 V */
237                         vda-supply = <&ab8500_ldo_aux2_reg>;
238                         /* VDD 1.8V */
239                         vdd-supply = <&ab8500_ldo_aux2_reg>;
240                         /* GPIO204 */
241                         reset-gpios = <&gpio6 12 GPIO_ACTIVE_LOW>;
242                         pinctrl-names = "default";
243                         pinctrl-0 = <&mmc328_default>;
244                 };
245                 /* TODO: this should also be used by the NCP6914 Camera power management unit */
246         };
247
248         /*
249          * TODO: See if we can use the PL023 for this instead.
250          */
251         spi-gpio-0 {
252                 compatible = "spi-gpio";
253                 /* Clock on GPIO220, pin SCL */
254                 sck-gpios = <&gpio6 28 GPIO_ACTIVE_HIGH>;
255                 /* MOSI on GPIO224, pin SDI "slave data in" */
256                 mosi-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
257                 /* MISO on GPIO225, pin SDO "slave data out" */
258                 miso-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
259                 /* Chip select on GPIO223 */
260                 cs-gpios = <&gpio6 31 GPIO_ACTIVE_LOW>;
261                 num-chipselects = <1>;
262
263                 pinctrl-names = "default";
264                 pinctrl-0 = <&spi_gpio_0_default>;
265                 #address-cells = <1>;
266                 #size-cells = <0>;
267
268                 panel@0 {
269                         compatible = "samsung,lms397kf04";
270                         /* 300 ns at read cycle -> 3 MHz max speed */
271                         //spi-max-frequency = <3000000>;
272                         spi-max-frequency = <1200000>;
273                         /* TYPE 3: inverse clock polarity and phase */
274                         spi-cpha;
275                         spi-cpol;
276
277                         reg = <0>;
278                         vci-supply = <&lcd_3v0_reg>;
279                         vccio-supply = <&lcd_1v8_reg>;
280                         /* Reset on GPIO139 */
281                         reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
282                         pinctrl-names = "default";
283                         pinctrl-0 = <&panel_default_mode>;
284                         backlight = <&ktd259>;
285
286                         port {
287                                 panel_in: endpoint {
288                                         remote-endpoint = <&display_out>;
289                                 };
290                         };
291                 };
292         };
293
294         /* Bit-banged I2C on GPIO201 and GPIO202 also called "MOT_I2C" */
295         i2c-gpio-2 {
296                 compatible = "i2c-gpio";
297                 sda-gpios = <&gpio6 10 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
298                 scl-gpios = <&gpio6 9 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
299                 pinctrl-names = "default";
300                 pinctrl-0 = <&i2c_gpio_2_default>;
301                 #address-cells = <1>;
302                 #size-cells = <0>;
303                 /* TODO: add the Immersion ISA1200 I2C device here */
304         };
305
306         /* Bit-banged I2C on GPIO196 and GPIO197 also called "MPR_I2C" */
307         i2c-gpio-3 {
308                 compatible = "i2c-gpio";
309                 sda-gpios = <&gpio6 5 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
310                 scl-gpios = <&gpio6 4 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
311                 pinctrl-names = "default";
312                 pinctrl-0 = <&i2c_gpio_3_default>;
313                 #address-cells = <1>;
314                 #size-cells = <0>;
315                 /* TODO: add the DPP2601 projector I2C device 0x1b here */
316         };
317
318         soc {
319                 /* External Micro SD slot */
320                 mmc@80126000 {
321                         arm,primecell-periphid = <0x10480180>;
322                         max-frequency = <50000000>;
323                         bus-width = <4>;
324                         cap-sd-highspeed;
325                         cap-mmc-highspeed;
326                         st,sig-pin-fbclk;
327                         full-pwr-cycle;
328                         /* MMC is powered by AUX3 1.2V .. 2.91V */
329                         vmmc-supply = <&ab8500_ldo_aux3_reg>;
330                         /* 2.9 V level translator */
331                         vqmmc-supply = <&sd_level_translator>;
332                         pinctrl-names = "default", "sleep";
333                         pinctrl-0 = <&mc0_a_2_default>;
334                         pinctrl-1 = <&mc0_a_2_sleep>;
335                         /* "flash detect" actually card detect */
336                         cd-gpios  = <&gpio6 25 GPIO_ACTIVE_LOW>;
337                         status = "okay";
338                 };
339
340                 /* WLAN SDIO channel */
341                 mmc@80118000 {
342                         arm,primecell-periphid = <0x10480180>;
343                         max-frequency = <50000000>;
344                         bus-width = <4>;
345                         non-removable;
346                         cap-sd-highspeed;
347                         pinctrl-names = "default", "sleep";
348                         pinctrl-0 = <&mc1_a_2_default>;
349                         pinctrl-1 = <&mc1_a_2_sleep>;
350                         /*
351                          * GPIO-controlled voltage enablement: this drives
352                          * the WL_REG_ON line high when we use this device.
353                          * Represented as regulator to fill OCR mask.
354                          */
355                         vmmc-supply = <&wl_reg>;
356
357                         #address-cells = <1>;
358                         #size-cells = <0>;
359                         status = "okay";
360
361                         wifi@1 {
362                                 compatible = "brcm,bcm4330-fmac", "brcm,bcm4329-fmac";
363                                 reg = <1>;
364                                 /* GPIO216 WL_HOST_WAKE */
365                                 interrupt-parent = <&gpio6>;
366                                 interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
367                                 interrupt-names = "host-wake";
368                                 pinctrl-names = "default";
369                                 pinctrl-0 = <&wlan_default_mode>;
370                         };
371                 };
372
373                 /* eMMC */
374                 mmc@80005000 {
375                         arm,primecell-periphid = <0x10480180>;
376                         max-frequency = <50000000>;
377                         bus-width = <8>;
378                         non-removable;
379                         cap-mmc-highspeed;
380                         mmc-ddr-1_8v;
381                         no-sdio;
382                         no-sd;
383                         vmmc-supply = <&ldo_3v3_reg>;
384                         pinctrl-names = "default", "sleep";
385                         pinctrl-0 = <&mc2_a_1_default>;
386                         pinctrl-1 = <&mc2_a_1_sleep>;
387                         status = "okay";
388                 };
389
390                 /* GBF (Bluetooth) UART */
391                 uart@80120000 {
392                         pinctrl-names = "default", "sleep";
393                         pinctrl-0 = <&u0_a_1_default>;
394                         pinctrl-1 = <&u0_a_1_sleep>;
395                         status = "okay";
396
397                         bluetooth {
398                                 compatible = "brcm,bcm4330-bt";
399                                 /* GPIO222 rail BT_VREG_EN to BT_REG_ON */
400                                 shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
401                                 /* BT_WAKE on GPIO199 */
402                                 device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
403                                 /* BT_HOST_WAKE on GPIO97 */
404                                 host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
405                                 /* BT_RST_N on GPIO209 */
406                                 reset-gpios = <&gpio6 17 GPIO_ACTIVE_LOW>;
407                                 pinctrl-names = "default";
408                                 pinctrl-0 = <&bluetooth_default_mode>;
409                         };
410                 };
411
412                 /* GPS UART */
413                 uart@80121000 {
414                         status = "okay";
415                         pinctrl-names = "default", "sleep";
416                         /* CTS/RTS is not used, CTS is repurposed as GPIO */
417                         pinctrl-0 = <&u1rxtx_a_1_default>;
418                         pinctrl-1 = <&u1rxtx_a_1_sleep>;
419                         /* FIXME: add a device for the GPS here */
420                 };
421
422                 /* Debugging console UART connected to TSU6111RSVR (FSA880) */
423                 uart@80007000 {
424                         status = "okay";
425                         pinctrl-names = "default", "sleep";
426                         pinctrl-0 = <&u2rxtx_c_1_default>;
427                         pinctrl-1 = <&u2rxtx_c_1_sleep>;
428                 };
429
430                 prcmu@80157000 {
431                         ab8500 {
432                                 ab8500_usb {
433                                         pinctrl-names = "default", "sleep";
434                                         pinctrl-0 = <&usb_a_1_default>;
435                                         pinctrl-1 = <&usb_a_1_sleep>;
436                                 };
437
438                                 ab8500-regulators {
439                                         ab8500_ldo_aux1 {
440                                                 /* Used for VDD for sensors */
441                                                 regulator-name = "V-SENSORS-VDD";
442                                                 regulator-min-microvolt = <3000000>;
443                                                 regulator-max-microvolt = <3000000>;
444                                         };
445
446                                         ab8500_ldo_aux2 {
447                                                 /* Used for VIO for sensors */
448                                                 regulator-name = "V-SENSORS-VIO";
449                                                 regulator-min-microvolt = <1800000>;
450                                                 regulator-max-microvolt = <1800000>;
451                                         };
452
453                                         ab8500_ldo_aux3 {
454                                                 /* Used for voltage for external MMC/SD card */
455                                                 regulator-name = "V-MMC-SD";
456                                                 regulator-min-microvolt = <1200000>;
457                                                 regulator-max-microvolt = <2910000>;
458                                         };
459                                 };
460                         };
461                 };
462
463                 /* I2C0 */
464                 i2c@80004000 {
465                         status = "okay";
466                         pinctrl-names = "default", "sleep";
467                         pinctrl-0 = <&i2c0_a_1_default>;
468                         pinctrl-1 = <&i2c0_a_1_sleep>;
469
470                         /* FIXME: fix the proximity sensor bindings and driver */
471                         proximity@39 {
472                                 /* Gavini has the GP2A030S00F proximity sensor */
473                                 compatible = "sharp,gp2a030s00f";
474                                 clock-frequency = <400000>;
475                                 reg = <0x39>;
476                                 /* FIXME: GPIO146 provides power on, IR LED? */
477                         };
478
479                         gyroscope@68 {
480                                 compatible = "invensense,mpu3050";
481                                 reg = <0x68>;
482                                 /* GPIO226 interrupt */
483                                 interrupt-parent = <&gpio7>;
484                                 interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
485                                 mount-matrix = "0", "1", "0",
486                                                "1", "0", "0",
487                                                "0", "0", "1";
488                                 vlogic-supply = <&ab8500_ldo_aux2_reg>; // 1.8V
489                                 vdd-supply = <&ab8500_ldo_aux1_reg>; // 3V
490                                 pinctrl-names = "default";
491                                 pinctrl-0 = <&mpu3050_default>;
492
493                                 /*
494                                  * The MPU-3050 acts as a hub for the
495                                  * accelerometer.
496                                  */
497                                 i2c-gate {
498                                         #address-cells = <1>;
499                                         #size-cells = <0>;
500
501                                         /* Bosch BMA222E accelerometer */
502                                         accelerometer@18 {
503                                                 compatible = "bosch,bma222e";
504                                                 reg = <0x18>;
505                                                 mount-matrix = "0", "1", "0",
506                                                                "-1", "0", "0",
507                                                                "0", "0", "1";
508                                                 vddio-supply = <&ab8500_ldo_aux2_reg>; // 1.8V
509                                                 vdd-supply = <&ab8500_ldo_aux1_reg>; // 3V
510                                         };
511                                 };
512                         };
513                 };
514
515                 /* I2C2 "AGC I2C" */
516                 i2c@80128000 {
517                         status = "okay";
518                         pinctrl-names = "default", "sleep";
519                         pinctrl-0 = <&i2c2_b_1_default>;
520                         pinctrl-1 = <&i2c2_b_1_sleep>;
521
522                         /* Texas Instruments TSU6111 micro USB switch */
523                         usb-switch@25 {
524                                 compatible = "ti,tsu6111";
525                                 reg = <0x25>;
526                                 /* Interrupt JACK_INT_N on GPIO95 */
527                                 interrupt-parent = <&gpio2>;
528                                 interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
529                                 pinctrl-names = "default";
530                                 pinctrl-0 = <&tsu6111_default>;
531                         };
532                 };
533
534                 /* I2C3 */
535                 i2c@80110000 {
536                         status = "okay";
537
538                         pinctrl-names = "default", "sleep";
539                         pinctrl-0 = <&i2c3_c_2_default>;
540                         pinctrl-1 = <&i2c3_c_2_sleep>;
541
542                         /* Melfas MMS136 touchscreen */
543                         touchscreen@48 {
544                                 compatible = "melfas,mms136";
545                                 reg = <0x48>;
546                                 /* GPIO218 (TSP_INT_1V8) */
547                                 interrupt-parent = <&gpio6>;
548                                 interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
549                                 /* AVDD is "analog supply", 2.57-3.47 V */
550                                 avdd-supply = <&ldo_tsp_3v3_reg>;
551                                 /* VDD is "digital supply" 1.71-3.47V */
552                                 vdd-supply = <&ldo_tsp_1v8_reg>;
553                                 pinctrl-names = "default";
554                                 pinctrl-0 = <&tsp_default>;
555                                 touchscreen-size-x = <480>;
556                                 touchscreen-size-y = <800>;
557                         };
558                 };
559
560                 mcde@a0350000 {
561                         status = "okay";
562                         pinctrl-names = "default";
563                         pinctrl-0 = <&dpi_default_mode>;
564
565                         port {
566                                 display_out: endpoint {
567                                         remote-endpoint = <&panel_in>;
568                                 };
569                         };
570                 };
571         };
572 };
573
574 &pinctrl {
575         /*
576          * This extends the MC0_A_2 default config to include
577          * the card detect GPIO217 line.
578          */
579         sdi0 {
580                 mc0_a_2_default {
581                         default_cfg4 {
582                                 pins = "GPIO217_AH12"; /* card detect */
583                                 ste,config = <&gpio_in_nopull>;
584                         };
585                 };
586         };
587         mcde {
588                 dpi_default_mode: dpi_default {
589                         default_mux1 {
590                                 /* Mux in all the data lines */
591                                 function = "lcd";
592                                 groups =
593                                         /* Data lines D0-D7 GPIO70..GPIO77 */
594                                         "lcd_d0_d7_a_1",
595                                         /* Data lines D8-D11 GPIO78..GPIO81 */
596                                         "lcd_d8_d11_a_1",
597                                         /* Data lines D12-D15 GPIO82..GPIO85 */
598                                         "lcd_d12_d15_a_1",
599                                         /* Data lines D16-D23 GPIO161..GPIO168 */
600                                         "lcd_d16_d23_b_1";
601                         };
602                         default_mux2 {
603                                 function = "lcda";
604                                 /* Clock line on GPIO150, DE, VSO, HSO on GPIO169..GPIO171 */
605                                 groups = "lcdaclk_b_1", "lcda_b_1";
606                         };
607                         /* Input, no pull-up is the default state for pins used for an alt function */
608                         default_cfg1 {
609                                 pins = "GPIO150_C14", "GPIO169_D22", "GPIO170_C23", "GPIO171_D23";
610                                 ste,config = <&in_nopull>;
611                         };
612                 };
613         };
614         /* GPIO for panel reset control */
615         panel {
616                 panel_default_mode: panel_default {
617                         gavini_cfg1 {
618                                 /* Reset line */
619                                 pins = "GPIO139_C9";
620                                 ste,config = <&gpio_out_lo>;
621                         };
622                 };
623         };
624         /* GPIO that enables the LDO regulator for the eMMC */
625         emmc-ldo {
626                 emmc_ldo_en_default_mode: emmc_ldo_default {
627                         /* LDO enable on GPIO6 */
628                         gavini_cfg1 {
629                                 pins = "GPIO6_AF6";
630                                 ste,config = <&gpio_out_hi>;
631                         };
632                 };
633         };
634         /* GPIO that enables the LDO regulator for the touchscreen */
635         tsp-ldo {
636                 tsp_ldo_en_default_mode: tsp_ldo_default {
637                         /* LDO enable on GPIO94 */
638                         gavini_cfg1 {
639                                 pins = "GPIO94_D7";
640                                 ste,config = <&gpio_out_hi>;
641                         };
642                 };
643         };
644         /* Flash and torch */
645         flash {
646                 gpio_flash_default_mode: flash_default {
647                         janice_cfg1 {
648                                 pins = "GPIO140_B11", "GPIO141_C12";
649                                 ste,config = <&gpio_out_lo>;
650                         };
651                 };
652         };
653         /* GPIO that enables the LDO regulator for the key LED */
654         gpio-leds {
655                 gpio_leds_default_mode: gpio_leds_default {
656                         /* EN_LED_LDO on GPIO68 */
657                         gavini_cfg1 {
658                                 pins = "GPIO68_E1";
659                                 ste,config = <&gpio_out_hi>;
660                         };
661                 };
662         };
663         backlight {
664                 ktd259_backlight_default_mode: backlight_default {
665                         skomer_cfg1 {
666                                 pins = "GPIO20_AB4"; /* LCD_BL_EN */
667                                 ste,config = <&gpio_out_lo>;
668                         };
669                 };
670         };
671         /* GPIO that enables the LDO regulator for the touchkeys */
672         touchkey-ldo {
673                 tsp_ldo_on2_default_mode: tsp_ldo_on2_default {
674                         /* TSP_LDO_ON2 on GPIO89 */
675                         gavini_cfg1 {
676                                 pins = "GPIO89_E6";
677                                 ste,config = <&gpio_out_lo>;
678                         };
679                 };
680         };
681         touchkey {
682                 touchkey_default_mode: touchkey_default {
683                         gavini_cfg1 {
684                                 /* Interrupt */
685                                 pins = "GPIO198_AG25";
686                                 ste,config = <&gpio_in_nopull>;
687                         };
688                         gavini_cfg2 {
689                                 /* Reset, actually completely unused (not routed) */
690                                 pins = "GPIO205_AG23";
691                                 ste,config = <&gpio_in_pd>;
692                         };
693                 };
694         };
695         /* GPIO that enables the LDO regulator for the LCD display */
696         lcd-ldo {
697                 lcd_pwr_en_default_mode: lcd_pwr_en_default {
698                         /* LCD_PWR_EN on GPIO219 */
699                         gavini_cfg1 {
700                                 pins = "GPIO219_AG10";
701                                 ste,config = <&gpio_out_hi>;
702                         };
703                 };
704         };
705         /* GPIO that enables the WLAN internal LDO regulators */
706         wlan-ldo {
707                 wlan_ldo_en_default: wlan_ldo_default {
708                         /* GPIO215 named WLAN_RST_N */
709                         gavini_cfg1 {
710                                 pins = "GPIO215_AH13";
711                                 ste,config = <&gpio_out_lo>;
712                         };
713                 };
714         };
715         /* GPIO that enables the 2.9V SD card level translator */
716         sd-level-translator {
717                 sd_level_translator_default: sd_level_translator_default {
718                         /* level shifter on GPIO193 */
719                         skomer_cfg1 {
720                                 pins = "GPIO193_AH27";
721                                 ste,config = <&gpio_out_hi>;
722                         };
723                 };
724         };
725         /* GPIO keys */
726         gpio-keys {
727                 gpio_keys_default_mode: gpio_keys_default {
728                         skomer_cfg1 {
729                                 pins = "GPIO32_V2", /* Projector On HotKey */
730                                        "GPIO67_G2", /* VOL UP */
731                                        "GPIO91_B6", /* HOME */
732                                        "GPIO92_D6"; /* VOL DOWN */
733                                 ste,config = <&gpio_in_pu>;
734                         };
735                 };
736         };
737         /* Interrupt line for the Atmel MXT228 touchscreen */
738         tsp {
739                 tsp_default: tsp_default {
740                         gavini_cfg1 {
741                                 pins = "GPIO218_AH11";  /* TSP_INT_1V8 */
742                                 ste,config = <&gpio_in_nopull>;
743                         };
744                 };
745         };
746         /* Reset line for the Memsic MMC328 magnetometer */
747         mmc328 {
748                 mmc328_default: mmc328_gavini {
749                         gavini_cfg1 {
750                                 pins = "GPIO204_AF23";
751                                 ste,config = <&gpio_out_hi>;
752                         };
753                 };
754         };
755         /* Interrupt line for Invensense MPU3050 gyroscope */
756         mpu3050 {
757                 mpu3050_default: mpu3050 {
758                         gavini_cfg1 {
759                                 /* GPIO226 used for IRQ */
760                                 pins = "GPIO226_AF8";
761                                 ste,config = <&gpio_in_nopull>;
762                         };
763                 };
764         };
765         /* GPIO-based I2C bus for magnetometer and NCP6914 */
766         i2c-gpio-0 {
767                 i2c_gpio_0_default: i2c_gpio_0 {
768                         gavini_cfg1 {
769                                 pins = "GPIO143_D12", "GPIO144_B13";
770                                 ste,config = <&gpio_in_nopull>;
771                         };
772                 };
773         };
774         /* GPIO-based I2C bus for the Immersion ISA1200 */
775         i2c-gpio-2 {
776                 i2c_gpio_2_default: i2c_gpio_2 {
777                         gavini_cfg1 {
778                                 pins = "GPIO201_AF24", "GPIO202_AF25";
779                                 ste,config = <&gpio_in_nopull>;
780                         };
781                 };
782         };
783         /* GPIO-based I2C bus for the TI DPP2601 */
784         i2c-gpio-3 {
785                 i2c_gpio_3_default: i2c_gpio_3 {
786                         gavini_cfg1 {
787                                 pins = "GPIO196_AG26", "GPIO197_AH24";
788                                 ste,config = <&gpio_in_nopull>;
789                         };
790                 };
791         };
792         /* GPIO-based SPI bus for the display */
793         spi-gpio-0 {
794                 spi_gpio_0_default: spi_gpio_0_d {
795                         gavini_cfg1 {
796                                 pins = "GPIO220_AH10", "GPIO223_AH9", "GPIO224_AG9";
797                                 ste,config = <&gpio_out_hi>;
798                         };
799                         gavini_cfg2 {
800                                 pins = "GPIO225_AG8";
801                                 ste,config = <&gpio_in_nopull>;
802                         };
803                 };
804                 spi_gpio_0_sleep: spi_gpio_0_s {
805                         gavini_cfg1 {
806                                 pins = "GPIO220_AH10", "GPIO223_AH9",
807                                      "GPIO224_AG9", "GPIO225_AG8";
808                                 ste,config = <&gpio_out_hi>;
809                         };
810                         gavini_cfg2 {
811                                 pins = "GPIO225_AG8";
812                                 ste,config = <&gpio_out_lo>;
813                         };
814                 };
815         };
816         wlan {
817                 wlan_default_mode: wlan_default {
818                         /* GPIO216 for WL_HOST_WAKE */
819                         gavini_cfg2 {
820                                 pins = "GPIO216_AG12";
821                                 ste,config = <&gpio_in_pd>;
822                         };
823                 };
824         };
825         bluetooth {
826                 bluetooth_default_mode: bluetooth_default {
827                         /* GPIO199 BT_WAKE and GPIO222 BT_VREG_ON */
828                         gavini_cfg1 {
829                                 pins = "GPIO199_AH23", "GPIO222_AJ9";
830                                 ste,config = <&gpio_out_lo>;
831                         };
832                         /* GPIO97 BT_HOST_WAKE */
833                         gavini_cfg2 {
834                                 pins = "GPIO97_D9";
835                                 ste,config = <&gpio_in_nopull>;
836                         };
837                         /* GPIO209 BT_RST_N */
838                         gavini_cfg3 {
839                                 pins = "GPIO209_AG15";
840                                 ste,config = <&gpio_out_hi>;
841                         };
842                 };
843         };
844         /* Interrupt line for TI TSU6111 Micro USB switch */
845         tsu6111 {
846                 tsu6111_default: tsu6111 {
847                         gavini_cfg1 {
848                                 /* GPIO95 used for IRQ */
849                                 pins = "GPIO95_E8";
850                                 ste,config = <&gpio_in_nopull>;
851                         };
852                 };
853         };
854 };