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

/dts-v1/;

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

/ {
	model = "ASUS ZenWatch 2";
	compatible = "asus,sparrow", "qcom,apq8026";
	chassis-type = "watch";
	qcom,msm-id = <199 0x20000>;
	qcom,board-id = <8 3005>;

	reserved-memory {
		sbl_region: sbl@2f00000 {
			reg = <0x02f00000 0x100000>;
			no-map;
		};
		external_image_region: external-image@3100000 {
			reg = <0x3100000 0x200000>;
			no-map;
		};
		peripheral_region: peripheral@3300000 {
			reg = <0x3300000 0x600000>;
			no-map;
		};
		adsp_region: adsp@3900000 {
			reg = <0x3900000 0x1400000>;
			no-map;
		};
		modem_region: modem@4d00000 {
			reg = <0x4d00000 0x1b00000>;
			no-map;
		};
		modem_efs_region: modem-efs@7f00000 {
			reg = <0x7f00000 0x100000>;
			no-map;
		};
	};

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

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

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

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

&blsp1_uart1 {
	status = "okay";

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

	bluetooth {
		compatible = "brcm,bcm43430a1-bt";
		max-speed = <3000000>;

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

		host-wakeup-gpios = <&tlmm 48 GPIO_ACTIVE_HIGH>;
		device-wakeup-gpios = <&tlmm 61 GPIO_ACTIVE_HIGH>;
		shutdown-gpios = <&tlmm 34 GPIO_ACTIVE_HIGH>;
	};
};

&pm8226_vib {
	status = "okay";
};

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

		pm8226_s3: s3 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1300000>;
		};
		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 = <1900000>;
			regulator-max-microvolt = <1900000>;
		};
		pm8226_l8: l8 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};
		pm8226_l9: l9 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};
		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 = <3000000>;
			regulator-max-microvolt = <3000000>;
		};
		pm8226_l16: l16 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3000000>;
		};
		pm8226_l17: l17 {
			regulator-min-microvolt = <2950000>;
			regulator-max-microvolt = <2950000>;
		};
		pm8226_l18: l18 {
			regulator-min-microvolt = <2950000>;
			regulator-max-microvolt = <2950000>;
		};
		pm8226_l19: l19 {
			regulator-min-microvolt = <2850000>;
			regulator-max-microvolt = <2850000>;
		};
		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 = <2950000>;
		};
		pm8226_l23: l23 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};
		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 = <1800000>;
			regulator-max-microvolt = <2950000>;
		};

		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,bcm43430a1-fmac", "brcm,bcm4329-fmac";
		reg = <1>;

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

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

&smbb {
	qcom,fast-charge-safe-current = <1500000>;
	qcom,fast-charge-current-limit = <350000>;
	qcom,fast-charge-safe-voltage = <4430000>;
	qcom,fast-charge-high-threshold-voltage = <4400000>;
	qcom,auto-recharge-threshold-voltage = <4300000>;
	qcom,minimum-input-voltage = <4400000>;
};

&tlmm {
	blsp1_uart1_default_state: blsp1-uart1-default-state {
		pins = "gpio0", "gpio1", "gpio2", "gpio3";
		function = "blsp_uart1";
		drive-strength = <8>;
		bias-disable;
	};

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

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

	wlan_regulator_default_state: wlan-regulator-default-state {
		pins = "gpio35";
		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>;
};
