cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ste-ux500-samsung-janice.dts (26099B)


      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};