GNU Linux-libre 5.19-rc6-gnu
[releases.git] / arch / arm / boot / dts / ste-ux500-samsung-janice.dts
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Devicetree for the Samsung Galaxy S Advance GT-I9070 also known as Janice.
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 S Advance (GT-I9070)";
17         compatible = "samsung,janice", "st-ericsson,u8500";
18
19         chosen {
20                 stdout-path = &serial2;
21         };
22
23         battery: battery {
24                 compatible = "samsung,eb535151vu";
25         };
26
27         thermal-zones {
28                 battery-thermal {
29                         /* This zone will be polled by the battery temperature code */
30                         polling-delay = <0>;
31                         polling-delay-passive = <0>;
32                         thermal-sensors = <&bat_therm>;
33                 };
34         };
35
36         bat_therm: thermistor {
37                 compatible = "samsung,1404-001221";
38                 io-channels = <&gpadc 0x02>; /* BatTemp */
39                 pullup-uv = <1800000>;
40                 pullup-ohm = <230000>;
41                 pulldown-ohm = <0>;
42                 #thermal-sensor-cells = <0>;
43         };
44
45         /* External LDO for eMMC LDO VMEM_3V3 controlled by GPIO6 */
46         ldo_3v3_reg: regulator-gpio-ldo-3v3 {
47                 compatible = "regulator-fixed";
48                 /* Supplied in turn by VBAT */
49                 regulator-name = "VMEM_3V3";
50                 regulator-min-microvolt = <3300000>;
51                 regulator-max-microvolt = <3300000>;
52                 gpio = <&gpio0 6 GPIO_ACTIVE_HIGH>;
53                 startup-delay-us = <5000>; // FIXME
54                 enable-active-high;
55                 pinctrl-names = "default";
56                 pinctrl-0 = <&emmc_ldo_en_default_mode>;
57         };
58
59         /*
60          * External Ricoh "TSP" regulator for the touchscreen.
61          * One GPIO line controls two voltages of 3.3V and 1.8V
62          * this line is known as "TSP_LDO_ON1" in the schematics.
63          */
64         ldo_tsp_3v3_reg: regulator-gpio-tsp-ldo-3v3 {
65                 compatible = "regulator-fixed";
66                 /* Supplied in turn by VBAT */
67                 regulator-name = "LDO_TSP_A3V3";
68                 regulator-min-microvolt = <3300000>;
69                 regulator-max-microvolt = <3300000>;
70                 /* GPIO94 controls this regulator */
71                 gpio = <&gpio2 30 GPIO_ACTIVE_HIGH>;
72                 /* 70 ms power-on delay */
73                 startup-delay-us = <70000>;
74                 enable-active-high;
75                 pinctrl-names = "default";
76                 pinctrl-0 = <&tsp_ldo_en_default_mode>;
77         };
78         ldo_tsp_1v8_reg: regulator-gpio-tsp-ldo-1v8 {
79                 compatible = "regulator-fixed";
80                 /* Supplied in turn by VBAT */
81                 regulator-name = "VREG_TSP_1V8";
82                 regulator-min-microvolt = <1800000>;
83                 regulator-max-microvolt = <1800000>;
84                 /* GPIO94 controls this regulator */
85                 gpio = <&gpio2 30 GPIO_ACTIVE_HIGH>;
86                 /* 70 ms power-on delay */
87                 startup-delay-us = <70000>;
88                 enable-active-high;
89                 pinctrl-names = "default";
90                 pinctrl-0 = <&tsp_ldo_en_default_mode>;
91         };
92
93         /*
94          * External Ricoh "TSP" regulator for the touchkeys.
95          * Two GPIO lines controls two voltages of 3.3V and 1.8V
96          * TSP_LDO_ON2 controls VREG_TOUCHKEY_1V8
97          * EN_LED_LDO controls VREG_KLED_3V3 (key LED)
98          */
99         ldo_kled_3v3_reg: regulator-gpio-vreg-kled-3v3 {
100                 compatible = "regulator-fixed";
101                 /* Supplied in turn by VBAT */
102                 regulator-name = "VREG_KLED_3V3";
103                 regulator-min-microvolt = <3300000>;
104                 regulator-max-microvolt = <3300000>;
105                 /* GPIO68 controls this regulator */
106                 gpio = <&gpio2 4 GPIO_ACTIVE_HIGH>;
107                 /* 70 ms power-on delay */
108                 startup-delay-us = <70000>;
109                 enable-active-high;
110                 pinctrl-names = "default";
111                 pinctrl-0 = <&en_led_ldo_default_mode>;
112         };
113         ldo_touchkey_1v8_reg: regulator-gpio-vreg-touchkey-1v8 {
114                 compatible = "regulator-fixed";
115                 /* Supplied in turn by VBAT */
116                 regulator-name = "VREG_TOUCHKEY_1V8";
117                 regulator-min-microvolt = <1800000>;
118                 regulator-max-microvolt = <1800000>;
119                 /* GPIO89 controls this regulator */
120                 gpio = <&gpio2 25 GPIO_ACTIVE_HIGH>;
121                 /* 70 ms power-on delay */
122                 startup-delay-us = <70000>;
123                 enable-active-high;
124                 pinctrl-names = "default";
125                 pinctrl-0 = <&tsp_ldo_on2_default_mode>;
126         };
127
128
129         /*
130          * External Ricoh RP152L010B-TR LCD LDO regulator for the display.
131          * LCD_PWR_EN controls a 3.0V and 1.8V output.
132          */
133         lcd_3v0_reg: regulator-gpio-lcd-3v0 {
134                 compatible = "regulator-fixed";
135                 /* Supplied in turn by VBAT */
136                 regulator-name = "VREG_LCD_3V0";
137                 regulator-min-microvolt = <3000000>;
138                 regulator-max-microvolt = <3000000>;
139                 /* GPIO219 controls this regulator */
140                 gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
141                 enable-active-high;
142                 pinctrl-names = "default";
143                 pinctrl-0 = <&lcd_pwr_en_default_mode>;
144         };
145         lcd_1v8_reg: regulator-gpio-lcd-1v8 {
146                 compatible = "regulator-fixed";
147                 /* Supplied in turn by VBAT */
148                 regulator-name = "VREG_LCD_1V8";
149                 regulator-min-microvolt = <1800000>;
150                 regulator-max-microvolt = <1800000>;
151                 /* GPIO219 controls this regulator */
152                 gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
153                 enable-active-high;
154                 pinctrl-names = "default";
155                 pinctrl-0 = <&lcd_pwr_en_default_mode>;
156         };
157
158         /*
159          * This regulator is a GPIO line that drives the Broadcom WLAN
160          * line WL_REG_ON high and enables the internal regulators
161          * inside the chip. Unfortunatley it is erroneously named
162          * WLAN_RST_N on the schematic but it is not a reset line.
163          *
164          * The voltage specified here is only used to determine the OCR mask,
165          * the for the SDIO connector, the chip is actually connected
166          * directly to VBAT.
167          */
168         wl_reg: regulator-gpio-wlan {
169                 compatible = "regulator-fixed";
170                 regulator-name = "WL_REG_ON";
171                 regulator-min-microvolt = <3000000>;
172                 regulator-max-microvolt = <3000000>;
173                 startup-delay-us = <100000>;
174                 /* GPIO215 (WLAN_RST_N to WL_REG_ON) */
175                 gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
176                 enable-active-high;
177                 pinctrl-names = "default";
178                 pinctrl-0 = <&wlan_ldo_en_default>;
179         };
180
181
182         gpio-keys {
183                 compatible = "gpio-keys";
184                 pinctrl-names = "default";
185                 pinctrl-0 = <&gpio_keys_default_mode>;
186
187                 button-home {
188                         linux,code = <KEY_HOME>;
189                         label = "HOME";
190                         /* GPIO91 */
191                         gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
192                 };
193                 button-volup {
194                         linux,code = <KEY_VOLUMEUP>;
195                         label = "VOL+";
196                         /* GPIO67 */
197                         gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
198                 };
199                 button-voldown {
200                         linux,code = <KEY_VOLUMEDOWN>;
201                         label = "VOL-";
202                         /* GPIO92 */
203                         gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
204                 };
205         };
206
207         /* Richtek RT8515GQW Flash LED Driver IC */
208         flash {
209                 compatible = "richtek,rt8515";
210                 /* GPIO 140 */
211                 enf-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
212                 /* GPIO 141 */
213                 ent-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
214                 /*
215                  * RFS is 16 kOhm and RTS is 100 kOhm giving
216                  * the flash max current 343mA and torch max
217                  * current 55 mA.
218                  */
219                 richtek,rfs-ohms = <16000>;
220                 richtek,rts-ohms = <100000>;
221                 pinctrl-names = "default";
222                 pinctrl-0 = <&gpio_flash_default_mode>;
223
224                 led {
225                         function = LED_FUNCTION_FLASH;
226                         color = <LED_COLOR_ID_WHITE>;
227                         flash-max-timeout-us = <250000>;
228                         flash-max-microamp = <343750>;
229                         led-max-microamp = <55000>;
230                 };
231         };
232
233         /* Bit-banged I2C on GPIO143 and GPIO144 also called "SUBPMU I2C" */
234         i2c-gpio-0 {
235                 compatible = "i2c-gpio";
236                 sda-gpios = <&gpio4 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
237                 scl-gpios = <&gpio4 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
238                 pinctrl-names = "default";
239                 pinctrl-0 = <&i2c_gpio_0_default>;
240                 #address-cells = <1>;
241                 #size-cells = <0>;
242
243                 /* Yamaha YAS530 magnetometer */
244                 magnetometer@2e {
245                         compatible = "yamaha,yas530";
246                         reg = <0x2e>;
247                         /* VDD 3V */
248                         vdd-supply = <&ab8500_ldo_aux1_reg>;
249                         /* IOVDD 1.8V */
250                         iovdd-supply = <&ab8500_ldo_aux2_reg>;
251                         /* GPIO204 COMPASS_RST_N */
252                         reset-gpios = <&gpio6 12 GPIO_ACTIVE_LOW>;
253                         pinctrl-names = "default";
254                         pinctrl-0 = <&yas529_default>;
255                 };
256                 /* TODO: this should also be used by the NCP6914 Camera power management unit */
257         };
258
259         /*
260          * These pins do have an spi controller, however the controller on
261          * these pins is not the fully featured PL022 SSP/SPI block but the
262          * ST Micro diet "PL023" version. One of the lacking features in
263          * this derivative is 3wire support, so it cannot be used to drive
264          * this panel interface. We have to use GPIO bit-banging instead.
265          */
266         spi-gpio-0 {
267                 compatible = "spi-gpio";
268                 /* Clock on GPIO220 */
269                 sck-gpios = <&gpio6 28 GPIO_ACTIVE_HIGH>;
270                 /* MISO/MOSI on GPIO224 (no separate MISO pin) */
271                 mosi-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
272                 /* Chip select on GPIO223 */
273                 cs-gpios = <&gpio6 31 GPIO_ACTIVE_LOW>;
274                 num-chipselects = <1>;
275
276                 pinctrl-names = "default";
277                 pinctrl-0 = <&spi_gpio_0_default>;
278                 #address-cells = <1>;
279                 #size-cells = <0>;
280
281                 panel@0 {
282                         compatible = "samsung,s6e63m0";
283                         reg = <0>;
284                         vdd3-supply = <&lcd_3v0_reg>;
285                         vci-supply = <&lcd_1v8_reg>;
286                         /* Reset on GPIO139 */
287                         reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
288                         pinctrl-names = "default";
289                         pinctrl-0 = <&panel_default_mode>;
290                         spi-3wire;
291                         /* TYPE 3: inverse clock polarity and phase */
292                         spi-cpha;
293                         spi-cpol;
294
295                         port {
296                                 panel_in: endpoint {
297                                         remote-endpoint = <&display_out>;
298                                 };
299                         };
300                 };
301         };
302
303         /*
304          * Current sense amplifier on the light sensor to convert current to
305          * voltage. We do not know if this is the actual configuration. The
306          * sense resistor value was found by calibrating in a room ambient
307          * light with a second mobile phone light sensor as reference. If you
308          * pry a Janice phone apart and inspect it you may figure this out.
309          */
310         gp2a_shunt: current-sense-shunt {
311                 compatible = "current-sense-shunt";
312                 io-channels = <&gpadc 0x07>;
313                 shunt-resistor-micro-ohms = <15000000>; /* 15 ohms c:a */
314                 #io-channel-cells = <0>;
315                 io-channel-ranges;
316         };
317
318         /* Bit-banged I2C on GPIO196 and GPIO197 also called "TOUCHKEY_I2C" */
319         i2c-gpio-1 {
320                 compatible = "i2c-gpio";
321                 sda-gpios = <&gpio6 5 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
322                 scl-gpios = <&gpio6 4 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
323                 clock-frequency = <400000>;
324                 pinctrl-names = "default";
325                 pinctrl-0 = <&i2c_gpio_1_default>;
326                 #address-cells = <1>;
327                 #size-cells = <0>;
328
329                 touchkey@20 {
330                         compatible = "coreriver,tc360-touchkey";
331                         reg = <0x20>;
332                         vdd-supply = <&ldo_kled_3v3_reg>;
333                         vcc-supply = <&ldo_touchkey_1v8_reg>;
334                         vddio-supply = <&ldo_touchkey_1v8_reg>;
335
336                         /* Interrupt on GPIO 198 */
337                         interrupt-parent = <&gpio6>;
338                         interrupts = <6 IRQ_TYPE_EDGE_RISING>;
339
340                         pinctrl-names = "default";
341                         pinctrl-0 = <&touchkey_default_mode>;
342                         linux,keycodes = <KEY_MENU KEY_BACK>;
343                 };
344         };
345
346         /* Bit-banged I2C on GPIO201 and GPIO202 also called "MOT_I2C" */
347         i2c-gpio-2 {
348                 compatible = "i2c-gpio";
349                 sda-gpios = <&gpio6 10 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
350                 scl-gpios = <&gpio6 9 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
351                 pinctrl-names = "default";
352                 pinctrl-0 = <&i2c_gpio_2_default>;
353                 #address-cells = <1>;
354                 #size-cells = <0>;
355                 /* TODO: add the Immersion ISA1200 I2C device here */
356         };
357
358         /* Bit-banged I2C on GPIO151 and GPIO152 also called "NFC_I2C" */
359         i2c-gpio-3 {
360                 compatible = "i2c-gpio";
361                 sda-gpios = <&gpio4 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
362                 scl-gpios = <&gpio4 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
363                 pinctrl-names = "default";
364                 pinctrl-0 = <&i2c_gpio_3_default>;
365                 #address-cells = <1>;
366                 #size-cells = <0>;
367
368                 nfc@30 {
369                         compatible = "nxp,pn547", "nxp,nxp-nci-i2c";
370                         reg = <0x30>;
371                         /* NFC IRQ on GPIO32 */
372                         interrupt-parent = <&gpio1>;
373                         interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
374                         /* GPIO 31 */
375                         firmware-gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>;
376                         /* GPIO88 */
377                         enable-gpios = <&gpio2 24 GPIO_ACTIVE_HIGH>;
378                         pinctrl-names = "default";
379                         pinctrl-0 = <&pn547_janice_default>;
380                 };
381         };
382
383         soc {
384                 /* External Micro SD slot */
385                 mmc@80126000 {
386                         arm,primecell-periphid = <0x10480180>;
387                         max-frequency = <50000000>;
388                         bus-width = <4>;
389                         cap-sd-highspeed;
390                         cap-mmc-highspeed;
391                         st,sig-dir-cmd;
392                         st,sig-dir-dat0;
393                         st,sig-dir-dat2;
394                         st,sig-pin-fbclk;
395                         full-pwr-cycle;
396                         /* MMC is powered by AUX3 1.2V .. 2.91V */
397                         vmmc-supply = <&ab8500_ldo_aux3_reg>;
398                         /* 2.9 V level translator is using AUX3 at 2.9 V as well */
399                         vqmmc-supply = <&ab8500_ldo_aux3_reg>;
400                         pinctrl-names = "default", "sleep";
401                         pinctrl-0 = <&mc0_a_2_default>;
402                         pinctrl-1 = <&mc0_a_2_sleep>;
403                         cd-gpios  = <&gpio6 25 GPIO_ACTIVE_LOW>; // GPIO217
404                         status = "okay";
405                 };
406
407                 /* WLAN SDIO channel */
408                 mmc@80118000 {
409                         arm,primecell-periphid = <0x10480180>;
410                         max-frequency = <50000000>;
411                         bus-width = <4>;
412                         non-removable;
413                         cap-sd-highspeed;
414                         pinctrl-names = "default", "sleep";
415                         pinctrl-0 = <&mc1_a_2_default>;
416                         pinctrl-1 = <&mc1_a_2_sleep>;
417                         /*
418                          * GPIO-controlled voltage enablement: this drives
419                          * the WL_REG_ON line high when we use this device.
420                          * Represented as regulator to fill OCR mask.
421                          */
422                         vmmc-supply = <&wl_reg>;
423
424                         #address-cells = <1>;
425                         #size-cells = <0>;
426                         status = "okay";
427
428                         wifi@1 {
429                                 compatible = "brcm,bcm4330-fmac", "brcm,bcm4329-fmac";
430                                 reg = <1>;
431                                 /* GPIO216 WL_HOST_WAKE */
432                                 interrupt-parent = <&gpio6>;
433                                 interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
434                                 interrupt-names = "host-wake";
435                                 pinctrl-names = "default";
436                                 pinctrl-0 = <&wlan_default_mode>;
437                         };
438                 };
439
440                 /* eMMC */
441                 mmc@80005000 {
442                         arm,primecell-periphid = <0x10480180>;
443                         max-frequency = <50000000>;
444                         bus-width = <8>;
445                         non-removable;
446                         cap-mmc-highspeed;
447                         mmc-ddr-1_8v;
448                         no-sdio;
449                         no-sd;
450                         vmmc-supply = <&ldo_3v3_reg>;
451                         pinctrl-names = "default", "sleep";
452                         pinctrl-0 = <&mc2_a_1_default>;
453                         pinctrl-1 = <&mc2_a_1_sleep>;
454                         status = "okay";
455                 };
456
457                 /* GBF (Bluetooth) UART */
458                 uart@80120000 {
459                         pinctrl-names = "default", "sleep";
460                         pinctrl-0 = <&u0_a_1_default>;
461                         pinctrl-1 = <&u0_a_1_sleep>;
462                         status = "okay";
463
464                         bluetooth {
465                                 /* BCM4330B1 actually */
466                                 compatible = "brcm,bcm4330-bt";
467                                 /* GPIO222 rail BT_VREG_EN to BT_REG_ON */
468                                 shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
469                                 /* BT_WAKE on GPIO199 */
470                                 device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
471                                 /* BT_HOST_WAKE on GPIO97 */
472                                 /* FIXME: convert to interrupt */
473                                 host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
474                                 /* BT_RST_N on GPIO209 */
475                                 reset-gpios = <&gpio6 17 GPIO_ACTIVE_LOW>;
476                                 pinctrl-names = "default";
477                                 pinctrl-0 = <&bluetooth_default_mode>;
478                         };
479                 };
480
481                 /* GPS UART */
482                 uart@80121000 {
483                         status = "okay";
484                         pinctrl-names = "default", "sleep";
485                         /* CTS/RTS is not used, CTS is repurposed as GPIO */
486                         pinctrl-0 = <&u1rxtx_a_1_default>;
487                         pinctrl-1 = <&u1rxtx_a_1_sleep>;
488
489                         gnss {
490                                 /*
491                                  * The Low Noise Amplifier (LNA) power and enablement is controlled
492                                  * autonomously by the GSD4t.
493                                  * Janice has a SiRFstarIV-based GSD4t
494                                  * Golden has a SiRFstarV 5t-based CSRG05TA03-ICJE-R.
495                                  */
496                                 compatible = "csr,gsd4t";
497                                 /* GPS_RSTN on GPIO21 */
498                                 reset-gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
499                                 /* GPS_ON_OFF on GPIO96 */
500                                 sirf,onoff-gpios = <&gpio3 0 GPIO_ACTIVE_HIGH>;
501                                 /* GPS_1V8 (VSMPS2) */
502                                 vcc-supply = <&db8500_vsmps2_reg>;
503                                 pinctrl-names = "default";
504                                 pinctrl-0 = <&gsd4t_janice_default>;
505                                 /* According to /etc/sirfgps.conf */
506                                 current-speed = <460800>;
507                         };
508                 };
509
510                 /* Debugging console UART connected to TSU6111RSVR (FSA880) */
511                 uart@80007000 {
512                         status = "okay";
513                         pinctrl-names = "default", "sleep";
514                         pinctrl-0 = <&u2rxtx_c_1_default>;
515                         pinctrl-1 = <&u2rxtx_c_1_sleep>;
516                 };
517
518                 prcmu@80157000 {
519                         ab8500 {
520                                 phy {
521                                         pinctrl-names = "default", "sleep";
522                                         pinctrl-0 = <&usb_a_1_default>;
523                                         pinctrl-1 = <&usb_a_1_sleep>;
524                                 };
525
526                                 ab8500_fg {
527                                         line-impedance-micro-ohms = <15000>;
528                                 };
529
530                                 regulator {
531                                         ab8500_ldo_aux1 {
532                                                 /* Used for VDD for sensors */
533                                                 regulator-name = "V-SENSORS-VDD";
534                                                 regulator-min-microvolt = <3000000>;
535                                                 regulator-max-microvolt = <3000000>;
536                                         };
537
538                                         ab8500_ldo_aux2 {
539                                                 /* Used for VIO for sensors */
540                                                 regulator-name = "V-SENSORS-VIO";
541                                                 regulator-min-microvolt = <1800000>;
542                                                 regulator-max-microvolt = <1800000>;
543                                         };
544
545                                         ab8500_ldo_aux3 {
546                                                 /* Used for voltage for external MMC/SD card */
547                                                 regulator-name = "V-MMC-SD";
548                                                 regulator-min-microvolt = <1200000>;
549                                                 regulator-max-microvolt = <2910000>;
550                                         };
551                                 };
552                         };
553                 };
554
555                 /* I2C0 */
556                 i2c@80004000 {
557                         status = "okay";
558                         pinctrl-names = "default", "sleep";
559                         pinctrl-0 = <&i2c0_a_1_default>;
560                         pinctrl-1 = <&i2c0_a_1_sleep>;
561
562                         proximity@44 {
563                                 /* Janice has the GP2AP002A00F with light sensor */
564                                 compatible = "sharp,gp2ap002a00f";
565                                 clock-frequency = <400000>;
566                                 reg = <0x44>;
567
568                                 interrupt-parent = <&gpio4>;
569                                 interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
570                                 vdd-supply = <&ab8500_ldo_aux1_reg>;
571                                 vio-supply = <&ab8500_ldo_aux2_reg>;
572                                 /* ADC channel AUX2 to read ALSOUT ambient light sensor out */
573                                 io-channels = <&gp2a_shunt>;
574                                 io-channel-names = "alsout";
575                                 pinctrl-names = "default";
576                                 pinctrl-0 = <&gp2ap002_janice_default>;
577                                 /* B1 mode (arch/arm/mach-ux500/include/mach/gp2a.h) */
578                                 sharp,proximity-far-hysteresis = /bits/ 8 <0x40>;
579                                 sharp,proximity-close-hysteresis = /bits/ 8 <0x0f>;
580                         };
581                 };
582
583                 /* I2C1 on GPIO16 and GPIO17 also called "MUS I2C" */
584                 i2c@80122000 {
585                         status = "okay";
586                         pinctrl-names = "default","sleep";
587                         pinctrl-0 = <&i2c1_b_2_default>;
588                         pinctrl-1 = <&i2c1_b_2_sleep>;
589
590                         /* Texas Instruments TSU6111 micro USB switch */
591                         usb-switch@25 {
592                                 compatible = "ti,tsu6111";
593                                 reg = <0x25>;
594                                 /* Interrupt JACK_INT_N on GPIO95 */
595                                 interrupt-parent = <&gpio2>;
596                                 interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
597                                 pinctrl-names = "default";
598                                 pinctrl-0 = <&tsu6111_janice_default>;
599                         };
600                 };
601
602                 /* I2C2 on GPIO10 and GPIO11 also called "SENSORS I2C" */
603                 i2c@80128000 {
604                         status = "okay";
605                         pinctrl-names = "default", "sleep";
606                         pinctrl-0 = <&i2c2_b_2_default>;
607                         pinctrl-1 = <&i2c2_b_2_sleep>;
608
609                         gyroscope@68 {
610                                 compatible = "invensense,mpu3050";
611                                 reg = <0x68>;
612                                 /* GPIO226 interrupt */
613                                 interrupt-parent = <&gpio7>;
614                                 interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
615                                 /* FIXME: no idea about this */
616                                 mount-matrix = "1", "0", "0",
617                                                "0", "1", "0",
618                                                "0", "0", "1";
619                                 vlogic-supply = <&ab8500_ldo_aux2_reg>; // 1.8V
620                                 vdd-supply = <&ab8500_ldo_aux1_reg>; // 3V
621                                 pinctrl-names = "default";
622                                 pinctrl-0 = <&mpu3050_janice_default>;
623
624                                 /*
625                                  * The MPU-3050 acts as a hub for the
626                                  * accelerometer.
627                                  */
628                                 i2c-gate {
629                                         #address-cells = <1>;
630                                         #size-cells = <0>;
631
632                                         /* Bosch BMA222 accelerometer */
633                                         accelerometer@8 {
634                                                 compatible = "bosch,bma222";
635                                                 reg = <0x08>;
636                                                 mount-matrix = "0", "1", "0",
637                                                                "-1", "0", "0",
638                                                                "0", "0", "1";
639                                                 vddio-supply = <&ab8500_ldo_aux2_reg>; // 1.8V
640                                                 vdd-supply = <&ab8500_ldo_aux1_reg>; // 3V
641                                         };
642                                 };
643                         };
644                 };
645
646                 /* I2C3 */
647                 i2c@80110000 {
648                         status = "okay";
649
650                         pinctrl-names = "default", "sleep";
651                         pinctrl-0 = <&i2c3_c_2_default>;
652                         pinctrl-1 = <&i2c3_c_2_sleep>;
653
654                         /* Atmel mXT224E touchscreen */
655                         touchscreen@4a {
656                                 compatible = "atmel,maxtouch";
657                                 reg = <0x4a>;
658                                 /* GPIO218 (TSP_INT_1V8) */
659                                 interrupt-parent = <&gpio6>;
660                                 interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
661                                 /* VDDA is "analog supply", 2.57-3.47 V */
662                                 vdda-supply = <&ldo_tsp_3v3_reg>;
663                                 /* VDD is "digital supply" 1.71-3.47V */
664                                 vdd-supply = <&ldo_tsp_1v8_reg>;
665                                 pinctrl-names = "default";
666                                 pinctrl-0 = <&tsp_default>;
667                         };
668                 };
669
670                 mcde@a0350000 {
671                         status = "okay";
672                         pinctrl-names = "default";
673                         pinctrl-0 = <&dpi_default_mode>;
674
675                         port {
676                                 display_out: endpoint {
677                                         remote-endpoint = <&panel_in>;
678                                 };
679                         };
680                 };
681         };
682 };
683
684 &pinctrl {
685         /*
686          * This extends the MC0_A_2 default config to include
687          * the card detect GPIO217 line.
688          */
689         sdi0 {
690                 mc0_a_2_default {
691                         default_cfg4 {
692                                 pins = "GPIO217_AH12"; /* card detect */
693                                 ste,config = <&gpio_in_pd>;
694                         };
695                 };
696         };
697         mcde {
698                 dpi_default_mode: dpi_default {
699                         default_mux1 {
700                                 /* Mux in all the data lines */
701                                 function = "lcd";
702                                 groups =
703                                         /* Data lines D0-D7 GPIO70..GPIO77 */
704                                         "lcd_d0_d7_a_1",
705                                         /* Data lines D8-D11 GPIO78..GPIO81 */
706                                         "lcd_d8_d11_a_1",
707                                         /* Data lines D12-D15 GPIO82..GPIO85 */
708                                         "lcd_d12_d15_a_1",
709                                         /* Data lines D16-D23 GPIO161..GPIO168 */
710                                         "lcd_d16_d23_b_1";
711                         };
712                         default_mux2 {
713                                 function = "lcda";
714                                 /* Clock line on GPIO150, DE, VSO, HSO on GPIO169..GPIO171 */
715                                 groups = "lcdaclk_b_1", "lcda_b_1";
716                         };
717                         /* Input, no pull-up is the default state for pins used for an alt function */
718                         default_cfg1 {
719                                 pins = "GPIO150_C14", "GPIO169_D22", "GPIO170_C23", "GPIO171_D23";
720                                 ste,config = <&in_nopull>;
721                         };
722                 };
723         };
724         /* GPIO for panel reset control */
725         panel {
726                 panel_default_mode: panel_default {
727                         janice_cfg1 {
728                                 /* Reset line */
729                                 pins = "GPIO139_C9";
730                                 ste,config = <&gpio_out_lo>;
731                         };
732                 };
733         };
734         /* GPIO that enables the LDO regulator for the eMMC */
735         emmc-ldo {
736                 emmc_ldo_en_default_mode: emmc_ldo_default {
737                         /* LDO enable on GPIO6 */
738                         janice_cfg1 {
739                                 pins = "GPIO6_AF6";
740                                 ste,config = <&gpio_out_hi>;
741                         };
742                 };
743         };
744         /* GPIO that enables the LDO regulator for the touchscreen */
745         tsp-ldo {
746                 tsp_ldo_en_default_mode: tsp_ldo_default {
747                         /* LDO enable on GPIO94 */
748                         janice_cfg1 {
749                                 pins = "GPIO94_D7";
750                                 ste,config = <&gpio_out_hi>;
751                         };
752                 };
753         };
754         /* GPIO that enables the LDO regulator for the key LED */
755         key-led {
756                 en_led_ldo_default_mode: en_led_ldo_default {
757                         /* EN_LED_LDO on GPIO68 */
758                         janice_cfg1 {
759                                 pins = "GPIO68_E1";
760                                 ste,config = <&gpio_out_hi>;
761                         };
762                 };
763         };
764         /* GPIO that enables the LDO regulator for the touchkeys */
765         touchkey-ldo {
766                 tsp_ldo_on2_default_mode: tsp_ldo_on2_default {
767                         /* TSP_LDO_ON2 on GPIO89 */
768                         janice_cfg1 {
769                                 pins = "GPIO89_E6";
770                                 ste,config = <&gpio_out_lo>;
771                         };
772                 };
773         };
774         touchkey {
775                 touchkey_default_mode: touchkey_default {
776                         janice_cfg1 {
777                                 /* Interrupt */
778                                 pins = "GPIO198_AG25";
779                                 ste,config = <&gpio_in_nopull>;
780                         };
781                         janice_cfg2 {
782                                 /* Reset, actually completely unused (not routed) */
783                                 pins = "GPIO205_AG23";
784                                 ste,config = <&gpio_in_pd>;
785                         };
786                 };
787         };
788         /* GPIO that enabled the LDO regulator for the LCD display */
789         lcd-ldo {
790                 lcd_pwr_en_default_mode: lcd_pwr_en_default {
791                         /* LCD_PWR_EN on GPIO219 */
792                         janice_cfg1 {
793                                 pins = "GPIO219_AG10";
794                                 ste,config = <&gpio_out_hi>;
795                         };
796                 };
797         };
798         /* GPIO that enables the WLAN internal LDO regulators */
799         wlan-ldo {
800                 wlan_ldo_en_default: wlan_ldo_default {
801                         /* GPIO215 named WLAN_RST_N */
802                         janice_cfg1 {
803                                 pins = "GPIO215_AH13";
804                                 ste,config = <&gpio_out_lo>;
805                         };
806                 };
807         };
808         /* Flash and torch */
809         flash {
810                 gpio_flash_default_mode: flash_default {
811                         janice_cfg1 {
812                                 pins = "GPIO140_B11", "GPIO141_C12";
813                                 ste,config = <&gpio_out_lo>;
814                         };
815                 };
816         };
817         /* GPIO keys */
818         gpio-keys {
819                 gpio_keys_default_mode: gpio_keys_default {
820                         skomer_cfg1 {
821                                 pins = "GPIO67_G2", /* VOL UP */
822                                        "GPIO91_B6", /* HOME */
823                                        "GPIO92_D6"; /* VOL DOWN */
824                                 ste,config = <&gpio_in_pu>;
825                         };
826                 };
827         };
828         /* Interrupt line for the Atmel MXT228 touchscreen */
829         tsp {
830                 tsp_default: tsp_default {
831                         janice_cfg1 {
832                                 pins = "GPIO218_AH11";  /* TSP_INT_1V8 */
833                                 ste,config = <&gpio_in_nopull>;
834                         };
835                 };
836         };
837         /* Reset line for the Yamaha YAS529 magnetometer */
838         yas529 {
839                 yas529_default: yas529_janice {
840                         janice_cfg1 {
841                                 pins = "GPIO204_AF23";
842                                 ste,config = <&gpio_out_hi>;
843                         };
844                 };
845         };
846         /* Interrupt line for light/proximity sensor GP2AP002 */
847         gp2ap002 {
848                 gp2ap002_janice_default: gp2ap002_janice {
849                         janice_cfg1 {
850                                 pins = "GPIO146_D13";
851                                 ste,config = <&gpio_in_nopull>;
852                         };
853                 };
854         };
855         /* Interrupt line for Invensense MPU3050 gyroscope */
856         mpu3050 {
857                 mpu3050_janice_default: mpu3050_janice {
858                         janice_cfg1 {
859                                 /* GPIO226 used for IRQ */
860                                 pins = "GPIO226_AF8";
861                                 ste,config = <&gpio_in_nopull>;
862                         };
863                 };
864         };
865         /* GPIO-based I2C bus for magnetometer and NCP6914 */
866         i2c-gpio-0 {
867                 i2c_gpio_0_default: i2c_gpio_0 {
868                         janice_cfg1 {
869                                 pins = "GPIO143_D12", "GPIO144_B13";
870                                 ste,config = <&gpio_in_nopull>;
871                         };
872                 };
873         };
874         /* GPIO-based I2C bus for the Cypress touchkeys */
875         i2c-gpio-1 {
876                 i2c_gpio_1_default: i2c_gpio_1 {
877                         janice_cfg1 {
878                                 pins = "GPIO196_AG26", "GPIO197_AH24";
879                                 ste,config = <&gpio_in_nopull>;
880                         };
881                 };
882         };
883         /* GPIO-based I2C bus for the Immersion ISA1200 */
884         i2c-gpio-2 {
885                 i2c_gpio_2_default: i2c_gpio_2 {
886                         janice_cfg1 {
887                                 pins = "GPIO201_AF24", "GPIO202_AF25";
888                                 ste,config = <&gpio_in_nopull>;
889                         };
890                 };
891         };
892         /* GPIO-based I2C bus for the NFC */
893         i2c-gpio-3 {
894                 i2c_gpio_3_default: i2c_gpio_3 {
895                         janice_cfg1 {
896                                 pins = "GPIO151_D17", "GPIO152_D16";
897                                 ste,config = <&gpio_in_nopull>;
898                         };
899                 };
900         };
901         /* GPIO-based SPI bus for the display */
902         spi-gpio-0 {
903                 spi_gpio_0_default: spi_gpio_0 {
904                         janice_cfg1 {
905                                 pins = "GPIO220_AH10", "GPIO223_AH9", "GPIO224_AG9";
906                                 ste,config = <&gpio_out_hi>;
907                         };
908                         /* This pin is unused but belongs with this SPI block */
909                         janice_cfg2 {
910                                 pins = "GPIO225_AG8";
911                                 ste,config = <&in_pd>;
912                         };
913                 };
914         };
915         wlan {
916                 wlan_default_mode: wlan_default {
917                         /* GPIO216 for WL_HOST_WAKE */
918                         janice_cfg2 {
919                                 pins = "GPIO216_AG12";
920                                 ste,config = <&gpio_in_pd>;
921                         };
922                 };
923         };
924         bluetooth {
925                 bluetooth_default_mode: bluetooth_default {
926                         /* GPIO199 BT_WAKE and GPIO222 BT_VREG_ON */
927                         janice_cfg1 {
928                                 pins = "GPIO199_AH23", "GPIO222_AJ9";
929                                 ste,config = <&gpio_out_lo>;
930                         };
931                         /* GPIO97 BT_HOST_WAKE */
932                         janice_cfg2 {
933                                 pins = "GPIO97_D9";
934                                 ste,config = <&gpio_in_nopull>;
935                         };
936                         /* GPIO209 BT_RST_N */
937                         janice_cfg3 {
938                                 pins = "GPIO209_AG15";
939                                 ste,config = <&gpio_out_hi>;
940                         };
941                 };
942         };
943         /* Interrupt line for TI TSU6111 Micro USB switch */
944         tsu6111 {
945                 tsu6111_janice_default: tsu6111_janice {
946                         janice_cfg1 {
947                                 /* GPIO95 used for IRQ */
948                                 pins = "GPIO95_E8";
949                                 ste,config = <&gpio_in_nopull>;
950                         };
951                 };
952         };
953         nfc {
954                 pn547_janice_default: pn547_janice {
955                         /* Interrupt line */
956                         janice_cfg1 {
957                                 pins = "GPIO32_V2";
958                                 ste,config = <&gpio_in_nopull>;
959                         };
960                         /* Enable and firmware GPIOs */
961                         janice_cfg2 {
962                                 pins = "GPIO31_V3", "GPIO88_C4";
963                                 ste,config = <&gpio_out_lo>;
964                         };
965                 };
966         };
967         gsd4t {
968                 gsd4t_janice_default: gsd4t_janice {
969                         /* Reset line, start out asserted */
970                         janice_cfg1 {
971                                 pins = "GPIO21_AB3";
972                                 ste,config = <&gpio_out_lo>;
973                         };
974                         /* GPS_ON_OFF, start out deasserted (off) */
975                         janice_cfg2 {
976                                 pins = "GPIO96_D8";
977                                 ste,config = <&gpio_out_lo>;
978                         };
979                         /* Unused power enablement line, used in R0.0 and R0.1 boards */
980                         janice_cfg3 {
981                                 pins = "GPIO86_C6";
982                                 ste,config = <&gpio_in_pd>;
983                         };
984                 };
985         };
986 };