BACKPORT: thermal/drivers/hisi: Remove mutex_lock in the code
authorDaniel Lezcano <daniel.lezcano@linaro.org>
Thu, 19 Oct 2017 17:05:55 +0000 (19:05 +0200)
committerKevin Wangtao <kevin.wangtao@hisilicon.com>
Fri, 26 Jan 2018 02:00:46 +0000 (10:00 +0800)
The mutex is used to protect against writes in the configuration register.

That happens at probe time, with no possible race yet.

Then when the module is unloaded and at suspend/resume.

When the module is unloaded, it is an userspace operation, thus via a process.
Suspending the system goes through the freezer to suspend all the tasks
synchronously before continuing. So it is not possible to hit the suspend ops
in this driver while we are unloading it.

The resume is the same situation than the probe.

In other words, even if there are several places where we write the
configuration register, there is no situation where we can write it at the same
time, so far as I can judge

Change-Id: Ie71c809f485240dbf463b142fe0f3ab1d2fae2ae
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Reviewed-by: Leo Yan <leo.yan@linaro.org>
Tested-by: Leo Yan <leo.yan@linaro.org>
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
(cherry picked from commit cc1ab38d2b2ad3290426c2234cf83e7a323554c7)
Signed-off-by: Kevin Wangtao <kevin.wangtao@hisilicon.com>
drivers/thermal/hisi_thermal.c

index e09b52313cebc368ce451162affb270136949d0a..90e91fedc76dfff78b4317567e30da9de90123e1 100644 (file)
@@ -53,7 +53,6 @@ struct hisi_thermal_sensor {
 };
 
 struct hisi_thermal_data {
-       struct mutex thermal_lock;    /* protects register data */
        struct platform_device *pdev;
        struct clk *clk;
        struct hisi_thermal_sensor sensor;
@@ -200,14 +199,10 @@ static inline void hisi_thermal_hdak_set(void __iomem *addr, int value)
 
 static void hisi_thermal_disable_sensor(struct hisi_thermal_data *data)
 {
-       mutex_lock(&data->thermal_lock);
-
        /* disable sensor module */
        hisi_thermal_enable(data->regs, 0);
        hisi_thermal_alarm_enable(data->regs, 0);
        hisi_thermal_reset_enable(data->regs, 0);
-
-       mutex_unlock(&data->thermal_lock);
 }
 
 static int hisi_thermal_get_temp(void *__data, int *temp)
@@ -344,7 +339,6 @@ static int hisi_thermal_probe(struct platform_device *pdev)
        if (!data)
                return -ENOMEM;
 
-       mutex_init(&data->thermal_lock);
        data->pdev = pdev;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);