// SPDX-License-Identifier: GPL-2.0
// Copyright (c) 2018, Linaro Limited

#include <dt-bindings/gpio/gpio.h>
#include "qcs404.dtsi"
#include "pms405.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>

/ {
	aliases {
		serial0 = &blsp1_uart2;
		serial1 = &blsp1_uart3;
	};

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

	vph_pwr: vph-pwr-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vph_pwr";
		regulator-always-on;
		regulator-boot-on;
	};

	vdd_ch0_3p3:
	vdd_esmps3_3p3: vdd-esmps3-3p3-regulator {
		compatible = "regulator-fixed";
		regulator-name = "eSMPS3_3P3";

		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
	};

	usb3_vbus_reg: regulator-usb3-vbus {
		compatible = "regulator-fixed";
		regulator-name = "VBUS_BOOST_5V";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&pms405_gpios 3 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&usb_vbus_boost_pin>;
		vin-supply = <&vph_pwr>;
		enable-active-high;

		/* TODO: Drop this when introducing role switching */
		regulator-always-on;
	};
};

&blsp1_uart3 {
	status = "okay";

	bluetooth {
		compatible = "qcom,wcn3990-bt";
		vddio-supply = <&vreg_l6_1p8>;
		vddxo-supply = <&vreg_l5_1p8>;
		vddrf-supply = <&vreg_l1_1p3>;
		vddch0-supply = <&vdd_ch0_3p3>;

		local-bd-address = [ 02 00 00 00 5a ad ];

		max-speed = <3200000>;
	};
};

&blsp1_dma {
	qcom,controlled-remotely;
};

&blsp2_dma {
	qcom,controlled-remotely;
};

&gcc {
	protected-clocks = <GCC_BIMC_CDSP_CLK>,
			   <GCC_CDSP_CFG_AHB_CLK>,
			   <GCC_CDSP_BIMC_CLK_SRC>,
			   <GCC_CDSP_TBU_CLK>,
			   <141>, /* GCC_WCSS_Q6_AHB_CLK */
			   <142>; /* GCC_WCSS_Q6_AXIM_CLK */
};

&pms405_spmi_regulators {
	vdd_s3-supply = <&vph_pwr>;

	pms405_s3: s3 {
		regulator-always-on;
		regulator-boot-on;
		regulator-name = "vdd_apc";
		regulator-initial-mode = <1>;
		regulator-min-microvolt = <1048000>;
		regulator-max-microvolt = <1384000>;
	};
};

&pcie {
	status = "okay";

	perst-gpio = <&tlmm 43 GPIO_ACTIVE_LOW>;

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

&pcie_phy {
	status = "okay";

	vdda-vp-supply = <&vreg_l3_1p05>;
	vdda-vph-supply = <&vreg_l5_1p8>;
};

&remoteproc_adsp {
	status = "okay";
};

&remoteproc_cdsp {
	status = "okay";
};

&remoteproc_wcss {
	status = "okay";
};

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

		vdd_s1-supply = <&vph_pwr>;
		vdd_s2-supply = <&vph_pwr>;
		vdd_s3-supply = <&vph_pwr>;
		vdd_s4-supply = <&vph_pwr>;
		vdd_s5-supply = <&vph_pwr>;
		vdd_l1_l2-supply = <&vreg_s5_1p35>;
		vdd_l3_l8-supply = <&vreg_s5_1p35>;
		vdd_l4-supply = <&vreg_s5_1p35>;
		vdd_l5_l6-supply = <&vreg_s4_1p8>;
		vdd_l7-supply = <&vph_pwr>;
		vdd_l9-supply = <&vreg_s5_1p35>;
		vdd_l10_l11_l12_l13-supply = <&vph_pwr>;

		vreg_s4_1p8: s4 {
			regulator-min-microvolt = <1728000>;
			regulator-max-microvolt = <1920000>;
		};

		vreg_s5_1p35: s5 {
			regulator-min-microvolt = <1352000>;
			regulator-max-microvolt = <1352000>;
		};

		vreg_l1_1p3: l1 {
			regulator-min-microvolt = <1240000>;
			regulator-max-microvolt = <1352000>;
		};

		vreg_l2_1p275: l2 {
			regulator-min-microvolt = <1048000>;
			regulator-max-microvolt = <1280000>;
		};

		vreg_l3_1p05: l3 {
			regulator-min-microvolt = <1048000>;
			regulator-max-microvolt = <1160000>;
		};

		vreg_l4_1p2: l4 {
			regulator-min-microvolt = <1144000>;
			regulator-max-microvolt = <1256000>;
		};

		vreg_l5_1p8: l5 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

		vreg_l6_1p8: l6 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-always-on;
		};

		vreg_l7_1p8: l7 {
			regulator-min-microvolt = <1616000>;
			regulator-max-microvolt = <3000000>;
		};

		vreg_l8_1p2: l8 {
			regulator-min-microvolt = <1136000>;
			regulator-max-microvolt = <1352000>;
		};

		vreg_l10_3p3: l10 {
			regulator-min-microvolt = <2936000>;
			regulator-max-microvolt = <3088000>;
		};

		vreg_l11_sdc2: l11 {
			regulator-min-microvolt = <2696000>;
			regulator-max-microvolt = <3304000>;
		};

		vreg_l12_3p3: l12 {
			regulator-min-microvolt = <3050000>;
			regulator-max-microvolt = <3300000>;
		};

		vreg_l13_3p3: l13 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3300000>;
		};
	};
};

