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

/dts-v1/;

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

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

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

	soc {
		sdhci@7824000 {
			status = "okay";

			vmmc-supply = <&pm8916_l8>;
			vqmmc-supply = <&pm8916_l5>;

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

		sdhci@7864000 {
			status = "okay";

			vmmc-supply = <&pm8916_l11>;
			vqmmc-supply = <&pm8916_l12>;

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

		serial@78b0000 {
			status = "okay";
			pinctrl-names = "default", "sleep";
			pinctrl-0 = <&blsp1_uart2_default>;
			pinctrl-1 = <&blsp1_uart2_sleep>;
		};

		usb@78d9000 {
			status = "okay";
			dr_mode = "peripheral";
			extcon = <&usb_vbus>;

			hnp-disable;
			srp-disable;
			adp-disable;

			ulpi {
				phy {
					extcon = <&usb_vbus>;
					v1p8-supply = <&pm8916_l7>;
					v3p3-supply = <&pm8916_l13>;
				};
			};
		};

		wcnss@a21b000 {
			status = "okay";
		};

		/*
		 * Attempting to enable these devices causes a "synchronous
		 * external abort". Suspected cause is that the debug power
		 * domain is not enabled by default on this device.
		 * Disable these devices for now to avoid the crash.
		 *
		 * See: https://lore.kernel.org/linux-arm-msm/20190618202623.GA53651@gerhold.net/
		 */
		tpiu@820000 { status = "disabled"; };
		funnel@821000 { status = "disabled"; };
		replicator@824000 { status = "disabled"; };
		etf@825000 { status = "disabled"; };
		etr@826000 { status = "disabled"; };
		funnel@841000 { status = "disabled"; };
		debug@850000 { status = "disabled"; };
		debug@852000 { status = "disabled"; };
		debug@854000 { status = "disabled"; };
		debug@856000 { status = "disabled"; };
		etm@85c000 { status = "disabled"; };
		etm@85d000 { status = "disabled"; };
		etm@85e000 { status = "disabled"; };
		etm@85f000 { status = "disabled"; };
	};

	// FIXME: Use extcon device provided by charger driver when available
	usb_vbus: usb-vbus {
		compatible = "linux,extcon-usb-gpio";
		vbus-gpio = <&msmgpio 62 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&usb_vbus_default>;
	};

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

&msmgpio {
	gpio_keys_default: gpio_keys_default {
		pinmux {
			function = "gpio";
			pins = "gpio107";
		};
		pinconf {
			pins = "gpio107";
			drive-strength = <2>;
			bias-pull-up;
		};
	};

	usb_vbus_default: usb-vbus-default {
		pinmux {
			function = "gpio";
			pins = "gpio62";
		};
		pinconf {
			pins = "gpio62";
			bias-pull-up;
		};
	};
};

&spmi_bus {
	pm8916@0 {
		pon@800 {
			volume-down {
				compatible = "qcom,pm8941-resin";
				interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
				bias-pull-up;
				linux,code = <KEY_VOLUMEDOWN>;
			};
		};
	};
};

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

	s1 {
		regulator-min-microvolt = <500000>;
		regulator-max-microvolt = <1300000>;
	};

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

	l3 {
		regulator-min-microvolt = <500000>;
		regulator-max-microvolt = <1287500>;
	};

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