Explorar o código

cnss2: Remove function cnss_pm_notify

To protect firmware download not be processed when system goes into
suspend, before we add semaphore cnss_pm_sem in cnss driver.
Function cnss_pm_notify, PM_POST_SUSPEND may be got before
PM_SUSPEND_PREPARE. Once it happens, the count of cnss_pm_sem will
be abnormal.

And, ROME firmware download is in qcacld driver. Not in cnss driver.

So, remove function cnss_pm_notify, and the export symbol cnss_lock_pm_sem
and cnss_release_pm_sem. Move the protection to qcacld driver. In qcacld
driver, use wakeup source to protect ROME firmware download.

Change-Id: I7768fdbeb1fa8cd6ef3b260eb0aafb231aeed324
CRs-Fixed: 3294347
Wade Song %!s(int64=2) %!d(string=hai) anos
pai
achega
99580edb00
Modificáronse 1 ficheiros con 0 adicións e 38 borrados
  1. 0 38
      cnss2/main.c

+ 0 - 38
cnss2/main.c

@@ -92,8 +92,6 @@ static struct cnss_plat_data *plat_env;
 
 static bool cnss_allow_driver_loading;
 
-static DECLARE_RWSEM(cnss_pm_sem);
-
 static struct cnss_fw_files FW_FILES_QCA6174_FW_3_0 = {
 	"qwlan30.bin", "bdwlan30.bin", "otp30.bin", "utf30.bin",
 	"utfbd30.bin", "epping30.bin", "evicted30.bin"
@@ -251,25 +249,6 @@ int cnss_get_feature_list(struct cnss_plat_data *plat_priv,
 	return 0;
 }
 
-static int cnss_pm_notify(struct notifier_block *b,
-			  unsigned long event, void *p)
-{
-	switch (event) {
-	case PM_SUSPEND_PREPARE:
-		down_write(&cnss_pm_sem);
-		break;
-	case PM_POST_SUSPEND:
-		up_write(&cnss_pm_sem);
-		break;
-	}
-
-	return NOTIFY_DONE;
-}
-
-static struct notifier_block cnss_pm_notifier = {
-	.notifier_call = cnss_pm_notify,
-};
-
 void cnss_pm_stay_awake(struct cnss_plat_data *plat_priv)
 {
 	if (atomic_inc_return(&plat_priv->pm_count) != 1)
@@ -296,18 +275,6 @@ void cnss_pm_relax(struct cnss_plat_data *plat_priv)
 	pm_relax(&plat_priv->plat_dev->dev);
 }
 
-void cnss_lock_pm_sem(struct device *dev)
-{
-	down_read(&cnss_pm_sem);
-}
-EXPORT_SYMBOL(cnss_lock_pm_sem);
-
-void cnss_release_pm_sem(struct device *dev)
-{
-	up_read(&cnss_pm_sem);
-}
-EXPORT_SYMBOL(cnss_release_pm_sem);
-
 int cnss_get_fw_files_for_target(struct device *dev,
 				 struct cnss_fw_files *pfw_files,
 				 u32 target_type, u32 target_version)
@@ -3831,10 +3798,6 @@ static int cnss_misc_init(struct cnss_plat_data *plat_priv)
 	timer_setup(&plat_priv->fw_boot_timer,
 		    cnss_bus_fw_boot_timeout_hdlr, 0);
 
-	ret = register_pm_notifier(&cnss_pm_notifier);
-	if (ret)
-		cnss_pr_err("Failed to register PM notifier, err = %d\n", ret);
-
 	plat_priv->reboot_nb.notifier_call = cnss_reboot_notifier;
 	ret = register_reboot_notifier(&plat_priv->reboot_nb);
 	if (ret)
@@ -3885,7 +3848,6 @@ static void cnss_misc_deinit(struct cnss_plat_data *plat_priv)
 	complete_all(&plat_priv->daemon_connected);
 	device_init_wakeup(&plat_priv->plat_dev->dev, false);
 	unregister_reboot_notifier(&plat_priv->reboot_nb);
-	unregister_pm_notifier(&cnss_pm_notifier);
 	del_timer(&plat_priv->fw_boot_timer);
 	wakeup_source_unregister(plat_priv->recovery_ws);
 	cnss_deinit_sol_gpio(plat_priv);