Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 102b4eb7 authored by Yuanyuan Liu's avatar Yuanyuan Liu
Browse files

cnss2: Add support for QCA6490 WLAN chip



Add support for QCA6490 WLAN chip.

CRs-Fixed: 2450905
Change-Id: I7a90528a39caa50ffa7f64d865a66eb91bb0fe8e
Signed-off-by: default avatarYuanyuan Liu <yuanliu@codeaurora.org>
parent 1d45792c
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -75,3 +75,11 @@ config CNSS_EMULATION
	  emulation hardware.
	  These changes are needed for WLAN drivers to support and meet the
	  requirement of emulation hardware.

config CNSS_QCA6490
	bool "Enable CNSS QCA6490 chipset specific changes"
	help
	  This enables the changes from WLAN host driver that are specific to
	  CNSS QCA6490 chipset.
	  These changes are needed to support the new hardware architecture
	  for CNSS QCA6490 chipset.
 No newline at end of file
+1 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id)
	case QCA6174_DEVICE_ID:
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
		return CNSS_BUS_PCI;
	default:
		cnss_pr_err("Unknown device_id: 0x%lx\n", device_id);
+2 −0
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@
#define QCA6290_DEVICE_ID		0x1100
#define QCA6390_VENDOR_ID		0x17CB
#define QCA6390_DEVICE_ID		0x1101
#define QCA6490_VENDOR_ID		0x17CB
#define QCA6490_DEVICE_ID		0x1103

enum cnss_dev_bus_type cnss_get_dev_bus_type(struct device *dev);
enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id);
+7 −0
Original line number Diff line number Diff line
@@ -1678,6 +1678,7 @@ int cnss_register_ramdump(struct cnss_plat_data *plat_priv)
		break;
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
		ret = cnss_register_ramdump_v2(plat_priv);
		break;
	default:
@@ -1696,6 +1697,7 @@ void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv)
		break;
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
		cnss_unregister_ramdump_v2(plat_priv);
		break;
	default:
@@ -1765,6 +1767,7 @@ static ssize_t fs_ready_store(struct device *dev,
	switch (plat_priv->device_id) {
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
		break;
	default:
		cnss_pr_err("Not supported for device ID 0x%lx\n",
@@ -1870,6 +1873,7 @@ static const struct platform_device_id cnss_platform_id_table[] = {
	{ .name = "qca6174", .driver_data = QCA6174_DEVICE_ID, },
	{ .name = "qca6290", .driver_data = QCA6290_DEVICE_ID, },
	{ .name = "qca6390", .driver_data = QCA6390_DEVICE_ID, },
	{ .name = "qca6490", .driver_data = QCA6490_DEVICE_ID, },
	{ },
};

@@ -1883,6 +1887,9 @@ static const struct of_device_id cnss_of_match_table[] = {
	{
		.compatible = "qcom,cnss-qca6390",
		.data = (void *)&cnss_platform_id_table[2]},
	{
		.compatible = "qcom,cnss-qca6490",
		.data = (void *)&cnss_platform_id_table[3]},
	{ },
};
MODULE_DEVICE_TABLE(of, cnss_of_match_table);
+13 −3
Original line number Diff line number Diff line
@@ -854,6 +854,7 @@ int cnss_pci_dev_powerup(struct cnss_pci_data *pci_priv)
		break;
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
		ret = cnss_qca6290_powerup(pci_priv);
		break;
	default:
@@ -880,6 +881,7 @@ int cnss_pci_dev_shutdown(struct cnss_pci_data *pci_priv)
		break;
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
		ret = cnss_qca6290_shutdown(pci_priv);
		break;
	default:
@@ -906,6 +908,7 @@ int cnss_pci_dev_crash_shutdown(struct cnss_pci_data *pci_priv)
		break;
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
		cnss_qca6290_crash_shutdown(pci_priv);
		break;
	default:
@@ -932,6 +935,7 @@ int cnss_pci_dev_ramdump(struct cnss_pci_data *pci_priv)
		break;
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
		ret = cnss_qca6290_ramdump(pci_priv);
		break;
	default:
@@ -1566,7 +1570,8 @@ int cnss_pci_force_wake_request(struct device *dev)
	if (!pci_priv)
		return -ENODEV;

	if (pci_priv->device_id != QCA6390_DEVICE_ID)
	if (pci_priv->device_id != QCA6390_DEVICE_ID &&
	    pci_priv->device_id != QCA6490_DEVICE_ID)
		return 0;

	mhi_ctrl = pci_priv->mhi_ctrl;
@@ -1590,7 +1595,8 @@ int cnss_pci_is_device_awake(struct device *dev)
	if (!pci_priv)
		return -ENODEV;

	if (pci_priv->device_id != QCA6390_DEVICE_ID)
	if (pci_priv->device_id != QCA6390_DEVICE_ID &&
	    pci_priv->device_id != QCA6490_DEVICE_ID)
		return true;

	mhi_ctrl = pci_priv->mhi_ctrl;
@@ -1610,7 +1616,8 @@ int cnss_pci_force_wake_release(struct device *dev)
	if (!pci_priv)
		return -ENODEV;

	if (pci_priv->device_id != QCA6390_DEVICE_ID)
	if (pci_priv->device_id != QCA6390_DEVICE_ID &&
	    pci_priv->device_id != QCA6490_DEVICE_ID)
		return 0;

	mhi_ctrl = pci_priv->mhi_ctrl;
@@ -2903,6 +2910,7 @@ static int cnss_pci_probe(struct pci_dev *pci_dev,
		break;
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
		timer_setup(&pci_priv->dev_rddm_timer,
			    cnss_dev_rddm_timeout_hdlr, 0);

@@ -2960,6 +2968,7 @@ static void cnss_pci_remove(struct pci_dev *pci_dev)
	switch (pci_dev->device) {
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
		cnss_pci_unregister_mhi(pci_priv);
		cnss_pci_disable_msi(pci_priv);
		del_timer(&pci_priv->dev_rddm_timer);
@@ -2982,6 +2991,7 @@ static const struct pci_device_id cnss_pci_id_table[] = {
	{ QCA6174_VENDOR_ID, QCA6174_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID },
	{ QCA6290_VENDOR_ID, QCA6290_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID },
	{ QCA6390_VENDOR_ID, QCA6390_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID },
	{ QCA6490_VENDOR_ID, QCA6490_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID },
	{ 0 }
};
MODULE_DEVICE_TABLE(pci, cnss_pci_id_table);