Merge "cnss2: Add support for genoa pcie"
This commit is contained in:
commit
6202b64fd2
4 changed files with 20 additions and 1 deletions
|
@ -34,6 +34,7 @@ enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id)
|
||||||
case QCA6174_DEVICE_ID:
|
case QCA6174_DEVICE_ID:
|
||||||
case QCA6290_EMULATION_DEVICE_ID:
|
case QCA6290_EMULATION_DEVICE_ID:
|
||||||
case QCA6290_DEVICE_ID:
|
case QCA6290_DEVICE_ID:
|
||||||
|
case QCN7605_DEVICE_ID:
|
||||||
return CNSS_BUS_PCI;
|
return CNSS_BUS_PCI;
|
||||||
default:
|
default:
|
||||||
cnss_pr_err("Unknown device_id: 0x%lx\n", device_id);
|
cnss_pr_err("Unknown device_id: 0x%lx\n", device_id);
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
#define QCA6290_DEVICE_ID 0x1100
|
#define QCA6290_DEVICE_ID 0x1100
|
||||||
#define QCA6290_EMULATION_VENDOR_ID 0x168C
|
#define QCA6290_EMULATION_VENDOR_ID 0x168C
|
||||||
#define QCA6290_EMULATION_DEVICE_ID 0xABCD
|
#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_dev_bus_type(struct device *dev);
|
||||||
enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id);
|
enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id);
|
||||||
|
|
|
@ -461,6 +461,8 @@ static int cnss_fw_mem_ready_hdlr(struct cnss_plat_data *plat_priv)
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
if (plat_priv->device_id == QCN7605_DEVICE_ID)
|
||||||
|
goto skip_m3_dnld;
|
||||||
ret = cnss_bus_load_m3(plat_priv);
|
ret = cnss_bus_load_m3(plat_priv);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
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);
|
ret = cnss_wlfw_m3_dnld_send_sync(plat_priv);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
goto out;
|
||||||
|
skip_m3_dnld:
|
||||||
return 0;
|
return 0;
|
||||||
out:
|
out:
|
||||||
return ret;
|
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;
|
plat_priv->cal_done = true;
|
||||||
cnss_wlfw_wlan_mode_send_sync(plat_priv, QMI_WLFW_OFF_V01);
|
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);
|
cnss_bus_dev_shutdown(plat_priv);
|
||||||
|
skip_shutdown:
|
||||||
clear_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state);
|
clear_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1234,6 +1239,9 @@ int cnss_register_subsys(struct cnss_plat_data *plat_priv)
|
||||||
case QCA6290_DEVICE_ID:
|
case QCA6290_DEVICE_ID:
|
||||||
subsys_info->subsys_desc.name = "QCA6290";
|
subsys_info->subsys_desc.name = "QCA6290";
|
||||||
break;
|
break;
|
||||||
|
case QCN7605_DEVICE_ID:
|
||||||
|
subsys_info->subsys_desc.name = "QCN7605";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
cnss_pr_err("Unknown device ID: 0x%lx\n", plat_priv->device_id);
|
cnss_pr_err("Unknown device ID: 0x%lx\n", plat_priv->device_id);
|
||||||
ret = -ENODEV;
|
ret = -ENODEV;
|
||||||
|
@ -1449,6 +1457,7 @@ int cnss_register_ramdump(struct cnss_plat_data *plat_priv)
|
||||||
break;
|
break;
|
||||||
case QCA6290_EMULATION_DEVICE_ID:
|
case QCA6290_EMULATION_DEVICE_ID:
|
||||||
case QCA6290_DEVICE_ID:
|
case QCA6290_DEVICE_ID:
|
||||||
|
case QCN7605_DEVICE_ID:
|
||||||
ret = cnss_register_ramdump_v2(plat_priv);
|
ret = cnss_register_ramdump_v2(plat_priv);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1537,6 +1546,7 @@ static ssize_t cnss_fs_ready_store(struct device *dev,
|
||||||
switch (plat_priv->device_id) {
|
switch (plat_priv->device_id) {
|
||||||
case QCA6290_EMULATION_DEVICE_ID:
|
case QCA6290_EMULATION_DEVICE_ID:
|
||||||
case QCA6290_DEVICE_ID:
|
case QCA6290_DEVICE_ID:
|
||||||
|
case QCN7605_DEVICE_ID:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
cnss_pr_err("Not supported for device ID 0x%lx\n",
|
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[] = {
|
static const struct platform_device_id cnss_platform_id_table[] = {
|
||||||
{ .name = "qca6174", .driver_data = QCA6174_DEVICE_ID, },
|
{ .name = "qca6174", .driver_data = QCA6174_DEVICE_ID, },
|
||||||
{ .name = "qca6290", .driver_data = QCA6290_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[] = {
|
static const struct of_device_id cnss_of_match_table[] = {
|
||||||
|
|
|
@ -619,6 +619,7 @@ int cnss_pci_dev_powerup(struct cnss_pci_data *pci_priv)
|
||||||
break;
|
break;
|
||||||
case QCA6290_EMULATION_DEVICE_ID:
|
case QCA6290_EMULATION_DEVICE_ID:
|
||||||
case QCA6290_DEVICE_ID:
|
case QCA6290_DEVICE_ID:
|
||||||
|
case QCN7605_DEVICE_ID:
|
||||||
ret = cnss_qca6290_powerup(pci_priv);
|
ret = cnss_qca6290_powerup(pci_priv);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -645,6 +646,7 @@ int cnss_pci_dev_shutdown(struct cnss_pci_data *pci_priv)
|
||||||
break;
|
break;
|
||||||
case QCA6290_EMULATION_DEVICE_ID:
|
case QCA6290_EMULATION_DEVICE_ID:
|
||||||
case QCA6290_DEVICE_ID:
|
case QCA6290_DEVICE_ID:
|
||||||
|
case QCN7605_DEVICE_ID:
|
||||||
ret = cnss_qca6290_shutdown(pci_priv);
|
ret = cnss_qca6290_shutdown(pci_priv);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -2162,6 +2164,7 @@ static int cnss_pci_probe(struct pci_dev *pci_dev,
|
||||||
switch (pci_dev->device) {
|
switch (pci_dev->device) {
|
||||||
case QCA6290_EMULATION_DEVICE_ID:
|
case QCA6290_EMULATION_DEVICE_ID:
|
||||||
case QCA6290_DEVICE_ID:
|
case QCA6290_DEVICE_ID:
|
||||||
|
case QCN7605_DEVICE_ID:
|
||||||
if (!mhi_is_device_ready(&plat_priv->plat_dev->dev,
|
if (!mhi_is_device_ready(&plat_priv->plat_dev->dev,
|
||||||
MHI_NODE_NAME)) {
|
MHI_NODE_NAME)) {
|
||||||
cnss_pr_err("MHI driver is not ready, defer PCI probe!\n");
|
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;
|
break;
|
||||||
case QCA6290_EMULATION_DEVICE_ID:
|
case QCA6290_EMULATION_DEVICE_ID:
|
||||||
case QCA6290_DEVICE_ID:
|
case QCA6290_DEVICE_ID:
|
||||||
|
case QCN7605_DEVICE_ID:
|
||||||
ret = cnss_pci_enable_msi(pci_priv);
|
ret = cnss_pci_enable_msi(pci_priv);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto disable_bus;
|
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,
|
{ QCA6290_EMULATION_VENDOR_ID, QCA6290_EMULATION_DEVICE_ID,
|
||||||
PCI_ANY_ID, PCI_ANY_ID },
|
PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{ QCA6290_VENDOR_ID, QCA6290_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 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(pci, cnss_pci_id_table);
|
MODULE_DEVICE_TABLE(pci, cnss_pci_id_table);
|
||||||
|
|
Loading…
Add table
Reference in a new issue