// SPDX-License-Identifier: GPL-2.0-only
/*
 * Devicetree for the Samsung XCover 2 GT-S7710 also known as Skomer.
 */

/dts-v1/;
#include "ste-db8500.dtsi"
#include "ste-ab8505.dtsi"
#include "ste-dbx5x0-pinctrl.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>

/ {
	model = "Samsung XCover 2 (GT-S7710)";
	compatible = "samsung,skomer", "st-ericsson,u8500";

	chosen {
		stdout-path = &serial2;
	};

	/* TI TXS0206 level translator for 2.9 V */
	sd_level_translator: regulator-gpio {
		compatible = "regulator-fixed";

		/* GPIO87 EN */
		gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>;
		enable-active-high;

		regulator-name = "sd-level-translator";
		regulator-min-microvolt = <2900000>;
		regulator-max-microvolt = <2900000>;
		regulator-type = "voltage";

		startup-delay-us = <200>;

		pinctrl-names = "default";
		pinctrl-0 = <&sd_level_translator_default>;
	};

	/* External LDO MIC5366-3.3YMT for eMMC */
	ldo_3v3_reg: regulator-gpio-ldo-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "en-3v3-fixed-supply";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio6 31 GPIO_ACTIVE_HIGH>;
		startup-delay-us = <5000>;
		enable-active-high;
		pinctrl-names = "default";
		pinctrl-0 = <&emmc_ldo_en_default_mode>;
	};

	wlan_en: regulator-gpio-wlan-en {
		compatible = "regulator-fixed";
		regulator-name = "wl-reg-on";
		regulator-min-microvolt = <3000000>;
		regulator-max-microvolt = <3000000>;
		startup-delay-us = <200000>;
		/* GPIO215 WLAN_EN */
		gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		pinctrl-names = "default";
		pinctrl-0 = <&wlan_en_default_mode>;
	};

	vibrator {
		compatible = "gpio-vibrator";
		enable-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&vibrator_default>;
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio_keys_default_mode>;

		button-home {
			linux,code = <KEY_HOME>;
			label = "HOME";
			/* GPIO91 */
			gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
		};
		button-volup {
			linux,code = <KEY_VOLUMEUP>;
			label = "VOL+";
			/* GPIO67 */
			gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
		};
		button-voldown {
			linux,code = <KEY_VOLUMEDOWN>;
			label = "VOL-";
			/* GPIO92 */
			gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
		};
		button-menu {
			linux,code = <KEY_MENU>;
			label = "MENU";
			/* GPIO204 */
			gpios = <&gpio6 12 GPIO_ACTIVE_LOW>;
		};
		button-back {
			linux,code = <KEY_BACK>;
			label = "BACK";
			/* GPIO205 */
			gpios = <&gpio6 13 GPIO_ACTIVE_LOW>;
		};
	};

	ktd253: backlight {
		compatible = "kinetic,ktd253";
		/* GPIO 69 */
		enable-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
		/* Default to 13/32 brightness */
		default-brightness = <13>;
		pinctrl-names = "default";
		pinctrl-0 = <&gpio_backlight_default_mode>;
	};

	/* Richtek RT8515GQW Flash LED Driver IC */
	flash {
		compatible = "richtek,rt8515";
		/* GPIO 140 */
		enf-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
		/* GPIO 141 */
		ent-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
		/*
		 * RFS is 16 kOhm and RTS is 100 kOhm giving
		 * the flash max current 343mA and torch max
		 * current 55 mA.
		 */
		richtek,rfs-ohms = <16000>;
		richtek,rts-ohms = <100000>;
		pinctrl-names = "default";
		pinctrl-0 = <&gpio_flash_default_mode>;

		led {
			function = LED_FUNCTION_FLASH;
			color = <LED_COLOR_ID_WHITE>;
			flash-max-timeout-us = <250000>;
			flash-max-microamp = <343750>;
			led-max-microamp = <55000>;
		};
	};

	i2c-gpio-0 {
		compatible = "i2c-gpio";
		sda-gpios = <&gpio4 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpio4 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
		pinctrl-names = "default";
		pinctrl-0 = <&i2c_gpio_0_default>;
		#address-cells = <1>;
		#size-cells = <0>;
		/* TODO: this should be used by the NCP6914 Camera power management unit */
	};

	i2c-gpio-1 {
		compatible = "i2c-gpio";
		sda-gpios = <&gpio4 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpio4 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
		pinctrl-names = "default";
		pinctrl-0 = <&i2c_gpio_1_default>;
		#address-cells = <1>;
		#size-cells = <0>;
		magnetometer@c {
			compatible = "alps,hscdtd008a";
			reg = <0x0c>;
			avdd-supply = <&ab8500_ldo_aux1_reg>;
			dvdd-supply = <&ab8500_ldo_aux8_reg>;
		};
	};

	soc {
		// External Micro SD slot
		mmc@80126000 {
			arm,primecell-periphid = <0x10480180>;
			max-frequency = <100000000>;
			bus-width = <4>;
			cap-sd-highspeed;
			cap-mmc-highspeed;
			/* All direction control is used */
			st,sig-pin-fbclk;
			full-pwr-cycle;
			vmmc-supply = <&ab8500_ldo_aux3_reg>;
			vqmmc-supply = <&sd_level_translator>;
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&mc0_a_1_default>;
			pinctrl-1 = <&mc0_a_1_sleep>;
			status = "okay";
		};

		// WLAN SDIO channel
		mmc@80118000 {
			arm,primecell-periphid = <0x10480180>;
			max-frequency = <50000000>;
			bus-width = <4>;
			non-removable;
			cap-sd-highspeed;
			vmmc-supply = <&wlan_en>;
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&mc1_a_2_default>;
			pinctrl-1 = <&mc1_a_2_sleep>;
			status = "okay";
			#address-cells = <1>;
			#size-cells = <0>;

			wifi@1 {
				compatible = "brcm,bcm4334-fmac", "brcm,bcm4329-fmac";
				reg = <1>;
				/* GPIO216 WL_HOST_WAKE */
				interrupt-parent = <&gpio6>;
				interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
				interrupt-names = "host-wake";
				pinctrl-names = "default";
				pinctrl-0 = <&wlan_default_mode>;
			};
		};

		// eMMC
		mmc@80005000 {
			arm,primecell-periphid = <0x10480180>;
		        max-frequency = <100000000>;
			bus-width = <8>;
			non-removable;
			cap-mmc-highspeed;
			mmc-ddr-1_8v;
			no-sdio;
			no-sd;
			vmmc-supply = <&ldo_3v3_reg>;
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&mc2_a_1_default>;
			pinctrl-1 = <&mc2_a_1_sleep>;

			status = "okay";
		};

		/* GBF (Bluetooth) UART */
		uart@80120000 {
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&u0_a_1_default>;
			pinctrl-1 = <&u0_a_1_sleep>;
			status = "okay";

			/* FIXME: not quite working yet, probably needs regulators */
			bluetooth {
				/* BCM4334B0 actually */
				compatible = "brcm,bcm4330-bt";
				shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
				device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
				host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
				pinctrl-names = "default";
				pinctrl-0 = <&bluetooth_default_mode>;
			};
		};

		/* GPF UART */
		uart@80121000 {
			status = "okay";
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&u1rxtx_a_1_default &u1ctsrts_a_1_default>;
			pinctrl-1 = <&u1rxtx_a_1_sleep &u1ctsrts_a_1_sleep>;
		};

		/* Debugging console UART connected to AB8505 USB */
		uart@80007000 {
			status = "okay";
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&u2rxtx_c_1_default>;
			pinctrl-1 = <&u2rxtx_c_1_sleep>;
		};

		prcmu@80157000 {
			ab8505 {
				ab8500_usb {
					pinctrl-names = "default", "sleep";
					pinctrl-0 = <&usb_a_1_default>;
					pinctrl-1 = <&usb_a_1_sleep>;
				};

				ab8505-regulators {
					ab8500_ldo_aux1 {
						/* Used for VDD for sensors */
						regulator-name = "AUX1";
						regulator-min-microvolt = <3000000>;
						regulator-max-microvolt = <3300000>;
					};

					ab8500_ldo_aux2 {
						/* Supplies the Cypress TMA140 touchscreen only with 3.0V */
						regulator-name = "AUX2";
						regulator-min-microvolt = <3000000>;
						regulator-max-microvolt = <3000000>;
					};

					ab8500_ldo_aux3 {
						/* Used for voltage for external MMC/SD card */
						regulator-name = "AUX3";
						regulator-min-microvolt = <1100000>;
						regulator-max-microvolt = <3300000>;
					};

					ab8500_ldo_aux4 {
						regulator-name = "AUX4";
						/* Hammer to 3.0V for the display */
						regulator-min-microvolt = <3000000>;
						regulator-max-microvolt = <3000000>;
					};

					ab8500_ldo_aux5 {
						regulator-name = "AUX5";
						/* Intended for 1V8 for touchscreen but actually left unused */
						regulator-min-microvolt = <1050000>;
						regulator-max-microvolt = <2790000>;
					};

					ab8500_ldo_aux6 {
						regulator-name = "AUX6";
						/* Hammer to 1.8V for the display */
						regulator-min-microvolt = <1800000>;
						regulator-max-microvolt = <1800000>;
					};

					ab8500_ldo_aux8 {
						/* Mostly VIO for sensors */
						regulator-name = "AUX8";
					};
				};
			};
		};

		/* I2C0 */
		i2c@80004000 {
			status = "okay";

			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&i2c0_a_1_default>;
			pinctrl-1 = <&i2c0_a_1_sleep>;

			proximity@44 {
				compatible = "sharp,gp2ap002s00f";
				clock-frequency = <400000>;
				reg = <0x44>;

				interrupt-parent = <&gpio4>;
				interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
				vdd-supply = <&ab8500_ldo_aux1_reg>;
				vio-supply = <&ab8500_ldo_aux8_reg>;
				pinctrl-names = "default";
				pinctrl-0 = <&gp2ap002_skomer_default>;
				sharp,proximity-far-hysteresis = /bits/ 8 <0x2f>;
				sharp,proximity-close-hysteresis = /bits/ 8 <0x0f>;
			};
		};


		/* I2C2 */
		i2c@80128000 {
			status = "okay";

			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&i2c2_b_2_default>;
			pinctrl-1 = <&i2c2_b_2_sleep>;

			accel@18 {
				compatible = "bosch,bma254";
				clock-frequency = <400000>;
				reg = <0x18>;

				/* GPIO224 used as "smart alert" interrupt */
				interrupt-parent = <&gpio7>;
				interrupts = <0 IRQ_TYPE_EDGE_RISING>;

				mount-matrix = "0", "-1", "0",
					      "1", "0", "0",
					       "0", "0", "1";
				vdd-supply = <&ab8500_ldo_aux1_reg>;
				vddio-supply = <&ab8500_ldo_aux8_reg>;
				pinctrl-names = "default";
				pinctrl-0 = <&bma254_skomer_default>;
			};
		};

		/* I2C3 */
		i2c@80110000 {
			status = "okay";

			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&i2c3_c_2_default>;
			pinctrl-1 = <&i2c3_c_2_sleep>;

			/* Cypress CY8CTMA140 touchscreen */
			touchscreen@20 {
				compatible = "cypress,cy8ctma140";
				clock-frequency = <400000>;
				reg = <0x20>;

				touchscreen-size-x = <480>;
				touchscreen-size-y = <800>;
				touchscreen-max-pressure = <255>;

				/* GPIO218 for IRQ */
				interrupt-parent = <&gpio6>;
				interrupts = <26 IRQ_TYPE_EDGE_FALLING>;

				/* VDD is "digital supply" nominally 1.71-3.6V */
				vdd-supply = <&ab8500_ldo_aux2_reg>;
				/* VCPIN is "analog supply", 2.7-3.6 V */
				vcpin-supply = <&ab8500_ldo_aux2_reg>;

				pinctrl-names = "default";
				pinctrl-0 = <&tma140_skomer_default>;
			};
		};

		mcde@a0350000 {
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <&dsi_default_mode>;

			dsi@a0351000 {
				panel {
					/* NT35510-based Hydis HVA40WV1 */
					compatible = "hydis,hva40wv1", "novatek,nt35510";
					reg = <0>;
					/* v_lcd_3v0 2.3-4.8V */
					vdd-supply = <&ab8500_ldo_aux4_reg>;
					/* v_lcd_1v8 1.65-3.3V */
					vddi-supply = <&ab8500_ldo_aux6_reg>;
					/* GPIO 139 */
					reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
					pinctrl-names = "default";
					pinctrl-0 = <&display_default_mode>;
					backlight = <&ktd253>;
				};
			};
		};
	};
};

