Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05c14580 authored by Yue Ma's avatar Yue Ma
Browse files

cnss2: Add cnss_misc_init/deinit for driver probe



Refactor code to add cnss_misc_init/deinit to put all miscellaneous
initializations and deinitializations functions together for driver
probe.

Change-Id: I97b8a2e7321abca99dc7800072d583691e1d25e4
Signed-off-by: default avatarYue Ma <yuem@codeaurora.org>
parent 8c58156a
Loading
Loading
Loading
Loading
+35 −17
Original line number Diff line number Diff line
@@ -1548,6 +1548,36 @@ static void cnss_event_work_deinit(struct cnss_plat_data *plat_priv)
	destroy_workqueue(plat_priv->event_wq);
}

static int cnss_misc_init(struct cnss_plat_data *plat_priv)
{
	int ret;

	setup_timer(&plat_priv->fw_boot_timer, cnss_bus_fw_boot_timeout_hdlr,
		    (unsigned long)plat_priv);

	register_pm_notifier(&cnss_pm_notifier);

	ret = device_init_wakeup(&plat_priv->plat_dev->dev, true);
	if (ret)
		cnss_pr_err("Failed to init platform device wakeup source, err = %d\n",
			    ret);

	init_completion(&plat_priv->power_up_complete);
	init_completion(&plat_priv->cal_complete);
	mutex_init(&plat_priv->dev_lock);

	return 0;
}

static void cnss_misc_deinit(struct cnss_plat_data *plat_priv)
{
	complete_all(&plat_priv->cal_complete);
	complete_all(&plat_priv->power_up_complete);
	device_init_wakeup(&plat_priv->plat_dev->dev, false);
	unregister_pm_notifier(&cnss_pm_notifier);
	del_timer(&plat_priv->fw_boot_timer);
}

static const struct platform_device_id cnss_platform_id_table[] = {
	{ .name = "qca6174", .driver_data = QCA6174_DEVICE_ID, },
	{ .name = "qca6290", .driver_data = QCA6290_DEVICE_ID, },
@@ -1641,24 +1671,16 @@ static int cnss_probe(struct platform_device *plat_dev)
	if (ret)
		goto deinit_qmi;

	setup_timer(&plat_priv->fw_boot_timer, cnss_bus_fw_boot_timeout_hdlr,
		    (unsigned long)plat_priv);

	register_pm_notifier(&cnss_pm_notifier);

	ret = device_init_wakeup(&plat_dev->dev, true);
	ret = cnss_misc_init(plat_priv);
	if (ret)
		cnss_pr_err("Failed to init platform device wakeup source, err = %d\n",
			    ret);

	init_completion(&plat_priv->power_up_complete);
	init_completion(&plat_priv->cal_complete);
	mutex_init(&plat_priv->dev_lock);
		goto destroy_debugfs;

	cnss_pr_info("Platform driver probed successfully.\n");

	return 0;

destroy_debugfs:
	cnss_debugfs_destroy(plat_priv);
deinit_qmi:
	cnss_qmi_deinit(plat_priv);
deinit_event_work:
@@ -1688,11 +1710,7 @@ static int cnss_remove(struct platform_device *plat_dev)
{
	struct cnss_plat_data *plat_priv = platform_get_drvdata(plat_dev);

	complete_all(&plat_priv->cal_complete);
	complete_all(&plat_priv->power_up_complete);
	device_init_wakeup(&plat_dev->dev, false);
	unregister_pm_notifier(&cnss_pm_notifier);
	del_timer(&plat_priv->fw_boot_timer);
	cnss_misc_deinit(plat_priv);
	cnss_debugfs_destroy(plat_priv);
	cnss_qmi_deinit(plat_priv);
	cnss_event_work_deinit(plat_priv);