summaryrefslogtreecommitdiffstats
path: root/drivers/thermal/da9062-thermal.c
diff options
context:
space:
mode:
authorGeert Uytterhoeven <geert+renesas@glider.be>2018-10-12 09:20:17 +0200
committerEduardo Valentin <edubezval@gmail.com>2018-10-25 10:44:55 -0700
commit760eea43f8c6d48684f1f34b8a02fddc1456e849 (patch)
tree0b859caa62cb34d0e5bbc3de5130522bbafbca6e /drivers/thermal/da9062-thermal.c
parent697ee786f15d7b65c7f3045d45fe3a05d28e0911 (diff)
downloadlinux-760eea43f8c6d48684f1f34b8a02fddc1456e849.tar.gz
linux-760eea43f8c6d48684f1f34b8a02fddc1456e849.tar.bz2
linux-760eea43f8c6d48684f1f34b8a02fddc1456e849.zip
thermal: da9062/61: Prevent hardware access during system suspend
The workqueue used for monitoring the hardware may run while the device is already suspended. Fix this by using the freezable system workqueue instead, cfr. commit 51e20d0e3a60cf46 ("thermal: Prevent polling from happening during system suspend"). Fixes: 608567aac3206ae8 ("thermal: da9062/61: Thermal junction temperature monitoring driver") Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Acked-by: Steve Twiss <stwiss.opensource@diasemi.com> Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
Diffstat (limited to 'drivers/thermal/da9062-thermal.c')
-rw-r--r--drivers/thermal/da9062-thermal.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/thermal/da9062-thermal.c b/drivers/thermal/da9062-thermal.c
index dd8dd947b7f0..01b0cb994457 100644
--- a/drivers/thermal/da9062-thermal.c
+++ b/drivers/thermal/da9062-thermal.c
@@ -106,7 +106,7 @@ static void da9062_thermal_poll_on(struct work_struct *work)
THERMAL_EVENT_UNSPECIFIED);
delay = msecs_to_jiffies(thermal->zone->passive_delay);
- schedule_delayed_work(&thermal->work, delay);
+ queue_delayed_work(system_freezable_wq, &thermal->work, delay);
return;
}
@@ -125,7 +125,7 @@ static irqreturn_t da9062_thermal_irq_handler(int irq, void *data)
struct da9062_thermal *thermal = data;
disable_irq_nosync(thermal->irq);
- schedule_delayed_work(&thermal->work, 0);
+ queue_delayed_work(system_freezable_wq, &thermal->work, 0);
return IRQ_HANDLED;
}