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

Commit 46aaed38 authored by Rohit kumar's avatar Rohit kumar
Browse files

Revert "ASoC: wsa881x: Avoid query temp during suspend"



This reverts 'commit 43fdbffa ("ASoC: wsa881x: Avoid query temp
during suspend")'.
This commit was added to fix suspend issue caused by temperature
query by thermal module. However, it causes speaker protection
initial calibration to fail.

Revert this patch to fix speaker protection calibration failure.

CRs-Fixed: 1050951
Change-Id: Ic92f3cada1ae04ff7fc66d1aab5393c598af901f
Signed-off-by: default avatarRohit kumar <rohitkr@codeaurora.org>
parent 5dceccdb
Loading
Loading
Loading
Loading
+0 −41
Original line number Diff line number Diff line
@@ -12,7 +12,6 @@

#include <linux/bitops.h>
#include <linux/kernel.h>
#include <linux/suspend.h>
#include <linux/errno.h>
#include <linux/delay.h>
#include <linux/thermal.h>
@@ -24,7 +23,6 @@
#define LOW_TEMP_THRESHOLD 5
#define HIGH_TEMP_THRESHOLD 45
#define TEMP_INVALID	0xFFFF
#define DEFAULT_TEMP 28

/*
 * wsa881x_get_temp - get wsa temperature
@@ -62,17 +60,6 @@ int wsa881x_get_temp(struct thermal_zone_device *thermal,
		pr_err("%s: pdata is NULL\n", __func__);
		return -EINVAL;
	}
	if (atomic_read(&pdata->is_suspend_spk)) {
		/*
		 * get_temp query happens as part of POST_PM_SUSPEND
		 * from thermal core. To avoid calls to slimbus
		 * as part of this thermal query, return default temp
		 * and reset the suspend flag.
		 */
		atomic_set(&pdata->is_suspend_spk, 0);
		*temp = DEFAULT_TEMP;
		return 0;
	}
	if (pdata->wsa_temp_reg_read) {
		ret = pdata->wsa_temp_reg_read(codec, &reg);
		if (ret) {
@@ -127,23 +114,6 @@ static struct thermal_zone_device_ops wsa881x_thermal_ops = {
	.get_temp = wsa881x_get_temp,
};


static int wsa881x_pm_notify(struct notifier_block *nb,
				unsigned long mode, void *_unused)
{
	struct wsa881x_tz_priv *pdata =
			container_of(nb, struct wsa881x_tz_priv, pm_nb);

	switch (mode) {
	case PM_SUSPEND_PREPARE:
		atomic_set(&pdata->is_suspend_spk, 1);
		break;
	default:
		break;
	}
	return 0;
}

int wsa881x_init_thermal(struct wsa881x_tz_priv *tz_pdata)
{
	struct thermal_zone_device *tz_dev;
@@ -161,23 +131,12 @@ int wsa881x_init_thermal(struct wsa881x_tz_priv *tz_pdata)
		return -EINVAL;
	}
	tz_pdata->tz_dev = tz_dev;
	tz_pdata->pm_nb.notifier_call = wsa881x_pm_notify;
	register_pm_notifier(&tz_pdata->pm_nb);
	atomic_set(&tz_pdata->is_suspend_spk, 0);

	return 0;
}
EXPORT_SYMBOL(wsa881x_init_thermal);

void wsa881x_deinit_thermal(struct thermal_zone_device *tz_dev)
{
	struct wsa881x_tz_priv *pdata;

	if (tz_dev && tz_dev->devdata) {
		pdata = tz_dev->devdata;
		if (pdata)
			unregister_pm_notifier(&pdata->pm_nb);
	}
	if (tz_dev)
		thermal_zone_device_unregister(tz_dev);
}
+0 −2
Original line number Diff line number Diff line
@@ -31,8 +31,6 @@ struct wsa881x_tz_priv {
	struct wsa_temp_register *wsa_temp_reg;
	char name[80];
	wsa_temp_register_read wsa_temp_reg_read;
	struct notifier_block pm_nb;
	atomic_t is_suspend_spk;
};

int wsa881x_get_temp(struct thermal_zone_device *tz_dev, unsigned long *temp);