// 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>;
};

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

&reg_touch_key {
	status = "disabled";
};

&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";
};