&pinctrl {
	/*
	 * This extends the MC0 default config to include DAT32DIR
	 * which is used by this machine. If we don't do this the
	 * SD card does not work.
	 */
	sdi0 {
		mc0_a_1_default {
			default_mux {
				function = "mc0";
				/* This machine uses the DAT31 pin */
				groups = "mc0_a_1", "mc0dat31dir_a_1";
			};
			default_cfg5 {
				pins = "GPIO21_AB3"; /* DAT31DIR */
				ste,config = <&out_hi>;
			};
		};
	};

	/* The unused FBCLK needs to be pulled down on this machine */
	sdi2 {
		mc2_a_1_default {
			default_cfg2 {
				pins = "GPIO130_C8"; /* FBCLK */
				ste,config = <&in_pd>;
			};
		};
	};

	mcde {
		dsi_default_mode: dsi_default {
			default_mux1 {
				/* Mux in VSI0 used for DSI TE */
				function = "lcd";
				groups = "lcdvsi0_a_1"; /* VSI0 for LCD */
			};
			default_cfg1 {
				pins = "GPIO68_E1"; /* VSI0 */
				ste,config = <&in_nopull>;
			};
		};
	};

	/* Two GPIO lines used by the display */
	display {
		display_default_mode: display_default {
			skomer_cfg1 {
				/*
				 * OLED DETECT or check_pba, this appears to be high
				 * on "PBA" which I guess is "prototype board A".
				 */
				pins = "GPIO93_B7";
				ste,config = <&gpio_in_nopull>;
			};
			skomer_cfg2 {
				pins = "GPIO139_C9";
				/*
				 * MIPI_DSI0_RESET_N resets the display, leave high
				 * (de-asserted) so we only assert reset explicitly
				 * from the display driver.
				 */
				ste,config = <&gpio_out_hi>;
			};
		};
	};
	backlight {
		gpio_backlight_default_mode: backlight_default {
			skomer_cfg1 {
				pins = "GPIO69_E2"; /* LCD_BL_CTRL */
				ste,config = <&gpio_out_lo>;
			};
		};
	};
	flash {
		gpio_flash_default_mode: flash_default {
			skomer_cfg1 {
				pins = "GPIO140_B11", "GPIO141_C12";
				ste,config = <&gpio_out_lo>;
			};
		};
	};
	/* GPIO that enables the 2.9V SD card level translator */
	sd-level-translator {
		sd_level_translator_default: sd_level_translator_default {
			/* level shifter on GPIO87 */
			skomer_cfg1 {
				pins = "GPIO87_B3";
				ste,config = <&gpio_out_hi>;
			};
		};
	};
	/* GPIO that enables the LDO regulator for the eMMC */
	emmc-ldo {
		emmc_ldo_en_default_mode: emmc_ldo_default {
			/* LDO enable on GPIO223 */
			skomer_cfg1 {
				pins = "GPIO223_AH9";
				ste,config = <&gpio_out_hi>;
			};
		};
	};
	/* GPIO keys */
	gpio-keys {
		gpio_keys_default_mode: gpio_keys_default {
			skomer_cfg1 {
				pins = "GPIO67_G2", /* VOL UP */
				       "GPIO91_B6", /* HOME */
				       "GPIO92_D6", /* VOL DOWN */
				       "GPIO204_AF23", /* MENU */
				       "GPIO205_AG23"; /* BACK */
					ste,config = <&gpio_in_pu>;
			};
		};
	};
	/* Interrupt line for BMA254 */
	bma254 {
		bma254_skomer_default: bma254_skomer {
			skomer_cfg1 {
				pins = "GPIO224_AG9";
				ste,config = <&gpio_in_pd>;
			};
		};
	};
	/* Interrupt line for light/proximity sensor GP2AP002 */
	gp2ap002 {
		gp2ap002_skomer_default: gp2ap002_skomer {
			skomer_cfg1 {
				pins = "GPIO146_D13";
				ste,config = <&gpio_in_nopull>;
			};
		};
	};
	/* GPIO-based I2C bus for NCP6914 */
	i2c-gpio-0 {
		i2c_gpio_0_default: i2c_gpio_0 {
			skomer_cfg1 {
				pins = "GPIO143_D12", "GPIO144_B13";
				ste,config = <&gpio_in_nopull>;
			};
		};
	};
	/* GPIO-based I2C bus for ALPS HSCD compass */
	i2c-gpio-1 {
		i2c_gpio_1_default: i2c_gpio_1 {
			skomer_cfg1 {
				pins = "GPIO151_B17", "GPIO152_D16";
				ste,config = <&gpio_in_nopull>;
			};
		};
	};
	wlan {
		wlan_default_mode: wlan_default {
			skomer_cfg1 {
				pins = "GPIO216_AG12";
				ste,config = <&gpio_in_pd>;
			};
		};
		wlan_en_default_mode: wlan_en_default {
			skomer_cfg2 {
				pins = "GPIO215_AH13";
				ste,config = <&gpio_out_lo>;
			};
		};
	};
	bluetooth {
		bluetooth_default_mode: bluetooth_default {
			skomer_cfg1 {
				pins = "GPIO199_AH23", "GPIO222_AJ9";
				ste,config = <&gpio_out_lo>;
			};
			skomer_cfg2 {
				pins = "GPIO97_D9";
				ste,config = <&gpio_in_nopull>;
			};
		};
	};
	vibrator {
		vibrator_default: vibrator_default {
			skomer_cfg1 {
				pins = "GPIO195_AG28";	/* MOT_EN */
				ste,config = <&gpio_out_lo>;
			};
		};
	};
	/* Interrupt line for the Cypress TMA140 touchscreen */
	touchscreen {
		tma140_skomer_default: tma140_skomer {
			skomer_cfg1 {
				pins = "GPIO218_AH11";
				ste,config = <&gpio_in_nopull>;
			};
		};
	};
};

&ab8505_gpio {
	/* Hog a few default settings */
	pinctrl-names = "default";
	pinctrl-0 = <&gpio_default>;

	gpio {
		gpio_default: gpio_default {
			skomer_mux {
				/* Change unused pins to GPIO mode */
				function = "gpio";
				groups = "gpio3_a_1",	/* default: SysClkReq4 */
					 "gpio14_a_1";	/* default: PWMOut1 */
			};
			skomer_cfg1 {
				pins = "GPIO11_B17", "GPIO13_D17", "GPIO50_L4";
				bias-disable;
			};
		};
	};
};
