162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Devicetree for the Samsung XCover 2 GT-S7710 also known as Skomer.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci/dts-v1/;
762306a36Sopenharmony_ci#include "ste-db8500.dtsi"
862306a36Sopenharmony_ci#include "ste-ab8505.dtsi"
962306a36Sopenharmony_ci#include "ste-dbx5x0-pinctrl.dtsi"
1062306a36Sopenharmony_ci#include <dt-bindings/gpio/gpio.h>
1162306a36Sopenharmony_ci#include <dt-bindings/leds/common.h>
1262306a36Sopenharmony_ci#include <dt-bindings/input/input.h>
1362306a36Sopenharmony_ci#include <dt-bindings/interrupt-controller/irq.h>
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci/ {
1662306a36Sopenharmony_ci	model = "Samsung XCover 2 (GT-S7710)";
1762306a36Sopenharmony_ci	compatible = "samsung,skomer", "st-ericsson,u8500";
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	chosen {
2062306a36Sopenharmony_ci		stdout-path = &serial2;
2162306a36Sopenharmony_ci	};
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci	battery: battery {
2462306a36Sopenharmony_ci		compatible = "samsung,eb485159lu";
2562306a36Sopenharmony_ci	};
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci	thermal-zones {
2862306a36Sopenharmony_ci		battery-thermal {
2962306a36Sopenharmony_ci			/* This zone will be polled by the battery temperature code */
3062306a36Sopenharmony_ci			polling-delay = <0>;
3162306a36Sopenharmony_ci			polling-delay-passive = <0>;
3262306a36Sopenharmony_ci			thermal-sensors = <&bat_therm>;
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci			trips {
3562306a36Sopenharmony_ci				battery-crit-hi {
3662306a36Sopenharmony_ci					temperature = <70000>;
3762306a36Sopenharmony_ci					hysteresis = <2000>;
3862306a36Sopenharmony_ci					type = "critical";
3962306a36Sopenharmony_ci				};
4062306a36Sopenharmony_ci			};
4162306a36Sopenharmony_ci		};
4262306a36Sopenharmony_ci	};
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci	bat_therm: thermistor {
4562306a36Sopenharmony_ci		compatible = "samsung,1404-001221";
4662306a36Sopenharmony_ci		io-channels = <&gpadc 0x02>; /* BatTemp */
4762306a36Sopenharmony_ci		pullup-uv = <1800000>;
4862306a36Sopenharmony_ci		pullup-ohm = <230000>;
4962306a36Sopenharmony_ci		pulldown-ohm = <0>;
5062306a36Sopenharmony_ci		#thermal-sensor-cells = <0>;
5162306a36Sopenharmony_ci	};
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci	/* TI TXS0206 level translator for 2.9 V */
5462306a36Sopenharmony_ci	sd_level_translator: regulator-gpio {
5562306a36Sopenharmony_ci		compatible = "regulator-fixed";
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci		/* GPIO87 EN */
5862306a36Sopenharmony_ci		gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>;
5962306a36Sopenharmony_ci		enable-active-high;
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci		regulator-name = "sd-level-translator";
6262306a36Sopenharmony_ci		regulator-min-microvolt = <2900000>;
6362306a36Sopenharmony_ci		regulator-max-microvolt = <2900000>;
6462306a36Sopenharmony_ci		regulator-type = "voltage";
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci		startup-delay-us = <200>;
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci		pinctrl-names = "default";
6962306a36Sopenharmony_ci		pinctrl-0 = <&sd_level_translator_default>;
7062306a36Sopenharmony_ci	};
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci	/* External LDO MIC5366-3.3YMT for eMMC */
7362306a36Sopenharmony_ci	ldo_3v3_reg: regulator-gpio-ldo-3v3 {
7462306a36Sopenharmony_ci		compatible = "regulator-fixed";
7562306a36Sopenharmony_ci		regulator-name = "en-3v3-fixed-supply";
7662306a36Sopenharmony_ci		regulator-min-microvolt = <3300000>;
7762306a36Sopenharmony_ci		regulator-max-microvolt = <3300000>;
7862306a36Sopenharmony_ci		gpio = <&gpio6 31 GPIO_ACTIVE_HIGH>;
7962306a36Sopenharmony_ci		startup-delay-us = <5000>;
8062306a36Sopenharmony_ci		enable-active-high;
8162306a36Sopenharmony_ci		pinctrl-names = "default";
8262306a36Sopenharmony_ci		pinctrl-0 = <&emmc_ldo_en_default_mode>;
8362306a36Sopenharmony_ci	};
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci	wlan_en: regulator-gpio-wlan-en {
8662306a36Sopenharmony_ci		compatible = "regulator-fixed";
8762306a36Sopenharmony_ci		regulator-name = "wl-reg-on";
8862306a36Sopenharmony_ci		regulator-min-microvolt = <3000000>;
8962306a36Sopenharmony_ci		regulator-max-microvolt = <3000000>;
9062306a36Sopenharmony_ci		startup-delay-us = <200000>;
9162306a36Sopenharmony_ci		/* GPIO215 WLAN_EN */
9262306a36Sopenharmony_ci		gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
9362306a36Sopenharmony_ci		enable-active-high;
9462306a36Sopenharmony_ci		pinctrl-names = "default";
9562306a36Sopenharmony_ci		pinctrl-0 = <&wlan_en_default_mode>;
9662306a36Sopenharmony_ci	};
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci	vibrator {
9962306a36Sopenharmony_ci		compatible = "gpio-vibrator";
10062306a36Sopenharmony_ci		enable-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>;
10162306a36Sopenharmony_ci		pinctrl-names = "default";
10262306a36Sopenharmony_ci		pinctrl-0 = <&vibrator_default>;
10362306a36Sopenharmony_ci	};
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci	gpio-keys {
10662306a36Sopenharmony_ci		compatible = "gpio-keys";
10762306a36Sopenharmony_ci		pinctrl-names = "default";
10862306a36Sopenharmony_ci		pinctrl-0 = <&gpio_keys_default_mode>;
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci		button-home {
11162306a36Sopenharmony_ci			linux,code = <KEY_HOME>;
11262306a36Sopenharmony_ci			label = "HOME";
11362306a36Sopenharmony_ci			/* GPIO91 */
11462306a36Sopenharmony_ci			gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
11562306a36Sopenharmony_ci		};
11662306a36Sopenharmony_ci		button-volup {
11762306a36Sopenharmony_ci			linux,code = <KEY_VOLUMEUP>;
11862306a36Sopenharmony_ci			label = "VOL+";
11962306a36Sopenharmony_ci			/* GPIO67 */
12062306a36Sopenharmony_ci			gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
12162306a36Sopenharmony_ci		};
12262306a36Sopenharmony_ci		button-voldown {
12362306a36Sopenharmony_ci			linux,code = <KEY_VOLUMEDOWN>;
12462306a36Sopenharmony_ci			label = "VOL-";
12562306a36Sopenharmony_ci			/* GPIO92 */
12662306a36Sopenharmony_ci			gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
12762306a36Sopenharmony_ci		};
12862306a36Sopenharmony_ci		button-menu {
12962306a36Sopenharmony_ci			linux,code = <KEY_MENU>;
13062306a36Sopenharmony_ci			label = "MENU";
13162306a36Sopenharmony_ci			/* GPIO204 */
13262306a36Sopenharmony_ci			gpios = <&gpio6 12 GPIO_ACTIVE_LOW>;
13362306a36Sopenharmony_ci		};
13462306a36Sopenharmony_ci		button-back {
13562306a36Sopenharmony_ci			linux,code = <KEY_BACK>;
13662306a36Sopenharmony_ci			label = "BACK";
13762306a36Sopenharmony_ci			/* GPIO205 */
13862306a36Sopenharmony_ci			gpios = <&gpio6 13 GPIO_ACTIVE_LOW>;
13962306a36Sopenharmony_ci		};
14062306a36Sopenharmony_ci	};
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci	ktd253: backlight {
14362306a36Sopenharmony_ci		compatible = "kinetic,ktd253";
14462306a36Sopenharmony_ci		/* GPIO 69 */
14562306a36Sopenharmony_ci		enable-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
14662306a36Sopenharmony_ci		/* Default to 13/32 brightness */
14762306a36Sopenharmony_ci		default-brightness = <13>;
14862306a36Sopenharmony_ci		pinctrl-names = "default";
14962306a36Sopenharmony_ci		pinctrl-0 = <&gpio_backlight_default_mode>;
15062306a36Sopenharmony_ci	};
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci	/* Richtek RT8515GQW Flash LED Driver IC */
15362306a36Sopenharmony_ci	flash {
15462306a36Sopenharmony_ci		compatible = "richtek,rt8515";
15562306a36Sopenharmony_ci		/* GPIO 140 */
15662306a36Sopenharmony_ci		enf-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
15762306a36Sopenharmony_ci		/* GPIO 141 */
15862306a36Sopenharmony_ci		ent-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
15962306a36Sopenharmony_ci		/*
16062306a36Sopenharmony_ci		 * RFS is 16 kOhm and RTS is 100 kOhm giving
16162306a36Sopenharmony_ci		 * the flash max current 343mA and torch max
16262306a36Sopenharmony_ci		 * current 55 mA.
16362306a36Sopenharmony_ci		 */
16462306a36Sopenharmony_ci		richtek,rfs-ohms = <16000>;
16562306a36Sopenharmony_ci		richtek,rts-ohms = <100000>;
16662306a36Sopenharmony_ci		pinctrl-names = "default";
16762306a36Sopenharmony_ci		pinctrl-0 = <&gpio_flash_default_mode>;
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci		led {
17062306a36Sopenharmony_ci			function = LED_FUNCTION_FLASH;
17162306a36Sopenharmony_ci			color = <LED_COLOR_ID_WHITE>;
17262306a36Sopenharmony_ci			flash-max-timeout-us = <250000>;
17362306a36Sopenharmony_ci			flash-max-microamp = <343750>;
17462306a36Sopenharmony_ci			led-max-microamp = <55000>;
17562306a36Sopenharmony_ci		};
17662306a36Sopenharmony_ci	};
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci	i2c-gpio-0 {
17962306a36Sopenharmony_ci		compatible = "i2c-gpio";
18062306a36Sopenharmony_ci		sda-gpios = <&gpio4 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
18162306a36Sopenharmony_ci		scl-gpios = <&gpio4 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
18262306a36Sopenharmony_ci		pinctrl-names = "default";
18362306a36Sopenharmony_ci		pinctrl-0 = <&i2c_gpio_0_default>;
18462306a36Sopenharmony_ci		#address-cells = <1>;
18562306a36Sopenharmony_ci		#size-cells = <0>;
18662306a36Sopenharmony_ci		/* TODO: this should be used by the NCP6914 Camera power management unit */
18762306a36Sopenharmony_ci	};
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci	i2c-gpio-1 {
19062306a36Sopenharmony_ci		compatible = "i2c-gpio";
19162306a36Sopenharmony_ci		sda-gpios = <&gpio4 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
19262306a36Sopenharmony_ci		scl-gpios = <&gpio4 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
19362306a36Sopenharmony_ci		pinctrl-names = "default";
19462306a36Sopenharmony_ci		pinctrl-0 = <&i2c_gpio_1_default>;
19562306a36Sopenharmony_ci		#address-cells = <1>;
19662306a36Sopenharmony_ci		#size-cells = <0>;
19762306a36Sopenharmony_ci		magnetometer@c {
19862306a36Sopenharmony_ci			compatible = "alps,hscdtd008a";
19962306a36Sopenharmony_ci			reg = <0x0c>;
20062306a36Sopenharmony_ci			avdd-supply = <&ab8500_ldo_aux1_reg>;
20162306a36Sopenharmony_ci			dvdd-supply = <&ab8500_ldo_aux8_reg>;
20262306a36Sopenharmony_ci		};
20362306a36Sopenharmony_ci	};
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ci	soc {
20662306a36Sopenharmony_ci		// External Micro SD slot
20762306a36Sopenharmony_ci		mmc@80126000 {
20862306a36Sopenharmony_ci			arm,primecell-periphid = <0x10480180>;
20962306a36Sopenharmony_ci			max-frequency = <100000000>;
21062306a36Sopenharmony_ci			bus-width = <4>;
21162306a36Sopenharmony_ci			cap-sd-highspeed;
21262306a36Sopenharmony_ci			cap-mmc-highspeed;
21362306a36Sopenharmony_ci			/* All direction control is used */
21462306a36Sopenharmony_ci			st,sig-pin-fbclk;
21562306a36Sopenharmony_ci			full-pwr-cycle;
21662306a36Sopenharmony_ci			vmmc-supply = <&ab8500_ldo_aux3_reg>;
21762306a36Sopenharmony_ci			vqmmc-supply = <&sd_level_translator>;
21862306a36Sopenharmony_ci			pinctrl-names = "default", "sleep";
21962306a36Sopenharmony_ci			pinctrl-0 = <&mc0_a_1_default>;
22062306a36Sopenharmony_ci			pinctrl-1 = <&mc0_a_1_sleep>;
22162306a36Sopenharmony_ci			status = "okay";
22262306a36Sopenharmony_ci		};
22362306a36Sopenharmony_ci
22462306a36Sopenharmony_ci		// WLAN SDIO channel
22562306a36Sopenharmony_ci		mmc@80118000 {
22662306a36Sopenharmony_ci			arm,primecell-periphid = <0x10480180>;
22762306a36Sopenharmony_ci			max-frequency = <50000000>;
22862306a36Sopenharmony_ci			bus-width = <4>;
22962306a36Sopenharmony_ci			non-removable;
23062306a36Sopenharmony_ci			cap-sd-highspeed;
23162306a36Sopenharmony_ci			vmmc-supply = <&wlan_en>;
23262306a36Sopenharmony_ci			pinctrl-names = "default", "sleep";
23362306a36Sopenharmony_ci			pinctrl-0 = <&mc1_a_2_default>;
23462306a36Sopenharmony_ci			pinctrl-1 = <&mc1_a_2_sleep>;
23562306a36Sopenharmony_ci			status = "okay";
23662306a36Sopenharmony_ci			#address-cells = <1>;
23762306a36Sopenharmony_ci			#size-cells = <0>;
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ci			wifi@1 {
24062306a36Sopenharmony_ci				compatible = "brcm,bcm4334-fmac", "brcm,bcm4329-fmac";
24162306a36Sopenharmony_ci				reg = <1>;
24262306a36Sopenharmony_ci				/* GPIO216 WL_HOST_WAKE */
24362306a36Sopenharmony_ci				interrupt-parent = <&gpio6>;
24462306a36Sopenharmony_ci				interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
24562306a36Sopenharmony_ci				interrupt-names = "host-wake";
24662306a36Sopenharmony_ci				pinctrl-names = "default";
24762306a36Sopenharmony_ci				pinctrl-0 = <&wlan_default_mode>;
24862306a36Sopenharmony_ci			};
24962306a36Sopenharmony_ci		};
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_ci		/*
25262306a36Sopenharmony_ci		 * eMMC seems to be mostly Samsung KLM4G1YE4C "4YMD1R"
25362306a36Sopenharmony_ci		 */
25462306a36Sopenharmony_ci		mmc@80005000 {
25562306a36Sopenharmony_ci			arm,primecell-periphid = <0x10480180>;
25662306a36Sopenharmony_ci		        max-frequency = <100000000>;
25762306a36Sopenharmony_ci			bus-width = <8>;
25862306a36Sopenharmony_ci			non-removable;
25962306a36Sopenharmony_ci			cap-mmc-highspeed;
26062306a36Sopenharmony_ci			mmc-ddr-1_8v;
26162306a36Sopenharmony_ci			no-sdio;
26262306a36Sopenharmony_ci			no-sd;
26362306a36Sopenharmony_ci			/* From datasheet page 26 figure 9: 300 ms set-up time for 4GB */
26462306a36Sopenharmony_ci			post-power-on-delay-ms = <300>;
26562306a36Sopenharmony_ci			vmmc-supply = <&ldo_3v3_reg>;
26662306a36Sopenharmony_ci			pinctrl-names = "default", "sleep";
26762306a36Sopenharmony_ci			pinctrl-0 = <&mc2_a_1_default>;
26862306a36Sopenharmony_ci			pinctrl-1 = <&mc2_a_1_sleep>;
26962306a36Sopenharmony_ci
27062306a36Sopenharmony_ci			status = "okay";
27162306a36Sopenharmony_ci		};
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_ci		/* GBF (Bluetooth) UART */
27462306a36Sopenharmony_ci		serial@80120000 {
27562306a36Sopenharmony_ci			pinctrl-names = "default", "sleep";
27662306a36Sopenharmony_ci			pinctrl-0 = <&u0_a_1_default>;
27762306a36Sopenharmony_ci			pinctrl-1 = <&u0_a_1_sleep>;
27862306a36Sopenharmony_ci			status = "okay";
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ci			/* FIXME: not quite working yet, probably needs regulators */
28162306a36Sopenharmony_ci			bluetooth {
28262306a36Sopenharmony_ci				/* BCM4334B0 actually */
28362306a36Sopenharmony_ci				compatible = "brcm,bcm4330-bt";
28462306a36Sopenharmony_ci				shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
28562306a36Sopenharmony_ci				device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
28662306a36Sopenharmony_ci				host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
28762306a36Sopenharmony_ci				pinctrl-names = "default";
28862306a36Sopenharmony_ci				pinctrl-0 = <&bluetooth_default_mode>;
28962306a36Sopenharmony_ci			};
29062306a36Sopenharmony_ci		};
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ci		/* GPS UART */
29362306a36Sopenharmony_ci		serial@80121000 {
29462306a36Sopenharmony_ci			status = "okay";
29562306a36Sopenharmony_ci			pinctrl-names = "default", "sleep";
29662306a36Sopenharmony_ci			pinctrl-0 = <&u1rxtx_a_1_default &u1ctsrts_a_1_default>;
29762306a36Sopenharmony_ci			pinctrl-1 = <&u1rxtx_a_1_sleep &u1ctsrts_a_1_sleep>;
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_ci			gnss {
30062306a36Sopenharmony_ci				/* The CSRG05TA03-ICJE-R is a SirfStarV 5t chip */
30162306a36Sopenharmony_ci				compatible = "csr,csrg05ta03-icje-r";
30262306a36Sopenharmony_ci				/* GPS_RSTN on GPIO209 */
30362306a36Sopenharmony_ci				reset-gpios = <&gpio6 17 GPIO_ACTIVE_LOW>;
30462306a36Sopenharmony_ci				/* GPS_ON_OFF on GPIO86 */
30562306a36Sopenharmony_ci				sirf,onoff-gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>;
30662306a36Sopenharmony_ci				/* GPS_1V8 (VSMPS2) */
30762306a36Sopenharmony_ci				vcc-supply = <&db8500_vsmps2_reg>;
30862306a36Sopenharmony_ci				pinctrl-names = "default";
30962306a36Sopenharmony_ci				pinctrl-0 = <&g05ta03_skomer_default>;
31062306a36Sopenharmony_ci				/* According to /etc/sirfgps.conf */
31162306a36Sopenharmony_ci				current-speed = <460800>;
31262306a36Sopenharmony_ci			};
31362306a36Sopenharmony_ci		};
31462306a36Sopenharmony_ci
31562306a36Sopenharmony_ci		/* Debugging console UART connected to AB8505 USB */
31662306a36Sopenharmony_ci		serial@80007000 {
31762306a36Sopenharmony_ci			status = "okay";
31862306a36Sopenharmony_ci			pinctrl-names = "default", "sleep";
31962306a36Sopenharmony_ci			pinctrl-0 = <&u2rxtx_c_1_default>;
32062306a36Sopenharmony_ci			pinctrl-1 = <&u2rxtx_c_1_sleep>;
32162306a36Sopenharmony_ci		};
32262306a36Sopenharmony_ci
32362306a36Sopenharmony_ci		prcmu@80157000 {
32462306a36Sopenharmony_ci			ab8505 {
32562306a36Sopenharmony_ci				phy {
32662306a36Sopenharmony_ci					pinctrl-names = "default", "sleep";
32762306a36Sopenharmony_ci					pinctrl-0 = <&usb_a_1_default>;
32862306a36Sopenharmony_ci					pinctrl-1 = <&usb_a_1_sleep>;
32962306a36Sopenharmony_ci				};
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_ci				ab8500_fg {
33262306a36Sopenharmony_ci					line-impedance-micro-ohms = <16000>;
33362306a36Sopenharmony_ci				};
33462306a36Sopenharmony_ci
33562306a36Sopenharmony_ci				regulator {
33662306a36Sopenharmony_ci					ab8500_ldo_aux1 {
33762306a36Sopenharmony_ci						/* Used for VDD for sensors */
33862306a36Sopenharmony_ci						regulator-name = "AUX1";
33962306a36Sopenharmony_ci						regulator-min-microvolt = <3000000>;
34062306a36Sopenharmony_ci						regulator-max-microvolt = <3300000>;
34162306a36Sopenharmony_ci					};
34262306a36Sopenharmony_ci
34362306a36Sopenharmony_ci					ab8500_ldo_aux2 {
34462306a36Sopenharmony_ci						/* Supplies the Cypress TMA140 touchscreen only with 3.0V */
34562306a36Sopenharmony_ci						regulator-name = "AUX2";
34662306a36Sopenharmony_ci						regulator-min-microvolt = <3000000>;
34762306a36Sopenharmony_ci						regulator-max-microvolt = <3000000>;
34862306a36Sopenharmony_ci					};
34962306a36Sopenharmony_ci
35062306a36Sopenharmony_ci					ab8500_ldo_aux3 {
35162306a36Sopenharmony_ci						/* Used for voltage for external MMC/SD card */
35262306a36Sopenharmony_ci						regulator-name = "AUX3";
35362306a36Sopenharmony_ci						regulator-min-microvolt = <1100000>;
35462306a36Sopenharmony_ci						regulator-max-microvolt = <3300000>;
35562306a36Sopenharmony_ci					};
35662306a36Sopenharmony_ci
35762306a36Sopenharmony_ci					ab8500_ldo_aux4 {
35862306a36Sopenharmony_ci						regulator-name = "AUX4";
35962306a36Sopenharmony_ci						/* Hammer to 3.0V for the display */
36062306a36Sopenharmony_ci						regulator-min-microvolt = <3000000>;
36162306a36Sopenharmony_ci						regulator-max-microvolt = <3000000>;
36262306a36Sopenharmony_ci					};
36362306a36Sopenharmony_ci
36462306a36Sopenharmony_ci					ab8500_ldo_aux5 {
36562306a36Sopenharmony_ci						regulator-name = "AUX5";
36662306a36Sopenharmony_ci						/* Intended for 1V8 for touchscreen but actually left unused */
36762306a36Sopenharmony_ci						regulator-min-microvolt = <1050000>;
36862306a36Sopenharmony_ci						regulator-max-microvolt = <2790000>;
36962306a36Sopenharmony_ci					};
37062306a36Sopenharmony_ci
37162306a36Sopenharmony_ci					ab8500_ldo_aux6 {
37262306a36Sopenharmony_ci						regulator-name = "AUX6";
37362306a36Sopenharmony_ci						/* Hammer to 1.8V for the display */
37462306a36Sopenharmony_ci						regulator-min-microvolt = <1800000>;
37562306a36Sopenharmony_ci						regulator-max-microvolt = <1800000>;
37662306a36Sopenharmony_ci					};
37762306a36Sopenharmony_ci
37862306a36Sopenharmony_ci					ab8500_ldo_aux8 {
37962306a36Sopenharmony_ci						/* Mostly VIO for sensors */
38062306a36Sopenharmony_ci						regulator-name = "AUX8";
38162306a36Sopenharmony_ci					};
38262306a36Sopenharmony_ci				};
38362306a36Sopenharmony_ci			};
38462306a36Sopenharmony_ci		};
38562306a36Sopenharmony_ci
38662306a36Sopenharmony_ci		/* I2C0 */
38762306a36Sopenharmony_ci		i2c@80004000 {
38862306a36Sopenharmony_ci			status = "okay";
38962306a36Sopenharmony_ci
39062306a36Sopenharmony_ci			pinctrl-names = "default", "sleep";
39162306a36Sopenharmony_ci			pinctrl-0 = <&i2c0_a_1_default>;
39262306a36Sopenharmony_ci			pinctrl-1 = <&i2c0_a_1_sleep>;
39362306a36Sopenharmony_ci
39462306a36Sopenharmony_ci			proximity@44 {
39562306a36Sopenharmony_ci				compatible = "sharp,gp2ap002s00f";
39662306a36Sopenharmony_ci				clock-frequency = <400000>;
39762306a36Sopenharmony_ci				reg = <0x44>;
39862306a36Sopenharmony_ci
39962306a36Sopenharmony_ci				interrupt-parent = <&gpio4>;
40062306a36Sopenharmony_ci				interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
40162306a36Sopenharmony_ci				vdd-supply = <&ab8500_ldo_aux1_reg>;
40262306a36Sopenharmony_ci				vio-supply = <&ab8500_ldo_aux8_reg>;
40362306a36Sopenharmony_ci				pinctrl-names = "default";
40462306a36Sopenharmony_ci				pinctrl-0 = <&gp2ap002_skomer_default>;
40562306a36Sopenharmony_ci				sharp,proximity-far-hysteresis = /bits/ 8 <0x2f>;
40662306a36Sopenharmony_ci				sharp,proximity-close-hysteresis = /bits/ 8 <0x0f>;
40762306a36Sopenharmony_ci			};
40862306a36Sopenharmony_ci		};
40962306a36Sopenharmony_ci
41062306a36Sopenharmony_ci
41162306a36Sopenharmony_ci		/* I2C2 */
41262306a36Sopenharmony_ci		i2c@80128000 {
41362306a36Sopenharmony_ci			status = "okay";
41462306a36Sopenharmony_ci
41562306a36Sopenharmony_ci			pinctrl-names = "default", "sleep";
41662306a36Sopenharmony_ci			pinctrl-0 = <&i2c2_b_2_default>;
41762306a36Sopenharmony_ci			pinctrl-1 = <&i2c2_b_2_sleep>;
41862306a36Sopenharmony_ci
41962306a36Sopenharmony_ci			accel@18 {
42062306a36Sopenharmony_ci				compatible = "bosch,bma254";
42162306a36Sopenharmony_ci				clock-frequency = <400000>;
42262306a36Sopenharmony_ci				reg = <0x18>;
42362306a36Sopenharmony_ci
42462306a36Sopenharmony_ci				/* GPIO224 used as "smart alert" interrupt */
42562306a36Sopenharmony_ci				interrupt-parent = <&gpio7>;
42662306a36Sopenharmony_ci				interrupts = <0 IRQ_TYPE_EDGE_RISING>;
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_ci				mount-matrix = "0", "-1", "0",
42962306a36Sopenharmony_ci					      "1", "0", "0",
43062306a36Sopenharmony_ci					       "0", "0", "1";
43162306a36Sopenharmony_ci				vdd-supply = <&ab8500_ldo_aux1_reg>;
43262306a36Sopenharmony_ci				vddio-supply = <&ab8500_ldo_aux8_reg>;
43362306a36Sopenharmony_ci				pinctrl-names = "default";
43462306a36Sopenharmony_ci				pinctrl-0 = <&bma254_skomer_default>;
43562306a36Sopenharmony_ci			};
43662306a36Sopenharmony_ci		};
43762306a36Sopenharmony_ci
43862306a36Sopenharmony_ci		/* I2C3 */
43962306a36Sopenharmony_ci		i2c@80110000 {
44062306a36Sopenharmony_ci			status = "okay";
44162306a36Sopenharmony_ci
44262306a36Sopenharmony_ci			pinctrl-names = "default", "sleep";
44362306a36Sopenharmony_ci			pinctrl-0 = <&i2c3_c_2_default>;
44462306a36Sopenharmony_ci			pinctrl-1 = <&i2c3_c_2_sleep>;
44562306a36Sopenharmony_ci
44662306a36Sopenharmony_ci			/* Cypress CY8CTMA140 touchscreen */
44762306a36Sopenharmony_ci			touchscreen@20 {
44862306a36Sopenharmony_ci				compatible = "cypress,cy8ctma140";
44962306a36Sopenharmony_ci				clock-frequency = <400000>;
45062306a36Sopenharmony_ci				reg = <0x20>;
45162306a36Sopenharmony_ci
45262306a36Sopenharmony_ci				touchscreen-size-x = <480>;
45362306a36Sopenharmony_ci				touchscreen-size-y = <800>;
45462306a36Sopenharmony_ci				touchscreen-max-pressure = <255>;
45562306a36Sopenharmony_ci
45662306a36Sopenharmony_ci				/* GPIO218 for IRQ */
45762306a36Sopenharmony_ci				interrupt-parent = <&gpio6>;
45862306a36Sopenharmony_ci				interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
45962306a36Sopenharmony_ci
46062306a36Sopenharmony_ci				/* VDD is "digital supply" nominally 1.71-3.6V */
46162306a36Sopenharmony_ci				vdd-supply = <&ab8500_ldo_aux2_reg>;
46262306a36Sopenharmony_ci				/* VCPIN is "analog supply", 2.7-3.6 V */
46362306a36Sopenharmony_ci				vcpin-supply = <&ab8500_ldo_aux2_reg>;
46462306a36Sopenharmony_ci
46562306a36Sopenharmony_ci				pinctrl-names = "default";
46662306a36Sopenharmony_ci				pinctrl-0 = <&tma140_skomer_default>;
46762306a36Sopenharmony_ci			};
46862306a36Sopenharmony_ci		};
46962306a36Sopenharmony_ci
47062306a36Sopenharmony_ci		mcde@a0350000 {
47162306a36Sopenharmony_ci			status = "okay";
47262306a36Sopenharmony_ci			pinctrl-names = "default";
47362306a36Sopenharmony_ci			pinctrl-0 = <&dsi_default_mode>;
47462306a36Sopenharmony_ci
47562306a36Sopenharmony_ci			dsi@a0351000 {
47662306a36Sopenharmony_ci				panel {
47762306a36Sopenharmony_ci					/* NT35510-based Hydis HVA40WV1 */
47862306a36Sopenharmony_ci					compatible = "hydis,hva40wv1", "novatek,nt35510";
47962306a36Sopenharmony_ci					reg = <0>;
48062306a36Sopenharmony_ci					/* v_lcd_3v0 2.3-4.8V */
48162306a36Sopenharmony_ci					vdd-supply = <&ab8500_ldo_aux4_reg>;
48262306a36Sopenharmony_ci					/* v_lcd_1v8 1.65-3.3V */
48362306a36Sopenharmony_ci					vddi-supply = <&ab8500_ldo_aux6_reg>;
48462306a36Sopenharmony_ci					/* GPIO 139 */
48562306a36Sopenharmony_ci					reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
48662306a36Sopenharmony_ci					pinctrl-names = "default";
48762306a36Sopenharmony_ci					pinctrl-0 = <&display_default_mode>;
48862306a36Sopenharmony_ci					backlight = <&ktd253>;
48962306a36Sopenharmony_ci				};
49062306a36Sopenharmony_ci			};
49162306a36Sopenharmony_ci		};
49262306a36Sopenharmony_ci	};
49362306a36Sopenharmony_ci};
49462306a36Sopenharmony_ci
49562306a36Sopenharmony_ci&pinctrl {
49662306a36Sopenharmony_ci	sdi0 {
49762306a36Sopenharmony_ci		mc0_a_1_default {
49862306a36Sopenharmony_ci			default_cfg1 {
49962306a36Sopenharmony_ci				/* GPIO18, 19 & 20 unused so pull down */
50062306a36Sopenharmony_ci				ste,config = <&gpio_in_pd>;
50162306a36Sopenharmony_ci			};
50262306a36Sopenharmony_ci		};
50362306a36Sopenharmony_ci	};
50462306a36Sopenharmony_ci
50562306a36Sopenharmony_ci	/* This is a reset line for the eMMC */
50662306a36Sopenharmony_ci	sdi2 {
50762306a36Sopenharmony_ci		mc2_a_1_default {
50862306a36Sopenharmony_ci			default_cfg2 {
50962306a36Sopenharmony_ci				pins = "GPIO130_C8"; /* FBCLK */
51062306a36Sopenharmony_ci				ste,config = <&gpio_in_pd>;
51162306a36Sopenharmony_ci			};
51262306a36Sopenharmony_ci		};
51362306a36Sopenharmony_ci	};
51462306a36Sopenharmony_ci
51562306a36Sopenharmony_ci	mcde {
51662306a36Sopenharmony_ci		dsi_default_mode: dsi_default {
51762306a36Sopenharmony_ci			default_mux1 {
51862306a36Sopenharmony_ci				/* Mux in VSI0 used for DSI TE */
51962306a36Sopenharmony_ci				function = "lcd";
52062306a36Sopenharmony_ci				groups = "lcdvsi0_a_1"; /* VSI0 for LCD */
52162306a36Sopenharmony_ci			};
52262306a36Sopenharmony_ci			default_cfg1 {
52362306a36Sopenharmony_ci				pins = "GPIO68_E1"; /* VSI0 */
52462306a36Sopenharmony_ci				ste,config = <&in_nopull>;
52562306a36Sopenharmony_ci			};
52662306a36Sopenharmony_ci		};
52762306a36Sopenharmony_ci	};
52862306a36Sopenharmony_ci
52962306a36Sopenharmony_ci	/* Two GPIO lines used by the display */
53062306a36Sopenharmony_ci	display {
53162306a36Sopenharmony_ci		display_default_mode: display_default {
53262306a36Sopenharmony_ci			skomer_cfg1 {
53362306a36Sopenharmony_ci				/*
53462306a36Sopenharmony_ci				 * OLED DETECT or check_pba, this appears to be high
53562306a36Sopenharmony_ci				 * on "PBA" which I guess is "prototype board A".
53662306a36Sopenharmony_ci				 */
53762306a36Sopenharmony_ci				pins = "GPIO93_B7";
53862306a36Sopenharmony_ci				ste,config = <&gpio_in_nopull>;
53962306a36Sopenharmony_ci			};
54062306a36Sopenharmony_ci			skomer_cfg2 {
54162306a36Sopenharmony_ci				pins = "GPIO139_C9";
54262306a36Sopenharmony_ci				/*
54362306a36Sopenharmony_ci				 * MIPI_DSI0_RESET_N resets the display, leave high
54462306a36Sopenharmony_ci				 * (de-asserted) so we only assert reset explicitly
54562306a36Sopenharmony_ci				 * from the display driver.
54662306a36Sopenharmony_ci				 */
54762306a36Sopenharmony_ci				ste,config = <&gpio_out_hi>;
54862306a36Sopenharmony_ci			};
54962306a36Sopenharmony_ci		};
55062306a36Sopenharmony_ci	};
55162306a36Sopenharmony_ci	backlight {
55262306a36Sopenharmony_ci		gpio_backlight_default_mode: backlight_default {
55362306a36Sopenharmony_ci			skomer_cfg1 {
55462306a36Sopenharmony_ci				pins = "GPIO69_E2"; /* LCD_BL_CTRL */
55562306a36Sopenharmony_ci				ste,config = <&gpio_out_lo>;
55662306a36Sopenharmony_ci			};
55762306a36Sopenharmony_ci		};
55862306a36Sopenharmony_ci	};
55962306a36Sopenharmony_ci	flash {
56062306a36Sopenharmony_ci		gpio_flash_default_mode: flash_default {
56162306a36Sopenharmony_ci			skomer_cfg1 {
56262306a36Sopenharmony_ci				pins = "GPIO140_B11", "GPIO141_C12";
56362306a36Sopenharmony_ci				ste,config = <&gpio_out_lo>;
56462306a36Sopenharmony_ci			};
56562306a36Sopenharmony_ci		};
56662306a36Sopenharmony_ci	};
56762306a36Sopenharmony_ci	/* GPIO that enables the 2.9V SD card level translator */
56862306a36Sopenharmony_ci	sd-level-translator {
56962306a36Sopenharmony_ci		sd_level_translator_default: sd_level_translator_default {
57062306a36Sopenharmony_ci			/* level shifter on GPIO87 */
57162306a36Sopenharmony_ci			skomer_cfg1 {
57262306a36Sopenharmony_ci				pins = "GPIO87_B3";
57362306a36Sopenharmony_ci				ste,config = <&gpio_out_hi>;
57462306a36Sopenharmony_ci			};
57562306a36Sopenharmony_ci		};
57662306a36Sopenharmony_ci	};
57762306a36Sopenharmony_ci	/* GPIO that enables the LDO regulator for the eMMC */
57862306a36Sopenharmony_ci	emmc-ldo {
57962306a36Sopenharmony_ci		emmc_ldo_en_default_mode: emmc_ldo_default {
58062306a36Sopenharmony_ci			/* LDO enable on GPIO223 */
58162306a36Sopenharmony_ci			skomer_cfg1 {
58262306a36Sopenharmony_ci				pins = "GPIO223_AH9";
58362306a36Sopenharmony_ci				ste,config = <&gpio_out_hi>;
58462306a36Sopenharmony_ci			};
58562306a36Sopenharmony_ci		};
58662306a36Sopenharmony_ci	};
58762306a36Sopenharmony_ci	/* GPIO keys */
58862306a36Sopenharmony_ci	gpio-keys {
58962306a36Sopenharmony_ci		gpio_keys_default_mode: gpio_keys_default {
59062306a36Sopenharmony_ci			skomer_cfg1 {
59162306a36Sopenharmony_ci				pins = "GPIO67_G2", /* VOL UP */
59262306a36Sopenharmony_ci				       "GPIO91_B6", /* HOME */
59362306a36Sopenharmony_ci				       "GPIO92_D6", /* VOL DOWN */
59462306a36Sopenharmony_ci				       "GPIO204_AF23", /* MENU */
59562306a36Sopenharmony_ci				       "GPIO205_AG23"; /* BACK */
59662306a36Sopenharmony_ci					ste,config = <&gpio_in_pu>;
59762306a36Sopenharmony_ci			};
59862306a36Sopenharmony_ci		};
59962306a36Sopenharmony_ci	};
60062306a36Sopenharmony_ci	/* Interrupt line for BMA254 */
60162306a36Sopenharmony_ci	bma254 {
60262306a36Sopenharmony_ci		bma254_skomer_default: bma254_skomer {
60362306a36Sopenharmony_ci			skomer_cfg1 {
60462306a36Sopenharmony_ci				pins = "GPIO224_AG9";
60562306a36Sopenharmony_ci				ste,config = <&gpio_in_pd>;
60662306a36Sopenharmony_ci			};
60762306a36Sopenharmony_ci		};
60862306a36Sopenharmony_ci	};
60962306a36Sopenharmony_ci	/* Interrupt line for light/proximity sensor GP2AP002 */
61062306a36Sopenharmony_ci	gp2ap002 {
61162306a36Sopenharmony_ci		gp2ap002_skomer_default: gp2ap002_skomer {
61262306a36Sopenharmony_ci			skomer_cfg1 {
61362306a36Sopenharmony_ci				pins = "GPIO146_D13";
61462306a36Sopenharmony_ci				ste,config = <&gpio_in_nopull>;
61562306a36Sopenharmony_ci			};
61662306a36Sopenharmony_ci		};
61762306a36Sopenharmony_ci	};
61862306a36Sopenharmony_ci	/* GPIO-based I2C bus for NCP6914 */
61962306a36Sopenharmony_ci	i2c-gpio-0 {
62062306a36Sopenharmony_ci		i2c_gpio_0_default: i2c_gpio_0 {
62162306a36Sopenharmony_ci			skomer_cfg1 {
62262306a36Sopenharmony_ci				pins = "GPIO143_D12", "GPIO144_B13";
62362306a36Sopenharmony_ci				ste,config = <&gpio_in_nopull>;
62462306a36Sopenharmony_ci			};
62562306a36Sopenharmony_ci		};
62662306a36Sopenharmony_ci	};
62762306a36Sopenharmony_ci	/* GPIO-based I2C bus for ALPS HSCD compass */
62862306a36Sopenharmony_ci	i2c-gpio-1 {
62962306a36Sopenharmony_ci		i2c_gpio_1_default: i2c_gpio_1 {
63062306a36Sopenharmony_ci			skomer_cfg1 {
63162306a36Sopenharmony_ci				pins = "GPIO151_B17", "GPIO152_D16";
63262306a36Sopenharmony_ci				ste,config = <&gpio_in_nopull>;
63362306a36Sopenharmony_ci			};
63462306a36Sopenharmony_ci		};
63562306a36Sopenharmony_ci	};
63662306a36Sopenharmony_ci	wlan {
63762306a36Sopenharmony_ci		wlan_default_mode: wlan_default {
63862306a36Sopenharmony_ci			skomer_cfg1 {
63962306a36Sopenharmony_ci				pins = "GPIO216_AG12";
64062306a36Sopenharmony_ci				ste,config = <&gpio_in_pd>;
64162306a36Sopenharmony_ci			};
64262306a36Sopenharmony_ci		};
64362306a36Sopenharmony_ci		wlan_en_default_mode: wlan_en_default {
64462306a36Sopenharmony_ci			skomer_cfg2 {
64562306a36Sopenharmony_ci				pins = "GPIO215_AH13";
64662306a36Sopenharmony_ci				ste,config = <&gpio_out_lo>;
64762306a36Sopenharmony_ci			};
64862306a36Sopenharmony_ci		};
64962306a36Sopenharmony_ci	};
65062306a36Sopenharmony_ci	bluetooth {
65162306a36Sopenharmony_ci		bluetooth_default_mode: bluetooth_default {
65262306a36Sopenharmony_ci			skomer_cfg1 {
65362306a36Sopenharmony_ci				pins = "GPIO199_AH23", "GPIO222_AJ9";
65462306a36Sopenharmony_ci				ste,config = <&gpio_out_lo>;
65562306a36Sopenharmony_ci			};
65662306a36Sopenharmony_ci			skomer_cfg2 {
65762306a36Sopenharmony_ci				pins = "GPIO97_D9";
65862306a36Sopenharmony_ci				ste,config = <&gpio_in_nopull>;
65962306a36Sopenharmony_ci			};
66062306a36Sopenharmony_ci		};
66162306a36Sopenharmony_ci	};
66262306a36Sopenharmony_ci	vibrator {
66362306a36Sopenharmony_ci		vibrator_default: vibrator_default {
66462306a36Sopenharmony_ci			skomer_cfg1 {
66562306a36Sopenharmony_ci				pins = "GPIO195_AG28";	/* MOT_EN */
66662306a36Sopenharmony_ci				ste,config = <&gpio_out_lo>;
66762306a36Sopenharmony_ci			};
66862306a36Sopenharmony_ci		};
66962306a36Sopenharmony_ci	};
67062306a36Sopenharmony_ci	/* Interrupt line for the Cypress TMA140 touchscreen */
67162306a36Sopenharmony_ci	touchscreen {
67262306a36Sopenharmony_ci		tma140_skomer_default: tma140_skomer {
67362306a36Sopenharmony_ci			skomer_cfg1 {
67462306a36Sopenharmony_ci				pins = "GPIO218_AH11";
67562306a36Sopenharmony_ci				ste,config = <&gpio_in_nopull>;
67662306a36Sopenharmony_ci			};
67762306a36Sopenharmony_ci		};
67862306a36Sopenharmony_ci	};
67962306a36Sopenharmony_ci	g05ta03 {
68062306a36Sopenharmony_ci		g05ta03_skomer_default: g05ta03 {
68162306a36Sopenharmony_ci			/* Reset line, start out de-asserted */
68262306a36Sopenharmony_ci			skomer_cfg1 {
68362306a36Sopenharmony_ci				pins = "GPIO209_AG15";
68462306a36Sopenharmony_ci				ste,config = <&gpio_out_hi>;
68562306a36Sopenharmony_ci			};
68662306a36Sopenharmony_ci			/* GPS_ON_OFF, start out deasserted (off) */
68762306a36Sopenharmony_ci			skomer_cfg2 {
68862306a36Sopenharmony_ci				pins = "GPIO86_C6";
68962306a36Sopenharmony_ci				ste,config = <&gpio_out_lo>;
69062306a36Sopenharmony_ci			};
69162306a36Sopenharmony_ci		};
69262306a36Sopenharmony_ci	};
69362306a36Sopenharmony_ci};
69462306a36Sopenharmony_ci
69562306a36Sopenharmony_ci&ab8505_gpio {
69662306a36Sopenharmony_ci	/* Hog a few default settings */
69762306a36Sopenharmony_ci	pinctrl-names = "default";
69862306a36Sopenharmony_ci	pinctrl-0 = <&gpio_default>;
69962306a36Sopenharmony_ci
70062306a36Sopenharmony_ci	gpio {
70162306a36Sopenharmony_ci		gpio_default: gpio_default {
70262306a36Sopenharmony_ci			skomer_mux {
70362306a36Sopenharmony_ci				/* Change unused pins to GPIO mode */
70462306a36Sopenharmony_ci				function = "gpio";
70562306a36Sopenharmony_ci				groups = "gpio3_a_1",	/* default: SysClkReq4 */
70662306a36Sopenharmony_ci					 "gpio14_a_1";	/* default: PWMOut1 */
70762306a36Sopenharmony_ci			};
70862306a36Sopenharmony_ci			skomer_cfg1 {
70962306a36Sopenharmony_ci				pins = "GPIO11_B17", "GPIO13_D17", "GPIO50_L4";
71062306a36Sopenharmony_ci				bias-disable;
71162306a36Sopenharmony_ci			};
71262306a36Sopenharmony_ci		};
71362306a36Sopenharmony_ci	};
71462306a36Sopenharmony_ci};
715