MLK-20104 driver: cpufreq: remove unnecessary mutex & rcu lock
authorBai Ping <ping.bai@nxp.com>
Fri, 26 Oct 2018 09:01:38 +0000 (17:01 +0800)
committerLeonard Crestez <leonard.crestez@nxp.com>
Wed, 17 Apr 2019 23:51:34 +0000 (02:51 +0300)
Remove the unnecessary mutex and rcu lock from i.MX7ULP
cpufreq driver.

Signed-off-by: Bai Ping <ping.bai@nxp.com>
Reviewed-by: Anson Huang <Anson.Huang@nxp.com>
[Arul: Removed only imx7 changes]
Signed-off-by: Arulpandiyan Vadivel <arulpandiyan_vadivel@mentor.com>
drivers/cpufreq/imx7ulp-cpufreq.c

index 5a8ab80..9bb3d90 100644 (file)
@@ -36,7 +36,6 @@ static struct regulator *arm_reg;
 static struct device *cpu_dev;
 static struct cpufreq_frequency_table *freq_table;
 static unsigned int transition_latency;
-static struct mutex set_cpufreq_lock;
 
 static int imx7ulp_set_target(struct cpufreq_policy *policy, unsigned int index)
 {
@@ -45,23 +44,18 @@ static int imx7ulp_set_target(struct cpufreq_policy *policy, unsigned int index)
        unsigned int old_freq, new_freq;
        int ret;
 
-       mutex_lock(&set_cpufreq_lock);
-
        new_freq = freq_table[index].frequency;
        freq_hz = new_freq * 1000;
        old_freq = clk_get_rate(arm_clk) / 1000;
 
-       rcu_read_lock();
        opp = dev_pm_opp_find_freq_ceil(cpu_dev, &freq_hz);
        if (IS_ERR(opp)) {
-               rcu_read_unlock();
                dev_err(cpu_dev, "failed to find OPP for %ld\n", freq_hz);
-               mutex_unlock(&set_cpufreq_lock);
                return PTR_ERR(opp);
        }
        volt = dev_pm_opp_get_voltage(opp);
+       dev_pm_opp_put(opp);
 
-       rcu_read_unlock();
        volt_old = regulator_get_voltage(arm_reg);
 
        dev_dbg(cpu_dev, "%u MHz, %ld mV --> %u MHz, %ld mV\n",
@@ -74,7 +68,6 @@ static int imx7ulp_set_target(struct cpufreq_policy *policy, unsigned int index)
                if (ret) {
                        dev_err(cpu_dev, "failed to scale vddarm up: %d\n",
                                ret);
-                       mutex_unlock(&set_cpufreq_lock);
                        return ret;
                }
        }
@@ -113,7 +106,6 @@ static int imx7ulp_set_target(struct cpufreq_policy *policy, unsigned int index)
                }
        }
 
-       mutex_unlock(&set_cpufreq_lock);
        return 0;
 }
 
@@ -205,7 +197,6 @@ static int imx7ulp_cpufreq_probe(struct platform_device *pdev)
        if (of_property_read_u32(np, "clock-latency", &transition_latency))
                transition_latency = CPUFREQ_ETERNAL;
 
-       mutex_init(&set_cpufreq_lock);
        ret = cpufreq_register_driver(&imx7ulp_cpufreq_driver);
        if (ret) {
                dev_err(cpu_dev, "failed to register driver\n");