// 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 = "ok";

	perst-gpio = <&tlmm 43 GPIO_ACTIVE_LOW>;

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

&pcie_phy {
	status = "ok";

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

&remoteproc_adsp {
	status = "ok";
};

&remoteproc_cdsp {
	status = "ok";
};

&remoteproc_wcss {
	status = "ok";
};

&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 = "ok";

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