#include <dt-bindings/interconnect/qcom,kalama.h>

&tlmm {
	cnss_pins {
		cnss_wlan_en_active: cnss_wlan_en_active {
			mux {
				pins = "gpio80";
				function = "gpio";
			};

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

		cnss_wlan_en_sleep: cnss_wlan_en_sleep {
			mux {
				pins = "gpio80";
				function = "gpio";
			};

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

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

&soc {
	wlan: qcom,cnss-qca-converged {
		compatible = "qcom,cnss-qca-converged";
		reg = <0xb0000000 0x10000>;
		reg-names = "smmu_iova_ipa";
		qcom,converged-dt;
		qcom,wlan-sw-ctrl-gpio = <&tlmm 83 0>;

		chip_cfg@0 {
			supported-ids = <0x1103>;
			wlan-en-gpio = <&tlmm 80 0>;
			qcom,bt-en-gpio = <&tlmm 81 0>;
			qcom,sw-ctrl-gpio = <&tlmm 82 0>;
			pinctrl-names = "wlan_en_active", "wlan_en_sleep";
			pinctrl-0 = <&cnss_wlan_en_active>;
			pinctrl-1 = <&cnss_wlan_en_sleep>;
			qcom,wlan;
			qcom,wlan-rc-num = <1>;
			qcom,rc-ep-short-channel;
			qcom,wlan-ramdump-dynamic = <0x420000>;
			qcom,wlan-cbc-enabled;
			cnss-enable-self-recovery;
			use-pm-domain;
			mboxes = <&qmp_aop 0>;
			qcom,vreg_ol_cpr ="s2g";

			vdd-wlan-aon-supply = <&S2G>;
			qcom,vdd-wlan-aon-config = <1012000 1012000 0 0 1>;
			vdd-wlan-dig-supply = <&S4E>;
			qcom,vdd-wlan-dig-config = <966000 966000 0 0 1>;
			vdd-wlan-io-supply = <&L15B>;
			qcom,vdd-wlan-io-config = <1800000 1800000 0 0 1>;
			vdd-wlan-rfa1-supply = <&S6G>;
			qcom,vdd-wlan-rfa1-config = <1900000 1900000 0 0 1>;
			vdd-wlan-rfa2-supply = <&S4G>;
			qcom,vdd-wlan-rfa2-config = <1350000 1350000 0 0 1>;

			interconnects =
			<&pcie_noc MASTER_PCIE_1 &pcie_noc SLAVE_ANOC_PCIE_GEM_NOC>,
			<&gem_noc MASTER_ANOC_PCIE_GEM_NOC &mc_virt SLAVE_EBI1>;
			interconnect-names = "pcie_to_memnoc", "memnoc_to_ddr";

			qcom,icc-path-count = <2>;
			qcom,bus-bw-cfg-count = <10>;
			qcom,bus-bw-cfg =
			/** ICC Path 1 **/
			<0 0>, /* no vote */
			/* idle: 0-18 Mbps snoc/anoc: 100 Mhz */
			<2250 1600000>,
			/* low: 18-60 Mbps snoc/anoc: 100 Mhz */
			<7500 1600000>,
			/* medium: 60-240 Mbps snoc/anoc: 100 Mhz */
			<30000 1600000>,
			/* high: 240-1200 Mbps snoc/anoc: 100 Mhz */
			<100000 1600000>,
			/* very high: 1200 Mbps snoc/anoc: 403 Mhz */
			<175000 6448000>,
			/* ultra high: DBS mode snoc/anoc: 403 Mhz */
			<312500 6448000>,
			/* super high: DBS mode snoc/anoc: 533 Mhz */
			<587500 8528000>,
			/* low (latency critical): 18-60 Mbps snoc/anoc: 200 Mhz
			 * ddr: 547.2 MHz
			 */
			<7500 3200000>,
			/* mid high: 800-1200 Mbps snoc/anoc: 200 Mhz */
			<100000 3200000>,

			/** ICC Path 2 **/
			<0 0>,
			/* idle: 0-18 Mbps ddr: 547.2 MHz */
			<2250 2188800>,
			/* low: 18-60 Mbps ddr: 547.2 MHz */
			<7500 2188800>,
			/* medium: 60-240 Mbps ddr: 547.2 MHz */
			<30000 2188800>,
			/* high: 240-1080 Mbps ddr: 547.2 MHz */
			<100000 2188800>,
			/* very high: > 1080 Mbps ddr: 1555 MHz */
			<175000 6220800>,
			/* ultra high: DBS mode ddr: 2092 MHz */
			<312500 8368000>,
			/* super high: DBS mode ddr: 3.2 GHz */
			<587500 12800000>,
			/* low (latency critical): 18-60 Mbps ddr: 547.2 MHz */
			<7500 2188800>,
			/* mid high: 800-1200 Mbps ddr: 547.2 Mhz */
			<100000 2188800>;

			qcom,pdc_init_table =
			"{class: wlan_pdc, ss: rf, res: s4e.v, upval: 966}",
			"{class: wlan_pdc, ss: rf, res: s4e.v, dwnval: 615}",
			"{class: wlan_pdc, ss: rf, res: s4g.v, upval: 1350}",
			"{class: wlan_pdc, ss: rf, res: s4g.v, dwnval: 945}",
			"{class: wlan_pdc, ss: rf, res: s6g.v, upval: 1900}",
			"{class: wlan_pdc, ss: rf, res: s6g.v, dwnval: 1825}",
			"{class: wlan_pdc, ss: rf, res: s2g.m, enable: 1}",
			"{class: wlan_pdc, ss: rf, res: s2g.v, enable: 1}",
			"{class: wlan_pdc, ss: rf, res: s2g.v, upval: 1012}",
			"{class: wlan_pdc, ss: rf, res: s2g.v, dwnval: 800}",
			"{class: wlan_pdc, ss: bb, res: pdc, enable: 0}";
		};

		chip_cfg@1 {
			supported-ids = <0x1107>;
			wlan-en-gpio = <&tlmm 80 0>;
			qcom,bt-en-gpio = <&tlmm 81 0>;
			qcom,sw-ctrl-gpio = <&tlmm 82 0>;
			pinctrl-names = "wlan_en_active", "wlan_en_sleep";
			pinctrl-0 = <&cnss_wlan_en_active>;
			pinctrl-1 = <&cnss_wlan_en_sleep>;
			qcom,wlan;
			qcom,wlan-rc-num = <0>;
			qcom,wlan-ramdump-dynamic = <0x780000>;
			qcom,wlan-cbc-enabled;
			cnss-enable-self-recovery;
			use-pm-domain;
			mboxes = <&qmp_aop 0>;

			vdd-wlan-io-supply = <&L15B>;
			qcom,vdd-wlan-io-config = <1800000 1800000 0 0 1>;
			vdd-wlan-supply = <&S5G>;
			qcom,vdd-wlan-config = <1000000 1000000 0 0 1>;
			vdd-wlan-aon-supply = <&S2G>;
			qcom,vdd-wlan-aon-config = <980000 980000 0 0 1>;
			vdd-wlan-dig-supply = <&S4E>;
			qcom,vdd-wlan-dig-config = <950000 950000 0 0 1>;
			vdd-wlan-rfa1-supply = <&S6G>;
			qcom,vdd-wlan-rfa1-config = <1900000 1900000 0 0 1>;
			vdd-wlan-rfa2-supply = <&S4G>;
			qcom,vdd-wlan-rfa2-config = <1350000 1350000 0 0 1>;

			interconnects =
			<&pcie_noc MASTER_PCIE_0 &pcie_noc SLAVE_ANOC_PCIE_GEM_NOC>,
			<&gem_noc MASTER_ANOC_PCIE_GEM_NOC &mc_virt SLAVE_EBI1>;
			interconnect-names = "pcie_to_memnoc", "memnoc_to_ddr";

			qcom,icc-path-count = <2>;
			qcom,bus-bw-cfg-count = <9>;
			qcom,bus-bw-cfg =
			/** ICC Path 1 **/
			<0 0>, /* no vote */
			/* idle: 0-18 Mbps snoc/anoc: 100 Mhz */
			<2250 1600000>,
			/* low: 18-60 Mbps snoc/anoc: 100 Mhz */
			<7500 1600000>,
			/* medium: 60-240 Mbps snoc/anoc: 100 Mhz */
			<30000 1600000>,
			/* high: 240-1200 Mbps snoc/anoc: 100 Mhz */
			<100000 1600000>,
			/* very high: > 1200 Mbps snoc/anoc: 403 Mhz */
			<175000 6448000>,
			/* ultra high: DBS mode snoc/anoc: 403 Mhz */
			<312500 6448000>,
			/* super high: DBS mode snoc/anoc: 533 Mhz */
			<587500 8528000>,
			/* low (latency critical): 18-60 Mbps snoc/anoc: 200 Mhz */
			<7500 3200000>,

			/** ICC Path 2 **/
			<0 0>,
			/* idle: 0-18 Mbps ddr: 547.2 MHz */
			<2250 2188800>,
			/* low: 18-60 Mbps ddr: 547.2 MHz */
			<7500 2188800>,
			/* medium: 60-240 Mbps ddr: 547.2 MHz */
			<30000 2188800>,
			/* high: 240-1200 Mbps ddr: 547.2 MHz */
			<100000 2188800>,
			/* very high: > 1200 Mbps ddr: 1555 MHz */
			<175000 6220800>,
			/* ultra high: DBS mode ddr: 2092 MHz */
			<312500 8368000>,
			/* super high: DBS mode ddr: 3.2 GHz */
			<587500 12800000>,
			/* low (latency critical): 18-60 Mbps ddr: 547.2 MHz */
			<7500 2188800>;

			qcom,vreg_pdc_map =
				"s4e", "rf",
				"l15B", "rf",
				"l3g", "rf",
				"s4g", "rf",
				"s6g", "rf",
				"s2g", "bb",
				"s5g", "bb";

			qcom,pmu_vreg_map =
				"VDD095_MX_PMU", "s2g",
				"VDD095_PMU", "s5g",
				"VDD_PMU_AON_I", "s4e",
				"VDD095_PMU_BT", "s4e",
				"VDD09_PMU_RFA_I", "s4e",
				"VDD13_PMU_PCIE_I", "s4g",
				"VDD13_PMU_RFA_I", "s4g",
				"VDD19_PMU_PCIE_I", "s6g",
				"VDD19_PMU_RFA_I", "s6g";

			qcom,pdc_init_table =
			"{class: wlan_pdc, ss: rf, res: s4e.v, upval: 916}",
			"{class: wlan_pdc, ss: rf, res: s4e.v, dwnval: 612}",
			"{class: wlan_pdc, ss: rf, res: s4g.v, upval: 1316}",
			"{class: wlan_pdc, ss: rf, res: s4g.v, dwnval: 944}",
			"{class: wlan_pdc, ss: rf, res: s6g.v, upval: 1864}",
			"{class: wlan_pdc, ss: rf, res: s6g.v, dwnval: 1820}",
			"{class: wlan_pdc, ss: rf, res: s2g.m, enable: 0}",
			"{class: wlan_pdc, ss: rf, res: s2g.v, enable: 0}",
			"{class: wlan_pdc, ss: bb, res: pdc, enable: 1}",
			"{class: wlan_pdc, ss: bb, res: s2g.v, upval: 976}",
			"{class: wlan_pdc, ss: bb, res: s2g.v, dwnval: 800}",
			"{class: wlan_pdc, ss: bb, res: s5g.v, upval: 940}",
			"{class: wlan_pdc, ss: bb, res: s5g.v, dwnval: 420}";
		};
	};
};

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

	cnss_pci0: cnss_pci0 {
		reg = <0 0 0 0 0>;
		qcom,iommu-group = <&cnss_pci_iommu_group0>;
		memory-region = <&cnss_wlan_mem>;

		#address-cells = <1>;
		#size-cells = <1>;

		cnss_pci_iommu_group0: cnss_pci_iommu_group0 {
			qcom,iommu-msi-size = <0x1000>;
			qcom,iommu-dma-addr-pool = <0xa0000000 0x10000000>;
			qcom,iommu-dma = "fastmap";
			qcom,iommu-pagetable = "coherent";
			qcom,iommu-faults = "stall-disable", "HUPCF", "non-fatal";
		};
	};
};

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

	cnss_pci1: cnss_pci1 {
		reg = <0 0 0 0 0>;
		qcom,iommu-group = <&cnss_pci_iommu_group1>;
		memory-region = <&cnss_wlan_mem>;

		#address-cells = <1>;
		#size-cells = <1>;

		cnss_pci_iommu_group1: cnss_pci_iommu_group1 {
			qcom,iommu-msi-size = <0x1000>;
			qcom,iommu-dma-addr-pool = <0xa0000000 0x10000000>;
			qcom,iommu-dma = "fastmap";
			qcom,iommu-pagetable = "coherent";
			qcom,iommu-faults = "stall-disable", "HUPCF", "non-fatal";
		};
	};
};
