// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2021, Luca Weiss <luca@z3ntu.xyz>
 */

/dts-v1/;

#include "qcom-msm8226.dtsi"
#include "qcom-pm8226.dtsi"

/delete-node/ &adsp_region;

/ {
	model = "LG G Watch R";
	compatible = "lg,lenok", "qcom,apq8026";
	qcom,board-id = <132 0x0a>;
	qcom,msm-id = <199 0x20000>;

	aliases {
		serial0 = &blsp1_uart3;
		serial1 = &blsp1_uart4;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	reserved-memory {
		sbl_region: sbl@2f00000 {
			reg = <0x02f00000 0x100000>;
			no-map;
		};

		external_image_region: external-image@3100000 {
			reg = <0x03100000 0x200000>;
			no-map;
		};

		adsp_region: adsp@3300000 {
			reg = <0x03300000 0x1400000>;
			no-map;
		};
	};

	vreg_wlan: wlan-regulator {
		compatible = "regulator-fixed";

		regulator-name = "wl-reg";
		regulator-min-microvolt = <2950000>;
		regulator-max-microvolt = <2950000>;

		gpio = <&tlmm 46 GPIO_ACTIVE_HIGH>;
		enable-active-high;

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

&adsp {
	status = "okay";
};

&blsp1_i2c1 {
	status = "okay";

	fuel-gauge@55 {
		compatible = "ti,bq27421";
		reg = <0x55>;
	};
};

&blsp1_i2c5 {
	status = "okay";
	clock-frequency = <384000>;

	touchscreen@20 {
		compatible = "syna,rmi4-i2c";
		reg = <0x20>;

		interrupts-extended = <&tlmm 17 IRQ_TYPE_EDGE_FALLING>;
		vdd-supply = <&pm8226_l15>;
		vio-supply = <&pm8226_l22>;

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

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

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

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

&blsp1_uart3 {
	status = "okay";
};

&blsp1_uart4 {
	status = "okay";

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

	bluetooth {
		compatible = "brcm,bcm43430a0-bt";

		max-speed = <3000000>;

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

		host-wakeup-gpios = <&tlmm 48 GPIO_ACTIVE_HIGH>;
		device-wakeup-gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
		shutdown-gpios = <&tlmm 45 GPIO_ACTIVE_HIGH>;
	};
};

&rpm_requests {
	pm8226-regulators {
		compatible = "qcom,rpm-pm8226-regulators";

		pm8226_s3: s3 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1350000>;
		};
		pm8226_s4: s4 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2200000>;
		};
		pm8226_s5: s5 {
			regulator-min-microvolt = <1150000>;
			regulator-max-microvolt = <1150000>;
		};

		pm8226_l1: l1 {
			regulator-min-microvolt = <1225000>;
			regulator-max-microvolt = <1225000>;
		};
		pm8226_l2: l2 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
		};
		pm8226_l3: l3 {
			regulator-min-microvolt = <750000>;
			regulator-max-microvolt = <1337500>;
		};
		pm8226_l4: l4 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
		};
		pm8226_l5: l5 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
		};
		pm8226_l6: l6 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};
		pm8226_l7: l7 {
			regulator-min-microvolt = <1850000>;
			regulator-max-microvolt = <1850000>;
		};
		pm8226_l8: l8 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};
		pm8226_l9: l9 {
			regulator-min-microvolt = <2050000>;
			regulator-max-microvolt = <2050000>;
		};
		pm8226_l10: l10 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};
		pm8226_l12: l12 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};
		pm8226_l14: l14 {
			regulator-min-microvolt = <2750000>;
			regulator-max-microvolt = <2750000>;
		};
		pm8226_l15: l15 {
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
		};
		pm8226_l16: l16 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3350000>;
		};
		pm8226_l17: l17 {
			regulator-min-microvolt = <2950000>;
			regulator-max-microvolt = <2950000>;
		};
		pm8226_l18: l18 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3300000>;
		};
		pm8226_l19: l19 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3000000>;
		};
		pm8226_l20: l20 {
			regulator-min-microvolt = <3075000>;
			regulator-max-microvolt = <3075000>;
		};
		pm8226_l21: l21 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2950000>;
		};
		pm8226_l22: l22 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};
		pm8226_l23: l23 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2950000>;
		};
		pm8226_l24: l24 {
			regulator-min-microvolt = <1300000>;
			regulator-max-microvolt = <1350000>;
		};
		pm8226_l25: l25 {
			regulator-min-microvolt = <1775000>;
			regulator-max-microvolt = <2125000>;
		};
		pm8226_l26: l26 {
			regulator-min-microvolt = <1225000>;
			regulator-max-microvolt = <1225000>;
		};
		pm8226_l27: l27 {
			regulator-min-microvolt = <2050000>;
			regulator-max-microvolt = <2050000>;
		};
		pm8226_l28: l28 {
			regulator-min-microvolt = <2700000>;
			regulator-max-microvolt = <3000000>;
		};

		pm8226_lvs1: lvs1 {};
	};
};

&sdhc_1 {
	status = "okay";

	vmmc-supply = <&pm8226_l17>;
	vqmmc-supply = <&pm8226_l6>;

	bus-width = <8>;
	non-removable;
};

&sdhc_3 {
	status = "okay";

	max-frequency = <100000000>;
	non-removable;

	vmmc-supply = <&vreg_wlan>;
	vqmmc-supply = <&pm8226_l6>;

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

	wifi@1 {
		compatible = "brcm,bcm43430a0-fmac", "brcm,bcm4329-fmac";
		reg = <1>;

		interrupts-extended = <&tlmm 37 IRQ_TYPE_EDGE_FALLING>;
		interrupt-names = "host-wake";

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

&smbb {
	qcom,fast-charge-safe-current = <450000>;
	qcom,fast-charge-current-limit = <400000>;
	qcom,fast-charge-safe-voltage = <4350000>;
	qcom,fast-charge-high-threshold-voltage = <4350000>;
	qcom,auto-recharge-threshold-voltage = <4240000>;
	qcom,minimum-input-voltage = <4450000>;
};

&tlmm {
	blsp1_uart4_default_state: blsp1-uart4-default-state {
		pins = "gpio12", "gpio13", "gpio14", "gpio15";
		function = "blsp_uart4";
		drive-strength = <8>;
		bias-disable;
	};

	bluetooth_default_state: bluetooth-default-state {
		pins = "gpio47", "gpio48";
		function = "gpio";
		drive-strength = <2>;
		bias-disable;
		input-enable;
	};

	touch_pins: touch {
		irq {
			pins = "gpio17";
			function = "gpio";

			drive-strength = <8>;
			bias-pull-down;
			input-enable;
		};

		reset {
			pins = "gpio16";
			function = "gpio";

			drive-strength = <8>;
			bias-disable;
			output-high;
		};
	};

	wlan_hostwake_default_state: wlan-hostwake-default-state {
		pins = "gpio37";
		function = "gpio";
		drive-strength = <2>;
		bias-disable;
		input-enable;
	};

	wlan_regulator_default_state: wlan-regulator-default-state {
		pins = "gpio46";
		function = "gpio";
		drive-strength = <2>;
		bias-pull-up;
	};
};

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

&usb_hs_phy {
	extcon = <&smbb>;
	v1p8-supply = <&pm8226_l10>;
	v3p3-supply = <&pm8226_l20>;
};
