mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 06:09:23 -04:00
cnss2: Add support for WLAN WCN7850 device
Add corresponding driver support for WCN7850 device. Change-Id: Ib02d93e9801bb628958dff4aeb105b90e5459e39 Signed-off-by: Yue Ma <yuem@codeaurora.org>
This commit is contained in:
parent
63c72bd4e9
commit
c8b5d4db39
3 changed files with 50 additions and 9 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue