#include <dt-bindings/regulator/qcom,rpmh-regulator-levels.h>
#include <dt-bindings/gpio/gpio.h>

&cnss_pins {
	cnss_wlan_en_active2: cnss_wlan_en_active2 {
		mux {
			pins = "gpio65";
			function = "gpio";
		};

		config {
			pins = "gpio65";
			drive-strength = <16>;
			output-high;
			bias-pull-up;
		};
	};

	cnss_wlan_en_sleep2: cnss_wlan_en_sleep2 {
		mux {
			pins = "gpio65";
			function = "gpio";
		};

		config {
			pins = "gpio65";
			drive-strength = <2>;
			output-low;
			bias-pull-down;
		};
	};
};

&soc {
	/* Support Dual Hastings case */
	cnss_pcie0: qcom,cnss-qca-converged0 {
		compatible = "qcom,cnss-qca-converged";
		/* cnss_util.ko, cnss_nl.ko and other cnss
		 * related module need this flag
		 */
		qcom,wlan;
		/* skip qcom,wlan-sw-ctrl-gpio check */
		qcom,multi-wlan-exchg;
		qcom,wlan-rc-num = <4>;
		qcom,pld_bus_ops_name = "pld_pcie_cnss2";
		qcom,bus-type=<0>;
		qcom,notify-modem-status;

		#address-cells=<1>;
		#size-cells=<1>;
		ranges = <0xb0000000 0xb0000000 0x10000>;

		vdd-wlan-ctrl1-supply = <&vreg_conn_pa>;
		vdd-wlan-ctrl2-supply = <&vreg_conn_1p8>;
		/* vdd-wlan-supply = <&vreg_wlan>; */
		vdd-wlan-vl-supply = <&pm8540_e0_s4>;
		vdd-wlan-vm-supply = <&pm8540_g0_l6>;
		vdd-wlan-vh-supply = <&pm8540_a0_l15>;

		wlan_vregs = "vdd-wlan-ctrl1", "vdd-wlan-ctrl2", "vdd-wlan-vl",
			"vdd-wlan-vm", "vdd-wlan-vh";
		qcom,vdd-wlan-ctrl1-config = <0 0 0 0 0>;
		qcom,vdd-wlan-ctrl2-config = <0 0 0 0 0>;
		/* no vote-off as sw_ctrl is not supported */
		qcom,vdd-wlan-vl-config = <1055000 1055000 0 0 0>;
		/* No vol setting for bypass LDOs */
		qcom,vdd-wlan-vm-config = <0 0 0 0 0>;
		qcom,vdd-wlan-vh-config = <0 0 0 0 0>;
		wlan-en-gpio = <&tlmm 125 0>;
		qcom,bt-en-gpio = <&tlmm 126 0>;
		pinctrl-names = "wlan_en_active", "wlan_en_sleep", "default";
		pinctrl-0 = <&cnss_wlan_en_active>;
		pinctrl-1 = <&cnss_wlan_en_sleep>;
		pinctrl-2 = <&cnss_wlan_en_sleep>;

		chip_cfg@0 {
			reg = <0xb0000000 0x10000>;
			reg-names = "smmu_iova_ipa";

			supported-ids = <0x003e>;
			wlan_vregs = "vdd-wlan";
			qcom,vdd-wlan-config = <0 0 0 10 1>;

			qcom,wlan-ramdump-dynamic = <0x200000>;
		};

		chip_cfg@1 {
			reg = <0xb0000000 0x10000>;
			reg-names = "smmu_iova_ipa";
			qcom,qrtr_node_id = <0x10>;
			supported-ids = <0x1101>;
			wlan_vregs;
			qcom,sleep-clk-support;
			qcom,wlan-ramdump-dynamic = <0x400000>;
		};

		chip_cfg@2 {
			supported-ids = <0x1102>;
			wlan_vregs = "vdd-wlan-vl", "vdd-wlan-vm",
				   "vdd-wlan-vh";
			qcom,vdd-wlan-vl-config = <1055000 1055000 0 0 0>;
			qcom,vdd-wlan-vm-config = <1350000 1350000 450000 0 0>;
			qcom,vdd-wlan-vh-config = <1900000 1900000 450000 0 0>;

			qcom,wlan-ramdump-dynamic = <0x400000>;
		};
		chip_cfg@3 {
			reg = <0xb0000000 0x10000>;
			reg-names = "smmu_iova_ipa";
			supported-ids = <0x1103>;
			wlan_vregs;
			qcom,no-bwscale;
			qcom,wlan-ramdump-dynamic = <0x420000>;
		};
	};

	cnss_pcie2: qcom,cnss-qca-converged2 {
		compatible = "qcom,cnss-qca-converged";
		qcom,wlan;
		qcom,multi-wlan-exchg;
		qcom,wlan-rc-num = <0>;
		qcom,pld_bus_ops_name = "pld_pcie_cnss0";
		qcom,bus-type=<0>;
		qcom,notify-modem-status;

		#address-cells=<1>;
		#size-cells=<1>;
		ranges = <0xd0000000 0xd0000000 0x10000>;

		vdd-wlan-ctrl1-supply = <&vreg_conn_pa2>;
		/*vdd-wlan-ctrl2-supply = <&vreg_conn_1p8>;*/
		/* vdd-wlan-supply = <&vreg_wlan>; */
		vdd-wlan-vl-supply = <&pm8540_e0_s4>;
		vdd-wlan-vm-supply = <&pm8540_g0_l6>;
		vdd-wlan-vh-supply = <&pm8540_a0_l15>;

		wlan_vregs = "vdd-wlan-ctrl1", "vdd-wlan-vl",
			"vdd-wlan-vm", "vdd-wlan-vh";
		qcom,vdd-wlan-ctrl1-config = <0 0 0 0 0>;
		/*qcom,vdd-wlan-ctrl2-config = <0 0 0 0 0>;*/
		/* no vote-off as sw_ctrl is not supported */
		qcom,vdd-wlan-vl-config = <1055000 1055000 0 0 0>;
		/* No vol setting for bypass LDOs */
		qcom,vdd-wlan-vm-config = <0 0 0 0 0>;
		qcom,vdd-wlan-vh-config = <0 0 0 0 0>;
		wlan-en-gpio = <&tlmm 65 0>;
		pinctrl-names = "wlan_en_active", "wlan_en_sleep", "default";
		pinctrl-0 = <&cnss_wlan_en_active2>;
		pinctrl-1 = <&cnss_wlan_en_sleep2>;
		pinctrl-2 = <&cnss_wlan_en_sleep2>;

		chip_cfg@0 {
			reg = <0xd0000000 0x10000>;
			reg-names = "smmu_iova_ipa";

			supported-ids = <0x003e>;
			wlan_vregs = "vdd-wlan";
			qcom,vdd-wlan-config = <0 0 0 10 1>;

			qcom,wlan-ramdump-dynamic = <0x200000>;
		};

		chip_cfg@1 {
			reg = <0xd0000000 0x10000>;
			reg-names = "smmu_iova_ipa";
			qcom,qrtr_node_id = <0x20>;
			supported-ids = <0x1101>;
			wlan_vregs;
			qcom,sleep-clk-support;
			qcom,wlan-ramdump-dynamic = <0x400000>;
		};

		chip_cfg@2 {
			supported-ids = <0x1102>;
			wlan_vregs = "vdd-wlan-vl", "vdd-wlan-vm",
				   "vdd-wlan-vh";
			qcom,vdd-wlan-vl-config = <1055000 1055000 0 0 0>;
			qcom,vdd-wlan-vm-config = <1350000 1350000 450000 0 0>;
			qcom,vdd-wlan-vh-config = <1900000 1900000 450000 0 0>;

			qcom,wlan-ramdump-dynamic = <0x400000>;
		};

		chip_cfg@3 {
			reg = <0xb0000000 0x10000>;
			reg-names = "smmu_iova_ipa";
			supported-ids = <0x1103>;
			wlan_vregs;
			qcom,no-bwscale;
			qcom,wlan-ramdump-dynamic = <0x420000>;
		};
	};
};

&reserved_memory {
	cnss_wlan_mem: cnss_wlan_region {
		compatible = "shared-dma-pool";
		alloc-ranges = <0x0 0x00000000 0x0 0xffffffff>;
		reusable;
		alignment = <0x0 0x400000>;
		size = <0x0 0x2000000>;
	};
};

&pcie4_rp {
	#address-cells = <5>;
	#size-cells = <0>;

	cnss_pci: cnss_pci {
		reg = <0 0 0 0 0>;
		memory-region = <&cnss_wlan_mem>;
	};
};
