// SPDX-License-Identifier: GPL-2.0-only
// Copyright (C) 2019 Stephan Gerhold

/dts-v1/;

#include "msm8916-pm8916.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>

/*
 * NOTE: The original firmware from Samsung can only boot ARM32 kernels.
 * Unfortunately, the firmware is signed and cannot be replaced easily.
 * There seems to be no way to boot ARM64 kernels on this device at the moment,
 * even though the hardware would support it.
 *
 * However, it is possible to use this device tree by compiling an ARM32 kernel
 * instead. For clarity and build testing this device tree is maintained next
 * to the other MSM8916 device trees. However, it is actually used through
 *   arch/arm/boot/dts/qcom-msm8916-samsung-serranove.dts
 */

/ {
	model = "Samsung Galaxy S4 Mini Value Edition";
	compatible = "samsung,serranove", "qcom,msm8916";

	aliases {
		serial0 = &blsp1_uart2;
	};

	chosen {
		stdout-path = "serial0";
	};

	reserved-memory {
		/* Additional memory used by Samsung firmware modifications */
		tz-apps@85500000 {
			reg = <0x0 0x85500000 0x0 0xb00000>;
			no-map;
		};
	};

	gpio-keys {
		compatible = "gpio-keys";

		pinctrl-names = "default";
		pinctrl-0 = <&gpio_keys_default>;

		label = "GPIO Buttons";

		volume-up {
			label = "Volume Up";
			gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_VOLUMEUP>;
		};

		home {
			label = "Home";
			gpios = <&msmgpio 109 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_HOMEPAGE>;
		};
	};

	gpio-hall-sensor {
		compatible = "gpio-keys";

		pinctrl-names = "default";
		pinctrl-0 = <&gpio_hall_sensor_default>;

		label = "GPIO Hall Effect Sensor";

		hall-sensor {
			label = "Hall Effect Sensor";
			gpios = <&msmgpio 52 GPIO_ACTIVE_LOW>;
			linux,input-type = <EV_SW>;
			linux,code = <SW_LID>;
			linux,can-disable;
		};
	};

	reg_vdd_tsp: regulator-vdd-tsp {
		compatible = "regulator-fixed";
		regulator-name = "vdd_tsp";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;

		gpio = <&msmgpio 73 GPIO_ACTIVE_HIGH>;
		enable-active-high;

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

	reg_touch_key: regulator-touch-key {
		compatible = "regulator-fixed";
		regulator-name = "touch_key";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;

		gpio = <&msmgpio 86 GPIO_ACTIVE_HIGH>;
		enable-active-high;

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

	reg_key_led: regulator-key-led {
		compatible = "regulator-fixed";
		regulator-name = "key_led";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;

		gpio = <&msmgpio 60 GPIO_ACTIVE_HIGH>;
		enable-active-high;

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

	i2c-muic {
		compatible = "i2c-gpio";
		sda-gpios = <&msmgpio 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
		scl-gpios = <&msmgpio 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;

		pinctrl-names = "default";
		pinctrl-0 = <&muic_i2c_default>;

		#address-cells = <1>;
		#size-cells = <0>;

		muic: extcon@14 {
			compatible = "siliconmitus,sm5504-muic";
			reg = <0x14>;

			interrupt-parent = <&msmgpio>;
			interrupts = <12 IRQ_TYPE_EDGE_FALLING>;

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

	i2c-tkey {
		compatible = "i2c-gpio";
		sda-gpios = <&msmgpio 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
		scl-gpios = <&msmgpio 17 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;

		pinctrl-names = "default";
		pinctrl-0 = <&tkey_i2c_default>;

		#address-cells = <1>;
		#size-cells = <0>;

		touchkey@20 {
			compatible = "coreriver,tc360-touchkey";
			reg = <0x20>;

			interrupt-parent = <&msmgpio>;
			interrupts = <98 IRQ_TYPE_EDGE_FALLING>;

			vcc-supply = <&reg_touch_key>;
			vdd-supply = <&reg_key_led>;
			vddio-supply = <&pm8916_l6>;

			linux,keycodes = <KEY_APPSELECT KEY_BACK>;

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

	i2c-nfc {
		compatible = "i2c-gpio";
		sda-gpios = <&msmgpio 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
		scl-gpios = <&msmgpio 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;

		pinctrl-names = "default";
		pinctrl-0 = <&nfc_i2c_default>;

		#address-cells = <1>;
		#size-cells = <0>;

		nfc@2b {
			compatible = "nxp,pn547", "nxp,nxp-nci-i2c";
			reg = <0x2b>;

			interrupt-parent = <&msmgpio>;
			interrupts = <21 IRQ_TYPE_EDGE_RISING>;

			enable-gpios = <&msmgpio 20 GPIO_ACTIVE_HIGH>;
			firmware-gpios = <&msmgpio 49 GPIO_ACTIVE_HIGH>;

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

&blsp_i2c2 {
	status = "okay";

	imu@6b {
		compatible = "st,lsm6ds3";
		reg = <0x6b>;

		interrupt-parent = <&msmgpio>;
		interrupts = <115 IRQ_TYPE_EDGE_RISING>;

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

&blsp_i2c4 {
	status = "okay";

	battery@35 {
		compatible = "richtek,rt5033-battery";
		reg = <0x35>;

		interrupt-parent = <&msmgpio>;
		interrupts = <121 IRQ_TYPE_EDGE_FALLING>;

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

&blsp_i2c5 {
	status = "okay";

	touchscreen@20 {
		compatible = "zinitix,bt541";
		reg = <0x20>;

		interrupt-parent = <&msmgpio>;
		interrupts = <13 IRQ_TYPE_EDGE_FALLING>;

		touchscreen-size-x = <540>;
		touchscreen-size-y = <960>;

		vdd-supply = <&reg_vdd_tsp>;
		vddo-supply = <&pm8916_l6>;

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

&blsp1_uart2 {
	status = "okay";
};

&pm8916_resin {
	status = "okay";
	linux,code = <KEY_VOLUMEDOWN>;
};

&pm8916_vib {
	status = "okay";
};

&pronto {
	status = "okay";

	iris {
		compatible = "qcom,wcn3660b";
	};
};

&sdhc_1 {
	status = "okay";

	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
	pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
};

&sdhc_2 {
	status = "okay";

	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>;
	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;

	non-removable;

	/*
	 * FIXME: Disable UHS-I modes since tuning fails with:
	 *
	 * sdhci_msm 7864900.sdhci: mmc1: No tuning point found
	 * mmc1: tuning execution failed: -5
	 * mmc1: error -5 whilst initialising SD card
	 *
	 * This is the quirk used on downstream, which suggests this is
	 * a hardware limitation. However, probing a card using DDR50 works
	 * (without tuning), so maybe only tuning is broken?
	 */
	no-1-8-v;
};

&usb {
	status = "okay";
	extcon = <&muic>, <&muic>;
};

&usb_hs_phy {
	extcon = <&muic>;
};

&smd_rpm_regulators {
	vdd_l1_l2_l3-supply = <&pm8916_s3>;
	vdd_l4_l5_l6-supply = <&pm8916_s4>;
	vdd_l7-supply = <&pm8916_s4>;

	s3 {
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <1300000>;
	};

	s4 {
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <2100000>;
	};

	l1 {
		regulator-min-microvolt = <1225000>;
		regulator-max-microvolt = <1225000>;
	};

	l2 {
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <1200000>;
	};

	l4 {
		regulator-min-microvolt = <2050000>;
		regulator-max-microvolt = <2050000>;
	};

	l5 {
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	l6 {
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	l7 {
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	l8 {
		regulator-min-microvolt = <2850000>;
		regulator-max-microvolt = <2900000>;
	};

	l9 {
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	l10 {
		regulator-min-microvolt = <2700000>;
		regulator-max-microvolt = <2800000>;
	};

	l11 {
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <2950000>;
		regulator-allow-set-load;
		regulator-system-load = <200000>;
	};

	l12 {
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <2950000>;
	};

	l13 {
		regulator-min-microvolt = <3075000>;
		regulator-max-microvolt = <3075000>;
	};

	l14 {
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <3300000>;
	};

	l15 {
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <3300000>;
	};

	l16 {
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <3300000>;
	};

	l17 {
		regulator-min-microvolt = <2850000>;
		regulator-max-microvolt = <2850000>;
	};

	l18 {
		regulator-min-microvolt = <2700000>;
		regulator-max-microvolt = <2700000>;
	};
};

&msmgpio {
	fg_alert_default: fg-alert-default {
		pins = "gpio121";
		function = "gpio";

		drive-strength = <2>;
		bias-disable;
	};

	gpio_keys_default: gpio-keys-default {
		pins = "gpio107", "gpio109";
		function = "gpio";

		drive-strength = <2>;
		bias-pull-up;
	};

	gpio_hall_sensor_default: gpio-hall-sensor-default {
		pins = "gpio52";
		function = "gpio";

		drive-strength = <2>;
		bias-disable;
	};

	imu_irq_default: imu-irq-default {
		pins = "gpio115";
		function = "gpio";

		drive-strength = <2>;
		bias-disable;
	};

	muic_i2c_default: muic-i2c-default {
		pins = "gpio105", "gpio106";
		function = "gpio";

		drive-strength = <2>;
		bias-disable;
	};

	muic_irq_default: muic-irq-default {
		pins = "gpio12";
		function = "gpio";

		drive-strength = <2>;
		bias-disable;
	};

	nfc_default: nfc-default {
		pins = "gpio20", "gpio49";
		function = "gpio";

		drive-strength = <2>;
		bias-disable;

		irq {
			pins = "gpio21";
			function = "gpio";

			drive-strength = <2>;
			bias-pull-down;
		};
	};

	nfc_i2c_default: nfc-i2c-default {
		pins = "gpio0", "gpio1";
		function = "gpio";

		drive-strength = <2>;
		bias-disable;
	};

	tkey_default: tkey-default {
		pins = "gpio98";
		function = "gpio";

		drive-strength = <2>;
		bias-disable;
	};

	tkey_en_default: tkey-en-default {
		pins = "gpio86";
		function = "gpio";

		drive-strength = <2>;
		bias-disable;
	};

	tkey_i2c_default: tkey-i2c-default {
		pins = "gpio16", "gpio17";
		function = "gpio";

		drive-strength = <2>;
		bias-disable;
	};

	tkey_led_en_default: tkey-led-en-default {
		pins = "gpio60";
		function = "gpio";

		drive-strength = <2>;
		bias-disable;
	};

	tsp_en_default: tsp-en-default {
		pins = "gpio73";
		function = "gpio";

		drive-strength = <2>;
		bias-disable;
	};

	tsp_irq_default: tsp-irq-default {
		pins = "gpio13";
		function = "gpio";

		drive-strength = <2>;
		bias-disable;
	};
};
