// SPDX-License-Identifier: GPL-2.0-only

/dts-v1/;

#include "msm8916-samsung-e2015-common.dtsi"
#include <dt-bindings/leds/common.h>

/*
 * NOTE: The original firmware from Samsung can only boot ARM32 kernels on some
 * variants.
 * Unfortunately, the firmware is signed and cannot be replaced easily.
 * There seems to be no way to boot ARM64 kernels on 32-bit devices 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-grandmax.dts
 */

/ {
	model = "Samsung Galaxy Grand Max";
	compatible = "samsung,grandmax", "qcom,msm8916";
	chassis-type = "handset";

	/delete-node/ gpio-hall-sensor;
	/delete-node/ i2c-nfc;
	/delete-node/ i2c-tkey;

	gpio-leds {
		compatible = "gpio-leds";
		led-keyled {
			function = LED_FUNCTION_KBD_BACKLIGHT;
			color = <LED_COLOR_ID_WHITE>;

			gpios = <&tlmm 60 GPIO_ACTIVE_HIGH>;

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

&battery {
	charge-term-current-microamp = <150000>;
	constant-charge-current-max-microamp = <1000000>;
	constant-charge-voltage-max-microvolt = <4400000>;
};

&blsp_i2c5 {
	status = "okay";

	touchscreen@50 {
		compatible = "imagis,ist3038";
		reg = <0x50>;

		interrupts-extended = <&tlmm 13 IRQ_TYPE_EDGE_FALLING>;

		touchscreen-size-x = <720>;
		touchscreen-size-y = <1280>;

		vdd-supply = <&reg_vdd_tsp_a>;
		vddio-supply = <&pm8916_l6>;

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

		linux,keycodes = <KEY_APPSELECT KEY_BACK>;
	};
};

&reg_motor_vdd {
	gpio = <&tlmm 72 GPIO_ACTIVE_HIGH>;
};

&reg_touch_key {
	status = "disabled"; /* Using Imagis touch key */
};

&sound {
	model = "samsung-gmax"; /* No secondary microphone */
};

&tlmm {
	gpio_leds_default: gpio-led-default-state {
		pins = "gpio60";
		function = "gpio";

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

&motor_en_default {
	pins = "gpio72";
};
