Loading drivers/net/wireless/cnss2/pci.c +24 −20 Original line number Diff line number Diff line Loading @@ -2100,6 +2100,9 @@ static int cnss_qca6290_powerup(struct cnss_pci_data *pci_priv) cnss_pci_deinit_mhi(pci_priv); } /* Clear QMI send usage count during every power up */ pci_priv->qmi_send_usage_count = 0; retry: ret = cnss_power_on_device(plat_priv); if (ret) { Loading Loading @@ -3201,11 +3204,13 @@ int cnss_auto_suspend(struct device *dev) return -ENODEV; mutex_lock(&pci_priv->bus_lock); if (!pci_priv->qmi_send_usage_count) { ret = cnss_pci_suspend_bus(pci_priv); if (ret) { mutex_unlock(&pci_priv->bus_lock); return ret; } } cnss_pci_set_auto_suspended(pci_priv, 1); mutex_unlock(&pci_priv->bus_lock); Loading Loading @@ -3378,15 +3383,14 @@ int cnss_pci_qmi_send_get(struct cnss_pci_data *pci_priv) return -ENODEV; mutex_lock(&pci_priv->bus_lock); if (!cnss_pci_get_auto_suspended(pci_priv)) goto out; cnss_pr_vdbg("Starting to handle get info prepare\n"); if (cnss_pci_get_auto_suspended(pci_priv) && !pci_priv->qmi_send_usage_count) ret = cnss_pci_resume_bus(pci_priv); out: pci_priv->qmi_send_usage_count++; cnss_pr_vdbg("Increased QMI send usage count to %d\n", pci_priv->qmi_send_usage_count); mutex_unlock(&pci_priv->bus_lock); return ret; } Loading @@ -3398,15 +3402,15 @@ int cnss_pci_qmi_send_put(struct cnss_pci_data *pci_priv) return -ENODEV; mutex_lock(&pci_priv->bus_lock); if (!cnss_pci_get_auto_suspended(pci_priv)) goto out; cnss_pr_vdbg("Starting to handle get info done\n"); if (pci_priv->qmi_send_usage_count) pci_priv->qmi_send_usage_count--; cnss_pr_vdbg("Decreased QMI send usage count to %d\n", pci_priv->qmi_send_usage_count); if (cnss_pci_get_auto_suspended(pci_priv) && !pci_priv->qmi_send_usage_count) ret = cnss_pci_suspend_bus(pci_priv); out: mutex_unlock(&pci_priv->bus_lock); return ret; } Loading drivers/net/wireless/cnss2/pci.h +1 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,7 @@ struct cnss_pci_data { atomic_t auto_suspended; atomic_t drv_connected; u8 drv_connected_last; u32 qmi_send_usage_count; u16 def_link_speed; u16 def_link_width; struct completion wake_event; Loading Loading
drivers/net/wireless/cnss2/pci.c +24 −20 Original line number Diff line number Diff line Loading @@ -2100,6 +2100,9 @@ static int cnss_qca6290_powerup(struct cnss_pci_data *pci_priv) cnss_pci_deinit_mhi(pci_priv); } /* Clear QMI send usage count during every power up */ pci_priv->qmi_send_usage_count = 0; retry: ret = cnss_power_on_device(plat_priv); if (ret) { Loading Loading @@ -3201,11 +3204,13 @@ int cnss_auto_suspend(struct device *dev) return -ENODEV; mutex_lock(&pci_priv->bus_lock); if (!pci_priv->qmi_send_usage_count) { ret = cnss_pci_suspend_bus(pci_priv); if (ret) { mutex_unlock(&pci_priv->bus_lock); return ret; } } cnss_pci_set_auto_suspended(pci_priv, 1); mutex_unlock(&pci_priv->bus_lock); Loading Loading @@ -3378,15 +3383,14 @@ int cnss_pci_qmi_send_get(struct cnss_pci_data *pci_priv) return -ENODEV; mutex_lock(&pci_priv->bus_lock); if (!cnss_pci_get_auto_suspended(pci_priv)) goto out; cnss_pr_vdbg("Starting to handle get info prepare\n"); if (cnss_pci_get_auto_suspended(pci_priv) && !pci_priv->qmi_send_usage_count) ret = cnss_pci_resume_bus(pci_priv); out: pci_priv->qmi_send_usage_count++; cnss_pr_vdbg("Increased QMI send usage count to %d\n", pci_priv->qmi_send_usage_count); mutex_unlock(&pci_priv->bus_lock); return ret; } Loading @@ -3398,15 +3402,15 @@ int cnss_pci_qmi_send_put(struct cnss_pci_data *pci_priv) return -ENODEV; mutex_lock(&pci_priv->bus_lock); if (!cnss_pci_get_auto_suspended(pci_priv)) goto out; cnss_pr_vdbg("Starting to handle get info done\n"); if (pci_priv->qmi_send_usage_count) pci_priv->qmi_send_usage_count--; cnss_pr_vdbg("Decreased QMI send usage count to %d\n", pci_priv->qmi_send_usage_count); if (cnss_pci_get_auto_suspended(pci_priv) && !pci_priv->qmi_send_usage_count) ret = cnss_pci_suspend_bus(pci_priv); out: mutex_unlock(&pci_priv->bus_lock); return ret; } Loading
drivers/net/wireless/cnss2/pci.h +1 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,7 @@ struct cnss_pci_data { atomic_t auto_suspended; atomic_t drv_connected; u8 drv_connected_last; u32 qmi_send_usage_count; u16 def_link_speed; u16 def_link_width; struct completion wake_event; Loading