OSDN Git Service

cnss2: Request runtime PM resume when shutdown happens
authorYue Ma <yuem@codeaurora.org>
Wed, 20 Sep 2017 21:58:34 +0000 (14:58 -0700)
committerGerrit - the friendly Code Review server <code-review@localhost>
Mon, 16 Oct 2017 23:32:05 +0000 (16:32 -0700)
Request runtime PM resume in platform driver as soon as shutdown
happens. This can make sure device is resumed while shutdown is
proceeding.

Change-Id: I0aa15b9713347288f4954bd767ec9243d22153ed
CRs-fixed: 2124999
Signed-off-by: Yue Ma <yuem@codeaurora.org>
drivers/net/wireless/cnss2/main.c
drivers/net/wireless/cnss2/pci.c
drivers/net/wireless/cnss2/pci.h

index 80e2c8d..6b966c5 100644 (file)
@@ -1043,6 +1043,8 @@ static int cnss_qca6174_shutdown(struct cnss_plat_data *plat_priv)
        if (!pci_priv)
                return -ENODEV;
 
+       cnss_pm_request_resume(pci_priv);
+
        cnss_driver_call_remove(plat_priv);
 
        cnss_request_bus_bandwidth(CNSS_BUS_WIDTH_NONE);
@@ -1141,6 +1143,8 @@ static int cnss_qca6290_shutdown(struct cnss_plat_data *plat_priv)
        if (!pci_priv)
                return -ENODEV;
 
+       cnss_pm_request_resume(pci_priv);
+
        cnss_driver_call_remove(plat_priv);
 
        cnss_request_bus_bandwidth(CNSS_BUS_WIDTH_NONE);
index 22fad92..e4c35c4 100644 (file)
@@ -668,6 +668,20 @@ out:
 }
 EXPORT_SYMBOL(cnss_auto_resume);
 
+int cnss_pm_request_resume(struct cnss_pci_data *pci_priv)
+{
+       struct pci_dev *pci_dev;
+
+       if (!pci_priv)
+               return -ENODEV;
+
+       pci_dev = pci_priv->pci_dev;
+       if (!pci_dev)
+               return -ENODEV;
+
+       return pm_request_resume(&pci_dev->dev);
+}
+
 int cnss_pci_alloc_fw_mem(struct cnss_pci_data *pci_priv)
 {
        struct cnss_plat_data *plat_priv = pci_priv->plat_priv;
index e26e331..89edc60 100644 (file)
@@ -138,5 +138,6 @@ int cnss_pci_start_mhi(struct cnss_pci_data *pci_priv);
 void cnss_pci_stop_mhi(struct cnss_pci_data *pci_priv);
 void cnss_pci_collect_dump_info(struct cnss_pci_data *pci_priv);
 void cnss_pci_clear_dump_info(struct cnss_pci_data *pci_priv);
+int cnss_pm_request_resume(struct cnss_pci_data *pci_priv);
 
 #endif /* _CNSS_PCI_H */