Revert "MALI: midgard: avoid GPU voltage domain keeping the initial voltage"
authorchenzhen <chenzhen@rock-chips.com>
Fri, 30 Dec 2016 11:56:48 +0000 (19:56 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Mon, 20 Feb 2017 06:26:43 +0000 (14:26 +0800)
This reverts commit 57984d531806892a8e14bb7c1b42b1c4c406ddf9.

Change-Id: If538c9bbeb5d3fc7302f9683cb85f8acdd309a09
Signed-off-by: chenzhen <chenzhen@rock-chips.com>
drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c

index fd3c1f58a7d409b35da10c8195802476d74376ff..8f9a67e57ceaa3b97d9b93797d86e869a49c480f 100644 (file)
@@ -53,7 +53,6 @@ kbase_devfreq_target(struct device *dev, unsigned long *target_freq, u32 flags)
        struct kbase_device *kbdev = dev_get_drvdata(dev);
        struct dev_pm_opp *opp;
        unsigned long freq = 0;
-       unsigned long old_freq = kbdev->current_freq;
        unsigned long voltage;
        int err = 0;
 
@@ -71,24 +70,14 @@ kbase_devfreq_target(struct device *dev, unsigned long *target_freq, u32 flags)
        /*
         * Only update if there is a change of frequency
         */
-       if (old_freq == freq) {
+       if (kbdev->current_freq == freq) {
                *target_freq = freq;
-#ifdef CONFIG_REGULATOR
-               if (kbdev->current_voltage == voltage)
-                       return 0;
-               err = regulator_set_voltage(kbdev->regulator, voltage, voltage);
-               if (err) {
-                       dev_err(dev, "Failed to set voltage (%d)\n", err);
-                       return err;
-               }
-#else
                return 0;
-#endif
        }
 
 #ifdef CONFIG_REGULATOR
-       if (kbdev->regulator && kbdev->current_voltage != voltage &&
-           old_freq < freq) {
+       if (kbdev->regulator && kbdev->current_voltage != voltage
+                       && kbdev->current_freq < freq) {
                err = regulator_set_voltage(kbdev->regulator, voltage, voltage);
                if (err) {
                        dev_err(dev, "Failed to increase voltage (%d)\n", err);
@@ -107,12 +96,10 @@ kbase_devfreq_target(struct device *dev, unsigned long *target_freq, u32 flags)
                                freq, *target_freq);
                return err;
        }
-       *target_freq = freq;
-       kbdev->current_freq = freq;
 
 #ifdef CONFIG_REGULATOR
-       if (kbdev->regulator && kbdev->current_voltage != voltage &&
-           old_freq > freq) {
+       if (kbdev->regulator && kbdev->current_voltage != voltage
+                       && kbdev->current_freq > freq) {
                err = regulator_set_voltage(kbdev->regulator, voltage, voltage);
                if (err) {
                        dev_err(dev, "Failed to decrease voltage (%d)\n", err);
@@ -121,7 +108,9 @@ kbase_devfreq_target(struct device *dev, unsigned long *target_freq, u32 flags)
        }
 #endif
 
+       *target_freq = freq;
        kbdev->current_voltage = voltage;
+       kbdev->current_freq = freq;
 
        kbase_pm_reset_dvfs_utilisation(kbdev);
 
@@ -224,11 +213,6 @@ int kbase_devfreq_init(struct kbase_device *kbdev)
                return -ENODEV;
 
        kbdev->current_freq = clk_get_rate(kbdev->clock);
-#ifdef CONFIG_REGULATOR
-       if (kbdev->regulator)
-               kbdev->current_voltage =
-                       regulator_get_voltage(kbdev->regulator);
-#endif
 
        dp = &kbdev->devfreq_profile;