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

/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>
#include <dt-bindings/leds/common.h>

/ {
	model = "Longcheer L8150";
	compatible = "longcheer,l8150", "qcom,msm8916-v1-qrd/9-v1", "qcom,msm8916";
	chassis-type = "handset";

	aliases {
		serial0 = &blsp1_uart2;
	};

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

	reserved-memory {
		// wcnss.mdt is not relocatable, so it must be loaded at 0x8b600000
		/delete-node/ wcnss@89300000;

		wcnss_mem: wcnss@8b600000 {
			reg = <0x0 0x8b600000 0x0 0x600000>;
			no-map;
		};
	};

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

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

		label = "GPIO Buttons";

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

	reg_ctp: regulator-ctp {
		compatible = "regulator-fixed";
		regulator-name = "ctp";

		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;

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

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

	flash-led-controller {
		compatible = "sgmicro,sgm3140";
		flash-gpios = <&msmgpio 31 GPIO_ACTIVE_HIGH>;
		enable-gpios = <&msmgpio 32 GPIO_ACTIVE_HIGH>;

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

		flash_led: led {
			function = LED_FUNCTION_FLASH;
			color = <LED_COLOR_ID_WHITE>;
			flash-max-timeout-us = <250000>;
		};
	};
};

&blsp_i2c1 {
	status = "okay";

	led-controller@45 {
		compatible = "awinic,aw2013";
		reg = <0x45>;
		#address-cells = <1>;
		#size-cells = <0>;

		vcc-supply = <&pm8916_l17>;

		led@0 {
			reg = <0>;
			led-max-microamp = <5000>;
			function = LED_FUNCTION_INDICATOR;
			color = <LED_COLOR_ID_RED>;
		};

		led@1 {
			reg = <1>;
			led-max-microamp = <5000>;
			function = LED_FUNCTION_INDICATOR;
			color = <LED_COLOR_ID_GREEN>;
		};

		led@2 {
			reg = <2>;
			led-max-microamp = <5000>;
			function = LED_FUNCTION_INDICATOR;
			color = <LED_COLOR_ID_BLUE>;
		};
	};
};

&blsp_i2c2 {
	status = "okay";

	accelerometer@10 {
		compatible = "bosch,bmc156_accel";
		reg = <0x10>;

		/*
		 * For some reason the interrupt line is usually not connected
		 * to the BMC156. However, there are two pads next to the chip
		 * that can be shorted to make it work if needed.
		 *
		 * interrupt-parent = <&msmgpio>;
		 * interrupts = <116 IRQ_TYPE_EDGE_RISING>;
		 */

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

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

		mount-matrix = "0", "1", "0",
			      "-1", "0", "0",
			       "0", "0", "1";
	};

	magnetometer@12 {
		compatible = "bosch,bmc156_magn";
		reg = <0x12>;

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

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

		vdd-supply = <&pm8916_l17>;
		vddio-supply = <&pm8916_l6>;
	};

	light-sensor@23 {
		compatible = "liteon,ltr559";
		reg = <0x23>;
		proximity-near-level = <75>;

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

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

		vdd-supply = <&pm8916_l17>;
		vio-supply = <&pm8916_l6>;
	};

	gyroscope@68 {
		compatible = "bosch,bmg160";
		reg = <0x68>;

		interrupt-parent = <&msmgpio>;
		interrupts = <23 IRQ_TYPE_EDGE_RISING>,
			     <22 IRQ_TYPE_EDGE_RISING>;

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

		vdd-supply = <&pm8916_l17>;
		vddio-supply = <&pm8916_l6>;
	};
};

&blsp_i2c5 {
	status = "okay";

	rmi4@20 {
		compatible = "syna,rmi4-i2c";
		reg = <0x20>;
		#address-cells = <1>;
		#size-cells = <0>;

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

		vdd-supply = <&reg_ctp>;
		vio-supply = <&pm8916_l6>;

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

		syna,startup-delay-ms = <10>;

		rmi4-f01@1 {
			reg = <0x1>;
			syna,nosleep-mode = <1>; // Allow sleeping
		};

		rmi4-f12@12 {
			reg = <0x12>;
			syna,sensor-type = <1>; // Touchscreen
		};
	};
};

&blsp1_uart2 {
	status = "okay";
};

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

&pm8916_usbin {
	status = "okay";
};

&pm8916_vib {
	status = "okay";
};

&pronto {
	status = "okay";
};

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

&usb {
	status = "okay";
	dr_mode = "peripheral";
	extcon = <&pm8916_usbin>;
};

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

&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 {
	accel_int_default: accel-int-default {
		pins = "gpio116";
		function = "gpio";

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

	camera_flash_default: camera-flash-default {
		pins = "gpio31", "gpio32";
		function = "gpio";

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

	ctp_pwr_en_default: ctp-pwr-en-default {
		pins = "gpio17";
		function = "gpio";

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

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

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

	gyro_int_default: gyro-int-default {
		pins = "gpio22", "gpio23";
		function = "gpio";

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

	light_int_default: light-int-default {
		pins = "gpio115";
		function = "gpio";

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

	magn_int_default: magn-int-default {
		pins = "gpio113";
		function = "gpio";

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

	tp_int_default: tp-int-default {
		pins = "gpio13";
		function = "gpio";

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