// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved.
 */
/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include <dt-bindings/gpio/gpio.h>
#include "qcs615.dtsi"
#include "pm8150.dtsi"
/ {
	model = "Qualcomm Technologies, Inc. QCS615 Ride";
	compatible = "qcom,qcs615-ride", "qcom,qcs615";
	chassis-type = "embedded";

	aliases {
		mmc0 = &sdhc_1;
		mmc1 = &sdhc_2;
		serial0 = &uart0;
	};

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

	clocks {
		sleep_clk: sleep-clk {
			compatible = "fixed-clock";
			clock-frequency = <32000>;
			#clock-cells = <0>;
		};

		xo_board_clk: xo-board-clk {
			compatible = "fixed-clock";
			clock-frequency = <38400000>;
			#clock-cells = <0>;
		};
	};

	regulator-usb2-vbus {
		compatible = "regulator-fixed";
		regulator-name = "USB2_VBUS";
		gpio = <&pm8150_gpios 10 GPIO_ACTIVE_HIGH>;
		pinctrl-0 = <&usb2_en>;
		pinctrl-names = "default";
		enable-active-high;
		regulator-always-on;
	};
};

&apps_rsc {
	regulators-0 {
		compatible = "qcom,pm8150-rpmh-regulators";
		qcom,pmic-id = "a";

		vreg_s3a: smps3 {
			regulator-name = "vreg_s3a";
			regulator-min-microvolt = <600000>;
			regulator-max-microvolt = <650000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_s4a: smps4 {
			regulator-name = "vreg_s4a";
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1829000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_s5a: smps5 {
			regulator-name = "vreg_s5a";
			regulator-min-microvolt = <1896000>;
			regulator-max-microvolt = <2040000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_s6a: smps6 {
			regulator-name = "vreg_s6a";
			regulator-min-microvolt = <1304000>;
			regulator-max-microvolt = <1404000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l1a: ldo1 {
			regulator-name = "vreg_l1a";
			regulator-min-microvolt = <488000>;
			regulator-max-microvolt = <852000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
			regulator-allow-set-load;
			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
						   RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l2a: ldo2 {
			regulator-name = "vreg_l2a";
			regulator-min-microvolt = <1650000>;
			regulator-max-microvolt = <3100000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
			regulator-allow-set-load;
			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
						   RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l3a: ldo3 {
			regulator-name = "vreg_l3a";
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1248000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
			regulator-allow-set-load;
			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
						   RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l5a: ldo5 {
			regulator-name = "vreg_l5a";
			regulator-min-microvolt = <875000>;
			regulator-max-microvolt = <975000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
			regulator-allow-set-load;
			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
						   RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l7a: ldo7 {
			regulator-name = "vreg_l7a";
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1900000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
			regulator-allow-set-load;
			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
						   RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l8a: ldo8 {
			regulator-name = "vreg_l8a";
			regulator-min-microvolt = <1150000>;
			regulator-max-microvolt = <1350000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
			regulator-allow-set-load;
			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
						   RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l10a: ldo10 {
			regulator-name = "vreg_l10a";
			regulator-min-microvolt = <2950000>;
			regulator-max-microvolt = <3312000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
			regulator-allow-set-load;
			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
						   RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l11a: ldo11 {
			regulator-name = "vreg_l11a";
			regulator-min-microvolt = <1232000>;
			regulator-max-microvolt = <1260000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
			regulator-allow-set-load;
			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
						   RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l12a: ldo12 {
			regulator-name = "vreg_l12a";
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1890000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
			regulator-allow-set-load;
			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
						   RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l13a: ldo13 {
			regulator-name = "vreg_l13a";
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3230000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
			regulator-allow-set-load;
			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
						   RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l15a: ldo15 {
			regulator-name = "vreg_l15a";
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1904000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
			regulator-allow-set-load;
			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
						   RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l16a: ldo16 {
			regulator-name = "vreg_l16a";
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3312000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
			regulator-allow-set-load;
			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
						   RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l17a: ldo17 {
			regulator-name = "vreg_l17a";
			regulator-min-microvolt = <2950000>;
			regulator-max-microvolt = <3312000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};
	};
};

&gcc {
	clocks = <&rpmhcc RPMH_CXO_CLK>,
		 <&rpmhcc RPMH_CXO_CLK_A>,
		 <&sleep_clk>;
};

&pm8150_gpios {
	usb2_en: usb2-en-state {
		pins = "gpio10";
		function = "normal";
		output-enable;
		power-source = <0>;
	};
};

&pon_pwrkey {
	status = "okay";
};

&pon_resin {
	linux,code = <KEY_VOLUMEDOWN>;

	status = "okay";
};

&qupv3_id_0 {
	status = "okay";
};

&rpmhcc {
	clocks = <&xo_board_clk>;
};

&sdhc_1 {
	pinctrl-0 = <&sdc1_state_on>;
	pinctrl-1 = <&sdc1_state_off>;
	pinctrl-names = "default", "sleep";

	bus-width = <8>;
	mmc-ddr-1_8v;
	mmc-hs200-1_8v;
	mmc-hs400-1_8v;
	mmc-hs400-enhanced-strobe;
	vmmc-supply = <&vreg_l17a>;
	vqmmc-supply = <&vreg_s4a>;

	non-removable;
	no-sd;
	no-sdio;

	status = "okay";
};

&sdhc_2 {
	pinctrl-0 = <&sdc2_state_on>;
	pinctrl-1 = <&sdc2_state_off>;
	pinctrl-names = "default", "sleep";

	bus-width = <4>;
	cd-gpios = <&tlmm 99 GPIO_ACTIVE_LOW>;

	vmmc-supply = <&vreg_l10a>;
	vqmmc-supply = <&vreg_s4a>;

	status = "okay";
};

&uart0 {
	status = "okay";
};

&usb_1_hsphy {
	vdd-supply = <&vreg_l5a>;
	vdda-pll-supply = <&vreg_l12a>;
	vdda-phy-dpdm-supply = <&vreg_l13a>;

	status = "okay";
};

&usb_qmpphy {
	vdda-phy-supply = <&vreg_l5a>;
	vdda-pll-supply = <&vreg_l12a>;

	status = "okay";
};

&usb_1 {
	status = "okay";
};

&usb_1_dwc3 {
	dr_mode = "peripheral";
};

&usb_hsphy_2 {
	vdd-supply = <&vreg_l5a>;
	vdda-pll-supply = <&vreg_l12a>;
	vdda-phy-dpdm-supply = <&vreg_l13a>;

	status = "okay";
};

&usb_2 {
	status = "okay";
};

&usb_2_dwc3 {
	dr_mode = "host";
};

&ufs_mem_hc {
	reset-gpios = <&tlmm 123 GPIO_ACTIVE_LOW>;
	vcc-supply = <&vreg_l17a>;
	vcc-max-microamp = <600000>;
	vccq2-supply = <&vreg_s4a>;
	vccq2-max-microamp = <600000>;

	status = "okay";
};

&ufs_mem_phy {
	vdda-phy-supply = <&vreg_l5a>;
	vdda-pll-supply = <&vreg_l12a>;

	status = "okay";
};

&watchdog {
	clocks = <&sleep_clk>;
};