summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-10-03 19:21:11 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2018-10-03 19:21:10 -0700
commit6202b64fd2ed5f13c32ac2f54fb6824f1f2f95a5 (patch)
treef1d4e4db68bd199f814daa3fca09274e8e9a9176
parente406a6cc5e123d146a95a4b6d5de91450385494a (diff)
parent5d33cdfa531640c8563275b9268e7cf3d35966a4 (diff)
Merge "cnss2: Add support for genoa pcie"
-rw-r--r--drivers/net/wireless/cnss2/bus.c1
-rw-r--r--drivers/net/wireless/cnss2/bus.h2
-rw-r--r--drivers/net/wireless/cnss2/main.c13
-rw-r--r--drivers/net/wireless/cnss2/pci.c5
4 files changed, 20 insertions, 1 deletions
diff --git a/drivers/net/wireless/cnss2/bus.c b/drivers/net/wireless/cnss2/bus.c
index 0d46b4f6b6a4..c0810df81bfc 100644
--- a/drivers/net/wireless/cnss2/bus.c
+++ b/drivers/net/wireless/cnss2/bus.c
@@ -34,6 +34,7 @@ enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id)
case QCA6174_DEVICE_ID:
case QCA6290_EMULATION_DEVICE_ID:
case QCA6290_DEVICE_ID:
+ case QCN7605_DEVICE_ID:
return CNSS_BUS_PCI;
default:
cnss_pr_err("Unknown device_id: 0x%lx\n", device_id);
diff --git a/drivers/net/wireless/cnss2/bus.h b/drivers/net/wireless/cnss2/bus.h
index 4e3d1500bd76..bd32a94e5146 100644
--- a/drivers/net/wireless/cnss2/bus.h
+++ b/drivers/net/wireless/cnss2/bus.h
@@ -24,6 +24,8 @@
#define QCA6290_DEVICE_ID 0x1100
#define QCA6290_EMULATION_VENDOR_ID 0x168C
#define QCA6290_EMULATION_DEVICE_ID 0xABCD
+#define QCN7605_VENDOR_ID 0x17CB
+#define QCN7605_DEVICE_ID 0x1102
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);
diff --git a/drivers/net/wireless/cnss2/main.c b/drivers/net/wireless/cnss2/main.c
index acf65e4904d6..8aa9eabdc73f 100644
--- a/drivers/net/wireless/cnss2/main.c
+++ b/drivers/net/wireless/cnss2/main.c
@@ -461,6 +461,8 @@ static int cnss_fw_mem_ready_hdlr(struct cnss_plat_data *plat_priv)
if (ret)
goto out;
+ if (plat_priv->device_id == QCN7605_DEVICE_ID)
+ goto skip_m3_dnld;
ret = cnss_bus_load_m3(plat_priv);
if (ret)
goto out;
@@ -468,7 +470,7 @@ static int cnss_fw_mem_ready_hdlr(struct cnss_plat_data *plat_priv)
ret = cnss_wlfw_m3_dnld_send_sync(plat_priv);
if (ret)
goto out;
-
+skip_m3_dnld:
return 0;
out:
return ret;
@@ -1103,7 +1105,10 @@ static int cnss_cold_boot_cal_done_hdlr(struct cnss_plat_data *plat_priv)
{
plat_priv->cal_done = true;
cnss_wlfw_wlan_mode_send_sync(plat_priv, QMI_WLFW_OFF_V01);
+ if (plat_priv->device_id == QCN7605_DEVICE_ID)
+ goto skip_shutdown;
cnss_bus_dev_shutdown(plat_priv);
+skip_shutdown:
clear_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state);
return 0;
@@ -1234,6 +1239,9 @@ int cnss_register_subsys(struct cnss_plat_data *plat_priv)
case QCA6290_DEVICE_ID:
subsys_info->subsys_desc.name = "QCA6290";
break;
+ case QCN7605_DEVICE_ID:
+ subsys_info->subsys_desc.name = "QCN7605";
+ break;
default:
cnss_pr_err("Unknown device ID: 0x%lx\n", plat_priv->device_id);
ret = -ENODEV;
@@ -1449,6 +1457,7 @@ int cnss_register_ramdump(struct cnss_plat_data *plat_priv)
break;
case QCA6290_EMULATION_DEVICE_ID:
case QCA6290_DEVICE_ID:
+ case QCN7605_DEVICE_ID:
ret = cnss_register_ramdump_v2(plat_priv);
break;
default:
@@ -1537,6 +1546,7 @@ static ssize_t cnss_fs_ready_store(struct device *dev,
switch (plat_priv->device_id) {
case QCA6290_EMULATION_DEVICE_ID:
case QCA6290_DEVICE_ID:
+ case QCN7605_DEVICE_ID:
break;
default:
cnss_pr_err("Not supported for device ID 0x%lx\n",
@@ -1599,6 +1609,7 @@ static void cnss_event_work_deinit(struct cnss_plat_data *plat_priv)
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 = "qcn7605", .driver_data = QCN7605_DEVICE_ID, },
};
static const struct of_device_id cnss_of_match_table[] = {
diff --git a/drivers/net/wireless/cnss2/pci.c b/drivers/net/wireless/cnss2/pci.c
index 8f9bc213cac3..1d4b5b9ea9c9 100644
--- a/drivers/net/wireless/cnss2/pci.c
+++ b/drivers/net/wireless/cnss2/pci.c
@@ -619,6 +619,7 @@ int cnss_pci_dev_powerup(struct cnss_pci_data *pci_priv)
break;
case QCA6290_EMULATION_DEVICE_ID:
case QCA6290_DEVICE_ID:
+ case QCN7605_DEVICE_ID:
ret = cnss_qca6290_powerup(pci_priv);
break;
default:
@@ -645,6 +646,7 @@ int cnss_pci_dev_shutdown(struct cnss_pci_data *pci_priv)
break;
case QCA6290_EMULATION_DEVICE_ID:
case QCA6290_DEVICE_ID:
+ case QCN7605_DEVICE_ID:
ret = cnss_qca6290_shutdown(pci_priv);
break;
default:
@@ -2162,6 +2164,7 @@ static int cnss_pci_probe(struct pci_dev *pci_dev,
switch (pci_dev->device) {
case QCA6290_EMULATION_DEVICE_ID:
case QCA6290_DEVICE_ID:
+ case QCN7605_DEVICE_ID:
if (!mhi_is_device_ready(&plat_priv->plat_dev->dev,
MHI_NODE_NAME)) {
cnss_pr_err("MHI driver is not ready, defer PCI probe!\n");
@@ -2249,6 +2252,7 @@ static int cnss_pci_probe(struct pci_dev *pci_dev,
break;
case QCA6290_EMULATION_DEVICE_ID:
case QCA6290_DEVICE_ID:
+ case QCN7605_DEVICE_ID:
ret = cnss_pci_enable_msi(pci_priv);
if (ret)
goto disable_bus;
@@ -2324,6 +2328,7 @@ static const struct pci_device_id cnss_pci_id_table[] = {
{ QCA6290_EMULATION_VENDOR_ID, QCA6290_EMULATION_DEVICE_ID,
PCI_ANY_ID, PCI_ANY_ID },
{ QCA6290_VENDOR_ID, QCA6290_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID },
+ {QCN7605_VENDOR_ID, QCN7605_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID},
{ 0 }
};
MODULE_DEVICE_TABLE(pci, cnss_pci_id_table);