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-codina-tmo.dts (19969B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 * Devicetree for the Samsung Galaxy Exhibit SGH-T599 also known as Codina-TMO,
      4 * the "TMO" shall be read "T-Mobile" as this phone was produced exlusively
      5 * for T-Mobile in the United States.
      6 *
      7 * This phone is closely related to the Codina, but has:
      8 * - No CPU speed cap, full ~1GHz rate
      9 * - Different power management IC, AB8505
     10 * - As AB8505 has a micro USB phy, no TI TSU6111
     11 * - Different power routing such as the removal of the external LDO for the
     12 *   touchscreen in favor of using the AB8505
     13 * - Using a regulator for the key backlight LED
     14 * - Using the Samsung S6D27A1 panel by default
     15 * - The panel is using one of the ordinary AB8505 regulators for 1.8V
     16 * - WiFi/Bluetooth combi chip upgraded to BCM4334
     17 * - GPIO for backlight control moved from 68 to 69
     18 */
     19
     20/dts-v1/;
     21#include "ste-db8500.dtsi"
     22#include "ste-ab8505.dtsi"
     23#include "ste-dbx5x0-pinctrl.dtsi"
     24#include <dt-bindings/gpio/gpio.h>
     25#include <dt-bindings/leds/common.h>
     26#include <dt-bindings/input/input.h>
     27#include <dt-bindings/interrupt-controller/irq.h>
     28
     29/ {
     30	model = "Samsung Galaxy Exhibit (SGH-T599)";
     31	compatible = "samsung,codina-tmo", "st-ericsson,u8500";
     32
     33	chosen {
     34		stdout-path = &serial2;
     35	};
     36
     37	battery: battery {
     38		compatible = "samsung,eb425161lu";
     39	};
     40
     41	thermal-zones {
     42		battery-thermal {
     43			/* This zone will be polled by the battery temperature code */
     44			polling-delay = <0>;
     45			polling-delay-passive = <0>;
     46			thermal-sensors = <&bat_therm>;
     47		};
     48	};
     49
     50	bat_therm: thermistor {
     51		compatible = "samsung,1404-001221";
     52		io-channels = <&gpadc 0x02>; /* BatTemp */
     53		pullup-uv = <1800000>;
     54		pullup-ohm = <230000>;
     55		pulldown-ohm = <0>;
     56		#thermal-sensor-cells = <0>;
     57	};
     58
     59	/* TI TXS0206 level translator for 2.9 V */
     60	sd_level_translator: regulator-gpio {
     61		compatible = "regulator-fixed";
     62
     63		/* GPIO87 EN */
     64		gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>;
     65		enable-active-high;
     66
     67		regulator-name = "sd-level-translator";
     68		regulator-min-microvolt = <2900000>;
     69		regulator-max-microvolt = <2900000>;
     70		regulator-type = "voltage";
     71
     72		startup-delay-us = <200>;
     73
     74		pinctrl-names = "default";
     75		pinctrl-0 = <&sd_level_translator_default>;
     76	};
     77
     78	/* External LDO MIC5366-3.3YMT for eMMC */
     79	ldo_3v3_reg: regulator-gpio-ldo-3v3 {
     80		compatible = "regulator-fixed";
     81		/* Supplied in turn by VBAT */
     82		regulator-name = "VMEM_3V3";
     83		regulator-min-microvolt = <3300000>;
     84		regulator-max-microvolt = <3300000>;
     85		gpios = <&gpio6 31 GPIO_ACTIVE_HIGH>;
     86		startup-delay-us = <5000>;
     87		enable-active-high;
     88		pinctrl-names = "default";
     89		pinctrl-0 = <&emmc_ldo_en_default_mode>;
     90	};
     91
     92	/*
     93	 * External Ricoh RP152L010B-TR LCD LDO regulator for the display.
     94	 * LCD_PWR_EN controls both the 3.0V output.
     95	 */
     96	lcd_3v0_reg: regulator-gpio-lcd-3v0 {
     97		compatible = "regulator-fixed";
     98		/* Supplied in turn by VBAT */
     99		regulator-name = "VREG_LCD_3.0V";
    100		regulator-min-microvolt = <3000000>;
    101		regulator-max-microvolt = <3000000>;
    102		/* GPIO219 controls this regulator */
    103		gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
    104		enable-active-high;
    105		pinctrl-names = "default";
    106		pinctrl-0 = <&lcd_pwr_en_default_mode>;
    107	};
    108
    109	/*
    110	 * This regulator is a GPIO line that drives the Broadcom WLAN
    111	 * line WL_REG_ON high and enables the internal regulators
    112	 * inside the chip. Unfortunatley it is erroneously named
    113	 * WLAN_RST_N on the schematic but it is not a reset line.
    114	 *
    115	 * The voltage specified here is only used to determine the OCR mask,
    116	 * the for the SDIO connector, the chip is actually connected
    117	 * directly to VBAT.
    118	 */
    119	wl_reg: regulator-gpio-wlan {
    120		compatible = "regulator-fixed";
    121		regulator-name = "WL_REG_ON";
    122		regulator-min-microvolt = <3000000>;
    123		regulator-max-microvolt = <3000000>;
    124		startup-delay-us = <100000>;
    125		/* GPIO215 (WLAN_RST_N to WL_REG_ON) */
    126		gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
    127		enable-active-high;
    128		pinctrl-names = "default";
    129		pinctrl-0 = <&wlan_ldo_en_default>;
    130	};
    131
    132	vibrator {
    133		compatible = "gpio-vibrator";
    134		/* GPIO195 "MOT_EN" */
    135		enable-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>;
    136		pinctrl-names = "default";
    137		pinctrl-0 = <&vibrator_default>;
    138	};
    139
    140	gpio-keys {
    141		compatible = "gpio-keys";
    142		pinctrl-names = "default";
    143		pinctrl-0 = <&gpio_keys_default_mode>;
    144
    145		button-home {
    146			linux,code = <KEY_HOME>;
    147			label = "HOME";
    148			/* GPIO91 */
    149			gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
    150		};
    151		button-volup {
    152			linux,code = <KEY_VOLUMEUP>;
    153			label = "VOL+";
    154			/* GPIO67 */
    155			gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
    156		};
    157		button-voldown {
    158			linux,code = <KEY_VOLUMEDOWN>;
    159			label = "VOL-";
    160			/* GPIO92 */
    161			gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
    162		};
    163	};
    164
    165	led-touchkeys {
    166		compatible = "regulator-led";
    167		vled-supply = <&ab8500_ldo_aux4_reg>; // 3.3V
    168		default-state = "on";
    169		function = LED_FUNCTION_KBD_BACKLIGHT;
    170		color = <LED_COLOR_ID_WHITE>;
    171	};
    172
    173	ktd253: backlight {
    174		compatible = "kinetic,ktd253";
    175		/* GPIO69 is used on Codina R0.4 and Codina TMO */
    176		enable-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
    177		/* Default to 13/32 brightness */
    178		default-brightness = <13>;
    179		pinctrl-names = "default";
    180		pinctrl-0 = <&ktd253_backlight_default_mode>;
    181	};
    182
    183	/* Richtek RT8515GQW Flash LED Driver IC */
    184	flash {
    185		compatible = "richtek,rt8515";
    186		/* GPIO 140 */
    187		enf-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
    188		/* GPIO 141 */
    189		ent-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
    190		/*
    191		 * RFS is 16 kOhm and RTS is 100 kOhm giving
    192		 * the flash max current 343mA and torch max
    193		 * current 55 mA.
    194		 */
    195		richtek,rfs-ohms = <16000>;
    196		richtek,rts-ohms = <100000>;
    197		pinctrl-names = "default";
    198		pinctrl-0 = <&gpio_flash_default_mode>;
    199
    200		led {
    201			function = LED_FUNCTION_FLASH;
    202			color = <LED_COLOR_ID_WHITE>;
    203			flash-max-timeout-us = <250000>;
    204			flash-max-microamp = <343750>;
    205			led-max-microamp = <55000>;
    206		};
    207	};
    208
    209	/* Bit-banged I2C on GPIO143 and GPIO144 also called "SUBPMU I2C" */
    210	i2c-gpio-0 {
    211		compatible = "i2c-gpio";
    212		sda-gpios = <&gpio4 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
    213		scl-gpios = <&gpio4 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
    214		pinctrl-names = "default";
    215		pinctrl-0 = <&i2c_gpio_0_default>;
    216		#address-cells = <1>;
    217		#size-cells = <0>;
    218
    219		/* TODO: this should also be used by the SM5103 Camera power management unit */
    220	};
    221
    222	/* Bit-banged I2C on GPIO151 and GPIO152 also called "COMP I2C" */
    223	i2c-gpio-1 {
    224		compatible = "i2c-gpio";
    225		sda-gpios = <&gpio4 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
    226		scl-gpios = <&gpio4 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
    227		pinctrl-names = "default";
    228		pinctrl-0 = <&i2c_gpio_1_default>;
    229		#address-cells = <1>;
    230		#size-cells = <0>;
    231
    232		magnetometer@c {
    233			compatible = "alps,hscdtd008a";
    234			reg = <0x0c>;
    235			clock-frequency = <400000>;
    236
    237			avdd-supply = <&ab8500_ldo_aux1_reg>; // 3V
    238			dvdd-supply = <&ab8500_ldo_aux8_reg>; // 1.8V
    239		};
    240	};
    241
    242	spi-gpio-0 {
    243		compatible = "spi-gpio";
    244		/* Clock on GPIO220, pin SCL */
    245		sck-gpios = <&gpio6 28 GPIO_ACTIVE_HIGH>;
    246		/* MOSI on GPIO224, pin SDI "slave data in" */
    247		mosi-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
    248		/* MISO on GPIO225, pin SDO "slave data out" */
    249		miso-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
    250		/* Chip select on GPIO201 */
    251		cs-gpios = <&gpio6 9 GPIO_ACTIVE_LOW>;
    252		num-chipselects = <1>;
    253
    254		pinctrl-names = "default";
    255		pinctrl-0 = <&spi_gpio_0_default>;
    256		#address-cells = <1>;
    257		#size-cells = <0>;
    258
    259		panel@0 {
    260			compatible = "samsung,s6d27a1";
    261			spi-max-frequency = <1200000>;
    262			/* TYPE 3: inverse clock polarity and phase */
    263			spi-cpha;
    264			spi-cpol;
    265
    266			reg = <0>;
    267			vci-supply = <&lcd_3v0_reg>;
    268			vccio-supply = <&ab8500_ldo_aux6_reg>;
    269
    270			/* Reset on GPIO139 */
    271			reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
    272			/* LCD_VGH/LCD_DETECT, ESD IRQ on GPIO93 */
    273			interrupt-parent = <&gpio2>;
    274			interrupts = <29 IRQ_TYPE_EDGE_RISING>;
    275
    276			pinctrl-names = "default";
    277			pinctrl-0 = <&panel_default_mode>;
    278			backlight = <&ktd253>;
    279
    280			port {
    281				panel_in: endpoint {
    282					remote-endpoint = <&display_out>;
    283				};
    284			};
    285		};
    286	};
    287
    288	soc {
    289		/* External Micro SD slot */
    290		mmc@80126000 {
    291			arm,primecell-periphid = <0x10480180>;
    292			max-frequency = <100000000>;
    293			bus-width = <4>;
    294			cap-sd-highspeed;
    295			cap-mmc-highspeed;
    296			st,sig-pin-fbclk;
    297			full-pwr-cycle;
    298			/* MMC is powered by AUX3 1.2V .. 2.91V */
    299			vmmc-supply = <&ab8500_ldo_aux3_reg>;
    300			/* 2.9 V level translator is using AUX3 at 2.9 V as well */
    301			vqmmc-supply = <&sd_level_translator>;
    302			pinctrl-names = "default", "sleep";
    303			pinctrl-0 = <&mc0_a_2_default>;
    304			pinctrl-1 = <&mc0_a_2_sleep>;
    305			cd-gpios  = <&gpio6 25 GPIO_ACTIVE_LOW>; // GPIO217
    306			status = "okay";
    307		};
    308
    309		/* WLAN SDIO channel */
    310		mmc@80118000 {
    311			arm,primecell-periphid = <0x10480180>;
    312			max-frequency = <50000000>;
    313			bus-width = <4>;
    314			non-removable;
    315			cap-sd-highspeed;
    316			pinctrl-names = "default", "sleep";
    317			pinctrl-0 = <&mc1_a_2_default>;
    318			pinctrl-1 = <&mc1_a_2_sleep>;
    319			/*
    320			 * GPIO-controlled voltage enablement: this drives
    321			 * the WL_REG_ON line high when we use this device.
    322			 * Represented as regulator to fill OCR mask.
    323			 */
    324			vmmc-supply = <&wl_reg>;
    325
    326			#address-cells = <1>;
    327			#size-cells = <0>;
    328			status = "okay";
    329
    330			wifi@1 {
    331				compatible = "brcm,bcm4334-fmac", "brcm,bcm4329-fmac";
    332				reg = <1>;
    333				/* GPIO216 WL_HOST_WAKE */
    334				interrupt-parent = <&gpio6>;
    335				interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
    336				interrupt-names = "host-wake";
    337				pinctrl-names = "default";
    338				pinctrl-0 = <&wlan_default_mode>;
    339			};
    340		};
    341
    342		/* eMMC */
    343		mmc@80005000 {
    344			arm,primecell-periphid = <0x10480180>;
    345			max-frequency = <100000000>;
    346			bus-width = <8>;
    347			non-removable;
    348			cap-mmc-highspeed;
    349			mmc-ddr-1_8v;
    350			no-sdio;
    351			no-sd;
    352			vmmc-supply = <&ldo_3v3_reg>;
    353			pinctrl-names = "default", "sleep";
    354			/*
    355			 * GPIO130 will be set to input no pull-up resulting in a resistor
    356			 * pulling the reset high and taking the memory out of reset.
    357			 */
    358			pinctrl-0 = <&mc2_a_1_default>;
    359			pinctrl-1 = <&mc2_a_1_sleep>;
    360			status = "okay";
    361		};
    362
    363		/* GBF (Bluetooth) UART */
    364		uart@80120000 {
    365			pinctrl-names = "default", "sleep";
    366			pinctrl-0 = <&u0_a_1_default>;
    367			pinctrl-1 = <&u0_a_1_sleep>;
    368			status = "okay";
    369
    370			bluetooth {
    371				/* BCM4334B0 actually */
    372				compatible = "brcm,bcm4330-bt";
    373				/* GPIO222 rail BT_VREG_EN to BT_REG_ON */
    374				shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
    375				/* BT_WAKE on GPIO199 */
    376				device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
    377				/* BT_HOST_WAKE on GPIO97 */
    378				/* FIXME: convert to interrupt */
    379				host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
    380				/* BT_RST_N on GPIO209 */
    381				reset-gpios = <&gpio6 17 GPIO_ACTIVE_LOW>;
    382				pinctrl-names = "default";
    383				pinctrl-0 = <&bluetooth_default_mode>;
    384			};
    385		};
    386
    387		/* GPS UART */
    388		uart@80121000 {
    389			status = "okay";
    390			pinctrl-names = "default", "sleep";
    391			/* CTS/RTS is not used, CTS is repurposed as GPIO */
    392			pinctrl-0 = <&u1rxtx_a_1_default>;
    393			pinctrl-1 = <&u1rxtx_a_1_sleep>;
    394			/* FIXME: add a device for the GPS here */
    395		};
    396
    397		/* Debugging console UART connected to AB8505 */
    398		uart@80007000 {
    399			status = "okay";
    400			pinctrl-names = "default", "sleep";
    401			pinctrl-0 = <&u2rxtx_c_1_default>;
    402			pinctrl-1 = <&u2rxtx_c_1_sleep>;
    403		};
    404
    405		prcmu@80157000 {
    406			ab8505 {
    407				phy {
    408					pinctrl-names = "default", "sleep";
    409					pinctrl-0 = <&usb_a_1_default>;
    410					pinctrl-1 = <&usb_a_1_sleep>;
    411				};
    412
    413				ab8500_fg {
    414					line-impedance-micro-ohms = <36000>;
    415				};
    416
    417				/* This is mostly identical to the Codina v0.4 regulators */
    418				regulator {
    419					ab8500_ldo_aux1 {
    420						regulator-name = "v-sensors-vdd";
    421						regulator-min-microvolt = <3000000>;
    422						regulator-max-microvolt = <3300000>;
    423					};
    424
    425					ab8500_ldo_aux2 {
    426						regulator-name = "v-aux2";
    427						regulator-min-microvolt = <3300000>;
    428						regulator-max-microvolt = <3300000>;
    429					};
    430
    431					ab8500_ldo_aux3 {
    432						regulator-name = "v-mmc-sd";
    433					};
    434
    435					ab8500_ldo_aux4 {
    436						regulator-name = "v-aux4";
    437						/*
    438						 * Providing some span here makes the touchkey
    439						 * LEDs actually dimmable.
    440						 */
    441						regulator-min-microvolt = <1100000>;
    442						regulator-max-microvolt = <3300000>;
    443					};
    444
    445					ab8500_ldo_aux5 {
    446						regulator-name = "v-aux5";
    447						regulator-min-microvolt = <1800000>;
    448						regulator-max-microvolt = <1800000>;
    449					};
    450
    451					ab8500_ldo_aux6 {
    452						/* 1.8 V to the display */
    453						regulator-name = "v-aux6";
    454						regulator-min-microvolt = <1800000>;
    455						regulator-max-microvolt = <1800000>;
    456					};
    457
    458					ab8500_ldo_aux8 {
    459						regulator-name = "v-sensors-vio";
    460					};
    461				};
    462			};
    463		};
    464
    465		/* I2C0 also known as "AGC I2C" */
    466		i2c@80004000 {
    467			status = "okay";
    468			pinctrl-names = "default", "sleep";
    469			pinctrl-0 = <&i2c0_a_1_default>;
    470			pinctrl-1 = <&i2c0_a_1_sleep>;
    471
    472			proximity@39 {
    473				/* Codina has the Amstaos TMD2672 */
    474				compatible = "amstaos,tmd2672";
    475				clock-frequency = <400000>;
    476				reg = <0x39>;
    477
    478				/* IRQ on GPIO146 "PS_INT" */
    479				interrupt-parent = <&gpio4>;
    480				interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
    481				vdd-supply = <&ab8500_ldo_aux1_reg>;
    482				vddio-supply = <&ab8500_ldo_aux8_reg>;
    483				pinctrl-names = "default";
    484				pinctrl-0 = <&tmd2672_codina_default>;
    485			};
    486		};
    487
    488		/* I2C2 on GPIO10 and GPIO11 also called "SENSORS I2C" */
    489		i2c@80128000 {
    490			status = "okay";
    491			pinctrl-names = "default", "sleep";
    492			pinctrl-0 = <&i2c2_b_2_default>;
    493			pinctrl-1 = <&i2c2_b_2_sleep>;
    494
    495			/* Bosch BMA254 accelerometer */
    496			accelerometer@18 {
    497				compatible = "bosch,bma254";
    498				reg = <0x18>;
    499				mount-matrix = "0", "1", "0",
    500					       "-1", "0", "0",
    501					       "0", "0", "1";
    502				vddio-supply = <&ab8500_ldo_aux8_reg>; // 1.8V
    503				vdd-supply = <&ab8500_ldo_aux1_reg>; // 3V
    504			};
    505		};
    506
    507		/* I2C3 */
    508		i2c@80110000 {
    509			status = "okay";
    510
    511			pinctrl-names = "default", "sleep";
    512			pinctrl-0 = <&i2c3_c_2_default>;
    513			pinctrl-1 = <&i2c3_c_2_sleep>;
    514
    515			/* TODO: write bindings and driver for this touchscreen */
    516
    517			/* Zinitix BT404 ISP part */
    518			isp@50 {
    519				compatible = "zinitix,bt404-isp";
    520				reg = <0x50>;
    521				pinctrl-names = "default";
    522				pinctrl-0 = <&tsp_default>;
    523			};
    524
    525			/* Zinitix BT404 touchscreen, also has the touchkeys for menu and back */
    526			touchscreen@20 {
    527				compatible = "zinitix,bt404";
    528				reg = <0x20>;
    529				/* GPIO218 (TSP_INT_1V8) */
    530				interrupt-parent = <&gpio6>;
    531				interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
    532				vcca-supply = <&ab8500_ldo_aux2_reg>; // 3.3V
    533				vdd-supply = <&ab8500_ldo_aux5_reg>; // 1.8V
    534				zinitix,mode = <2>;
    535				touchscreen-size-x = <480>;
    536				touchscreen-size-y = <800>;
    537				pinctrl-names = "default";
    538				pinctrl-0 = <&tsp_default>;
    539			};
    540		};
    541
    542		mcde@a0350000 {
    543			status = "okay";
    544			pinctrl-names = "default";
    545			pinctrl-0 = <&dpi_default_mode>;
    546
    547			port {
    548				display_out: endpoint {
    549					remote-endpoint = <&panel_in>;
    550				};
    551			};
    552		};
    553	};
    554};
    555
    556&pinctrl {
    557	/*
    558	 * This extends the MC0_A_2 default config to include
    559	 * the card detect GPIO217 line.
    560	 */
    561	sdi0 {
    562		mc0_a_2_default {
    563			default_cfg4 {
    564				pins = "GPIO217_AH12"; /* card detect */
    565				ste,config = <&gpio_in_pd>;
    566			};
    567		};
    568	};
    569	sdi2 {
    570		/*
    571		 * GPIO130 should be set in GPIO mode and
    572		 * pulled down. (Not connected.)
    573		 */
    574		mc2_a_1_default {
    575			default_cfg2 {
    576				pins = "GPIO130_C8"; /* FBCLK */
    577				ste,config = <&gpio_in_pd>;
    578			};
    579		};
    580	};
    581	/* GPIO that enables the 2.9V SD card level translator */
    582	sd-level-translator {
    583		sd_level_translator_default: sd_level_translator_default {
    584			/* level shifter on GPIO87 */
    585			codina_cfg1 {
    586				pins = "GPIO87_B3";
    587				ste,config = <&gpio_out_hi>;
    588			};
    589		};
    590	};
    591	/* GPIO that enables the LDO regulator for the eMMC */
    592	emmc-ldo {
    593		emmc_ldo_en_default_mode: emmc_ldo_default {
    594			/* LDO enable on GPIO223 */
    595			codina_cfg1 {
    596				pins = "GPIO223_AH9";
    597				ste,config = <&gpio_out_hi>;
    598			};
    599		};
    600	};
    601	/* GPIOs for panel control */
    602	panel {
    603		panel_default_mode: panel_default {
    604			codina_cfg1 {
    605				/* Reset line */
    606				pins = "GPIO139_C9";
    607				ste,config = <&gpio_out_lo>;
    608			};
    609			codina_cfg2 {
    610				/* ESD IRQ line "LCD detect" */
    611				pins = "GPIO93_B7";
    612				ste,config = <&gpio_in_nopull>;
    613			};
    614		};
    615	};
    616	/* GPIO that enables the LDO regulator for the LCD display */
    617	lcd-ldo {
    618		lcd_pwr_en_default_mode: lcd_pwr_en_default {
    619			/* LCD_PWR_EN on GPIO219 */
    620			codina_cfg1 {
    621				pins = "GPIO219_AG10";
    622				ste,config = <&gpio_out_hi>;
    623			};
    624		};
    625	};
    626	/* GPIO that enables the WLAN internal LDO regulators */
    627	wlan-ldo {
    628		wlan_ldo_en_default: wlan_ldo_default {
    629			/* GPIO215 named WLAN_RST_N */
    630			codina_cfg1 {
    631				pins = "GPIO215_AH13";
    632				ste,config = <&gpio_out_lo>;
    633			};
    634		};
    635	};
    636	/* Backlight GPIO */
    637	backlight {
    638		ktd253_backlight_default_mode: backlight_default {
    639			skomer_cfg1 {
    640				pins = "GPIO69_E2"; /* LCD_BL_CTRL */
    641				ste,config = <&gpio_out_lo>;
    642			};
    643		};
    644	};
    645	/* Flash and torch */
    646	flash {
    647		gpio_flash_default_mode: flash_default {
    648			codina_cfg1 {
    649				pins = "GPIO140_B11", "GPIO141_C12";
    650				ste,config = <&gpio_out_lo>;
    651			};
    652		};
    653	};
    654	/* GPIO keys */
    655	gpio-keys {
    656		gpio_keys_default_mode: gpio_keys_default {
    657			skomer_cfg1 {
    658				pins = "GPIO67_G2", /* VOL UP */
    659				       "GPIO91_B6", /* HOME */
    660				       "GPIO92_D6"; /* VOL DOWN */
    661				ste,config = <&gpio_in_pu>;
    662			};
    663		};
    664	};
    665	/* Interrupt line for the Zinitix BT404 touchscreen */
    666	tsp {
    667		tsp_default: tsp_default {
    668			codina_cfg1 {
    669				pins = "GPIO218_AH11";	/* TSP_INT_1V8 */
    670				ste,config = <&gpio_in_nopull>;
    671			};
    672		};
    673	};
    674	/* Interrupt line for light/proximity sensor TMD2672 */
    675	tmd2672 {
    676		tmd2672_codina_default: tmd2672_codina {
    677			codina_cfg1 {
    678				pins = "GPIO146_D13";
    679				ste,config = <&gpio_in_nopull>;
    680			};
    681		};
    682	};
    683	/* GPIO-based I2C bus for subpmu */
    684	i2c-gpio-0 {
    685		i2c_gpio_0_default: i2c_gpio_0 {
    686			codina_cfg1 {
    687				pins = "GPIO143_D12", "GPIO144_B13";
    688				ste,config = <&gpio_in_nopull>;
    689			};
    690		};
    691	};
    692	/* GPIO-based I2C bus for the NFC */
    693	i2c-gpio-1 {
    694		i2c_gpio_1_default: i2c_gpio_1 {
    695			codina_cfg1 {
    696				pins = "GPIO151_D17", "GPIO152_D16";
    697				ste,config = <&gpio_in_nopull>;
    698			};
    699		};
    700	};
    701	/* GPIO-based SPI bus for the display */
    702	spi-gpio-0 {
    703		spi_gpio_0_default: spi_gpio_0_d {
    704			codina_cfg1 {
    705				pins = "GPIO220_AH10", "GPIO201_AF24", "GPIO224_AG9";
    706				ste,config = <&gpio_out_hi>;
    707			};
    708			codina_cfg2 {
    709				pins = "GPIO225_AG8";
    710				/* Needs pull down, no pull down resistor on board */
    711				ste,config = <&gpio_in_pd>;
    712			};
    713		};
    714		spi_gpio_0_sleep: spi_gpio_0_s {
    715			codina_cfg1 {
    716				pins = "GPIO220_AH10", "GPIO201_AF24",
    717				       "GPIO224_AG9", "GPIO225_AG8";
    718				ste,config = <&gpio_out_hi>;
    719			};
    720		};
    721	};
    722	wlan {
    723		wlan_default_mode: wlan_default {
    724			/* GPIO216 for WL_HOST_WAKE */
    725			codina_cfg2 {
    726				pins = "GPIO216_AG12";
    727				ste,config = <&gpio_in_pd>;
    728			};
    729		};
    730	};
    731	bluetooth {
    732		bluetooth_default_mode: bluetooth_default {
    733			/* GPIO199 BT_WAKE and GPIO222 BT_VREG_ON */
    734			codina_cfg1 {
    735				pins = "GPIO199_AH23", "GPIO222_AJ9";
    736				ste,config = <&gpio_out_lo>;
    737			};
    738			/* GPIO97 BT_HOST_WAKE */
    739			codina_cfg2 {
    740				pins = "GPIO97_D9";
    741				ste,config = <&gpio_in_nopull>;
    742			};
    743			/* GPIO209 BT_RST_N */
    744			codina_cfg3 {
    745				pins = "GPIO209_AG15";
    746				ste,config = <&gpio_out_hi>;
    747			};
    748		};
    749	};
    750	vibrator {
    751		vibrator_default: vibrator_default {
    752			codina_cfg1 {
    753				pins = "GPIO195_AG28";	/* MOT_EN */
    754				ste,config = <&gpio_out_lo>;
    755			};
    756		};
    757	};
    758	mcde {
    759		dpi_default_mode: dpi_default {
    760			default_mux1 {
    761				/* Mux in all the data lines */
    762				function = "lcd";
    763				groups =
    764					/* Data lines D0-D7 GPIO70..GPIO77 */
    765					"lcd_d0_d7_a_1",
    766					/* Data lines D8-D11 GPIO78..GPIO81 */
    767					"lcd_d8_d11_a_1",
    768					/* Data lines D12-D15 GPIO82..GPIO85 */
    769					"lcd_d12_d15_a_1",
    770					/* Data lines D16-D23 GPIO161..GPIO168 */
    771					"lcd_d16_d23_b_1";
    772			};
    773			default_mux2 {
    774				function = "lcda";
    775				/* Clock line on GPIO150, DE, VSO, HSO on GPIO169..GPIO171 */
    776				groups = "lcdaclk_b_1", "lcda_b_1";
    777			};
    778			/* Input, no pull-up is the default state for pins used for an alt function */
    779			default_cfg1 {
    780				pins = "GPIO150_C14", "GPIO169_D22", "GPIO170_C23", "GPIO171_D23";
    781				ste,config = <&in_nopull>;
    782			};
    783		};
    784	};
    785};