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

Commit c8b5d4db authored by Yue Ma's avatar Yue Ma Committed by Gerrit - the friendly Code Review server
Browse files

cnss2: Add support for WLAN WCN7850 device



Add corresponding driver support for WCN7850 device.

Change-Id: Ib02d93e9801bb628958dff4aeb105b90e5459e39
Signed-off-by: default avatarYue Ma <yuem@codeaurora.org>
parent 63c72bd4
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
#define QCA6390_DEVICE_ID		0x1101
#define QCA6490_VENDOR_ID		0x17CB
#define QCA6490_DEVICE_ID		0x1103
#define WCN7850_VENDOR_ID		0x17CB
#define WCN7850_DEVICE_ID		0x1107

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);
+6 −0
Original line number Diff line number Diff line
@@ -2187,6 +2187,7 @@ int cnss_register_ramdump(struct cnss_plat_data *plat_priv)
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
	case WCN7850_DEVICE_ID:
		ret = cnss_register_ramdump_v2(plat_priv);
		break;
	default:
@@ -2206,6 +2207,7 @@ void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv)
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
	case WCN7850_DEVICE_ID:
		cnss_unregister_ramdump_v2(plat_priv);
		break;
	default:
@@ -2720,6 +2722,7 @@ static const struct platform_device_id cnss_platform_id_table[] = {
	{ .name = "qca6290", .driver_data = QCA6290_DEVICE_ID, },
	{ .name = "qca6390", .driver_data = QCA6390_DEVICE_ID, },
	{ .name = "qca6490", .driver_data = QCA6490_DEVICE_ID, },
	{ .name = "wcn7850", .driver_data = WCN7850_DEVICE_ID, },
	{ },
};

@@ -2736,6 +2739,9 @@ static const struct of_device_id cnss_of_match_table[] = {
	{
		.compatible = "qcom,cnss-qca6490",
		.data = (void *)&cnss_platform_id_table[3]},
	{
		.compatible = "qcom,cnss-wcn7850",
		.data = (void *)&cnss_platform_id_table[4]},
	{ },
};
MODULE_DEVICE_TABLE(of, cnss_of_match_table);
+42 −9
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@

#define QCA6390_PATH_PREFIX		"qca6390/"
#define QCA6490_PATH_PREFIX		"qca6490/"
#define WCN7850_PATH_PREFIX		"wcn7850/"
#define DEFAULT_M3_FILE_NAME		"m3.bin"
#define DEFAULT_FW_FILE_NAME		"amss.bin"
#define FW_V2_FILE_NAME			"amss20.bin"
@@ -859,6 +860,7 @@ int cnss_pci_recover_link_down(struct cnss_pci_data *pci_priv)
	switch (pci_priv->device_id) {
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
	case WCN7850_DEVICE_ID:
		break;
	default:
		return -EOPNOTSUPP;
@@ -2298,6 +2300,7 @@ int cnss_pci_dev_powerup(struct cnss_pci_data *pci_priv)
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
	case WCN7850_DEVICE_ID:
		ret = cnss_qca6290_powerup(pci_priv);
		break;
	default:
@@ -2325,6 +2328,7 @@ int cnss_pci_dev_shutdown(struct cnss_pci_data *pci_priv)
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
	case WCN7850_DEVICE_ID:
		ret = cnss_qca6290_shutdown(pci_priv);
		break;
	default:
@@ -2352,6 +2356,7 @@ int cnss_pci_dev_crash_shutdown(struct cnss_pci_data *pci_priv)
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
	case WCN7850_DEVICE_ID:
		cnss_qca6290_crash_shutdown(pci_priv);
		break;
	default:
@@ -2379,6 +2384,7 @@ int cnss_pci_dev_ramdump(struct cnss_pci_data *pci_priv)
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
	case WCN7850_DEVICE_ID:
		ret = cnss_qca6290_ramdump(pci_priv);
		break;
	default:
@@ -3277,9 +3283,14 @@ int cnss_pci_force_wake_request_sync(struct device *dev, int timeout_us)
	if (!pci_priv)
		return -ENODEV;

	if (pci_priv->device_id != QCA6390_DEVICE_ID &&
	    pci_priv->device_id != QCA6490_DEVICE_ID)
	switch (pci_priv->device_id) {
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
	case WCN7850_DEVICE_ID:
		break;
	default:
		return 0;
	}

	mhi_ctrl = pci_priv->mhi_ctrl;
	if (!mhi_ctrl)
@@ -3313,9 +3324,14 @@ int cnss_pci_force_wake_request(struct device *dev)
	if (!pci_priv)
		return -ENODEV;

	if (pci_priv->device_id != QCA6390_DEVICE_ID &&
	    pci_priv->device_id != QCA6490_DEVICE_ID)
	switch (pci_priv->device_id) {
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
	case WCN7850_DEVICE_ID:
		break;
	default:
		return 0;
	}

	mhi_ctrl = pci_priv->mhi_ctrl;
	if (!mhi_ctrl)
@@ -3343,9 +3359,14 @@ int cnss_pci_is_device_awake(struct device *dev)
	if (!pci_priv)
		return -ENODEV;

	if (pci_priv->device_id != QCA6390_DEVICE_ID &&
	    pci_priv->device_id != QCA6490_DEVICE_ID)
		return true;
	switch (pci_priv->device_id) {
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
	case WCN7850_DEVICE_ID:
		break;
	default:
		return 0;
	}

	mhi_ctrl = pci_priv->mhi_ctrl;
	if (!mhi_ctrl)
@@ -3365,9 +3386,14 @@ int cnss_pci_force_wake_release(struct device *dev)
	if (!pci_priv)
		return -ENODEV;

	if (pci_priv->device_id != QCA6390_DEVICE_ID &&
	    pci_priv->device_id != QCA6490_DEVICE_ID)
	switch (pci_priv->device_id) {
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
	case WCN7850_DEVICE_ID:
		break;
	default:
		return 0;
	}

	mhi_ctrl = pci_priv->mhi_ctrl;
	if (!mhi_ctrl)
@@ -4579,6 +4605,10 @@ void cnss_pci_add_fw_prefix_name(struct cnss_pci_data *pci_priv,
		scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN,
			  QCA6490_PATH_PREFIX "%s", name);
		break;
	case WCN7850_DEVICE_ID:
		scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN,
			  WCN7850_PATH_PREFIX "%s", name);
		break;
	default:
		scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, "%s", name);
		break;
@@ -5041,6 +5071,7 @@ static int cnss_pci_probe(struct pci_dev *pci_dev,
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
	case WCN7850_DEVICE_ID:
		cnss_pci_set_wlaon_pwr_ctrl(pci_priv, false, false, false);
		timer_setup(&pci_priv->dev_rddm_timer,
			    cnss_dev_rddm_timeout_hdlr, 0);
@@ -5101,6 +5132,7 @@ static void cnss_pci_remove(struct pci_dev *pci_dev)
	case QCA6290_DEVICE_ID:
	case QCA6390_DEVICE_ID:
	case QCA6490_DEVICE_ID:
	case WCN7850_DEVICE_ID:
		complete_all(&pci_priv->wake_event);
		del_timer(&pci_priv->dev_rddm_timer);
		break;
@@ -5128,6 +5160,7 @@ static const struct pci_device_id cnss_pci_id_table[] = {
	{ 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 },
	{ WCN7850_VENDOR_ID, WCN7850_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID },
	{ 0 }
};
MODULE_DEVICE_TABLE(pci, cnss_pci_id_table);