&sdcc1 {
	status = "okay";

	supports-cqe;
	mmc-ddr-1_8v;
	mmc-hs400-1_8v;
	bus-width = <8>;
	non-removable;

	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&sdc1_on>;
	pinctrl-1 = <&sdc1_off>;
};

&tlmm {
	perst_state: perst {
		pins = "gpio43";
		function = "gpio";

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

	sdc1_on: sdc1-on {
		clk {
			pins = "sdc1_clk";
			bias-disable;
			drive-strength = <16>;
		};

		cmd {
			pins = "sdc1_cmd";
			bias-pull-up;
			drive-strength = <10>;
		};

		data {
			pins = "sdc1_data";
			bias-pull-up;
			drive-strength = <10>;
		};

		rclk {
			pins = "sdc1_rclk";
			bias-pull-down;
		};
	};

	sdc1_off: sdc1-off {
		clk {
			pins = "sdc1_clk";
			bias-disable;
			drive-strength = <2>;
		};

		cmd {
			pins = "sdc1_cmd";
			bias-pull-up;
			drive-strength = <2>;
		};

		data {
			pins = "sdc1_data";
			bias-pull-up;
			drive-strength = <2>;
		};

		rclk {
			pins = "sdc1_rclk";
			bias-pull-down;
		};
	};

	usb3_id_pin: usb3-id-pin {
		pinmux {
			pins = "gpio116";
			function = "gpio";
		};

		pinconf {
			pins = "gpio116";
			drive-strength = <2>;
			bias-pull-up;
			input-enable;
		};
	};
};

&pms405_gpios {
	usb_vbus_boost_pin: usb-vbus-boost-pin {
		pinconf {
			pins = "gpio3";
			function = PMIC_GPIO_FUNC_NORMAL;
			output-low;
			power-source = <1>;
		};
	};
	usb3_vbus_pin: usb3-vbus-pin {
		pinconf {
			pins = "gpio12";
			function = PMIC_GPIO_FUNC_NORMAL;
			input-enable;
			bias-pull-down;
			power-source = <1>;
		};
	};
};

&usb2 {
	status = "okay";
};

&usb2_phy_sec {
	vdd-supply = <&vreg_l4_1p2>;
	vdda1p8-supply = <&vreg_l5_1p8>;
	vdda3p3-supply = <&vreg_l12_3p3>;
	status = "okay";
};

&usb3 {
	status = "okay";

	dwc3@7580000 {
		dr_mode = "host";
	};
};

&usb2_phy_prim {
	vdd-supply = <&vreg_l4_1p2>;
	vdda1p8-supply = <&vreg_l5_1p8>;
	vdda3p3-supply = <&vreg_l12_3p3>;
	status = "okay";
};

&usb3_phy {
	vdd-supply = <&vreg_l3_1p05>;
	vdda1p8-supply = <&vreg_l5_1p8>;
	status = "okay";
};

&wifi {
	status = "okay";
	vdd-0.8-cx-mx-supply = <&vreg_l2_1p275>;
	vdd-1.8-xo-supply = <&vreg_l5_1p8>;
	vdd-1.3-rfa-supply = <&vreg_l1_1p3>;
};

/* PINCTRL - additions to nodes defined in qcs404.dtsi */

&blsp1_uart2_default {
	rx {
		drive-strength = <2>;
		bias-disable;
	};

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

&blsp1_uart3_default {
	cts {
		pins = "gpio84";
		bias-disable;
	};

	rts-tx {
		pins = "gpio85", "gpio82";
		drive-strength = <2>;
		bias-disable;
	};

	rx {
		pins = "gpio83";
		bias-pull-up;
	};
};
