MALI: midgard: RK: slowdown clk_gpu before poweroff cores
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / arm / midgard / backend / gpu / mali_kbase_devfreq.c
index ad05fe5bea8d225d10d7ed1476a79f4d32ce1943..8f9a67e57ceaa3b97d9b93797d86e869a49c480f 100644 (file)
@@ -54,7 +54,7 @@ kbase_devfreq_target(struct device *dev, unsigned long *target_freq, u32 flags)
        struct dev_pm_opp *opp;
        unsigned long freq = 0;
        unsigned long voltage;
-       int err;
+       int err = 0;
 
        freq = *target_freq;
 
@@ -86,7 +86,11 @@ kbase_devfreq_target(struct device *dev, unsigned long *target_freq, u32 flags)
        }
 #endif
 
-       err = clk_set_rate(kbdev->clock, freq);
+       mutex_lock(&kbdev->mutex_for_clk);
+       if (!kbdev->is_power_off)
+               err = clk_set_rate(kbdev->clock, freq);
+       kbdev->freq = freq;
+       mutex_unlock(&kbdev->mutex_for_clk);
        if (err) {
                dev_err(dev, "Failed to set clock %lu (target %lu)\n",
                                freq, *target_freq);