CHROMIUM: MALI: Revert mali_kbase_devfreq.c in CL:1317240

Revert mali_kbase_devfreq.c in CL:1317240, since it's causing
compilation error on all other platform other than mediatek.

Reverting this single file cause other compilation error, and would be
fixed in CL:1424957.

BUG=b:121277411
TEST=None
CQ-DEPEND=CL:1424957

Change-Id: I0bbaf65e866a5079ac9da6c77cf41c141a2681fd
Signed-off-by: Pi-Hsun Shih <pihsun@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1496710
Commit-Ready: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Dominik Behr <dbehr@chromium.org>
diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c
index 9a2a07c..683a24c 100644
--- a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c
+++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c
@@ -79,98 +79,6 @@
 	return freq;
 }
 
-static void voltage_range_check(unsigned long *voltage)
-{
-	voltage[1] = ((voltage[1] - voltage[0]) < MIN_VOLT_BIAS) ?
-		(voltage[0] + MIN_VOLT_BIAS) : voltage[1];
-	voltage[1] = ((voltage[1] - voltage[0]) > MAX_VOLT_BIAS) ?
-		(voltage[0] + MIN_VOLT_BIAS) : voltage[1];
-	voltage[1] = min_t(unsigned long, max_t(unsigned long, voltage[1],
-		VSRAM_GPU_MIN_VOLT), VSRAM_GPU_MAX_VOLT);
-}
-
-static bool get_step_volt(unsigned long *step_volt,
-	unsigned long *target_volt, int count, bool inc)
-{
-	unsigned long regulator_min_volt;
-	unsigned long regulator_max_volt;
-	unsigned long current_bias;
-	long adjust_step;
-	int i;
-
-	if (inc) {
-		current_bias = target_volt[1] - step_volt[0];
-		adjust_step = MIN_VOLT_BIAS;
-	} else {
-		current_bias = step_volt[1] - target_volt[0];
-		adjust_step = -MIN_VOLT_BIAS;
-	}
-
-	for (i = 0; i < count; ++i)
-		if (step_volt[i] != target_volt[i])
-			break;
-
-	if (i == count)
-		return 0;
-
-	for (i = 0; i < count; i++) {
-		if (i) {
-			regulator_min_volt = VSRAM_GPU_MIN_VOLT;
-			regulator_max_volt = VSRAM_GPU_MAX_VOLT;
-		} else {
-			regulator_min_volt = VGPU_MIN_VOLT;
-			regulator_max_volt = VGPU_MAX_VOLT;
-		}
-
-		if (current_bias > MAX_VOLT_BIAS) {
-			step_volt[i] = min(max(step_volt[0] + adjust_step,
-				regulator_min_volt), regulator_max_volt);
-		} else {
-			step_volt[i] = target_volt[i];
-		}
-	}
-	return 1;
-}
-
-static int
-set_voltages(struct kbase_device *kbdev, unsigned long *target_volt, int inc)
-{
-	unsigned long step_volt[REGULATOR_NUM];
-	int first, step;
-	int i;
-	int err;
-
-	for (i = 0; i < kbdev->regulator_num; ++i)
-		step_volt[i] = kbdev->current_voltage[i];
-
-	if (inc) {
-		first = kbdev->regulator_num - 1;
-		step = -1;
-	} else {
-		first = 0;
-		step = 1;
-	}
-
-	while (get_step_volt(step_volt, target_volt,
-			kbdev->regulator_num, inc)) {
-		for (i = first; i >= 0 && i < kbdev->regulator_num; i += step) {
-			if (kbdev->current_voltage[i] == step_volt[i])
-				continue;
-
-			err = regulator_set_voltage(kbdev->regulator[i],
-					step_volt[i], step_volt[i] + VOLT_TOL);
-
-			if (err) {
-				dev_err(kbdev->dev, "Failed to set reg %d voltage err:(%d)\n",
-					i, err);
-				return err;
-			}
-		}
-	}
-
-	return 0;
-}
-
 static int
 kbase_devfreq_target(struct device *dev, unsigned long *target_freq, u32 flags)
 {
@@ -178,10 +86,9 @@
 	struct dev_pm_opp *opp;
 	unsigned long nominal_freq;
 	unsigned long freq = 0;
-	unsigned long target_volt[REGULATOR_NUM];
-	int err, i;
+	unsigned long voltage;
+	int err;
 	u64 core_mask;
-	struct mfg_base *mfg = kbdev->platform_context;
 
 	freq = *target_freq;
 
@@ -189,6 +96,7 @@
 	rcu_read_lock();
 #endif
 	opp = devfreq_recommended_opp(dev, &freq, flags);
+	voltage = dev_pm_opp_get_voltage(opp);
 #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0)
 	rcu_read_unlock();
 #endif
@@ -196,9 +104,6 @@
 		dev_err(dev, "Failed to get opp (%ld)\n", PTR_ERR(opp));
 		return PTR_ERR(opp);
 	}
-
-	for (i = 0; i < kbdev->regulator_num; i++)
-		target_volt[i] = dev_pm_opp_get_voltage_supply(opp, i);
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
 	dev_pm_opp_put(opp);
 #endif
@@ -208,51 +113,36 @@
 	/*
 	 * Only update if there is a change of frequency
 	 */
-	if (kbdev->current_nominal_freq == nominal_freq &&
-		kbdev->current_voltage[0] == target_volt[0]) {
+	if (kbdev->current_nominal_freq == nominal_freq) {
 		*target_freq = nominal_freq;
 		return 0;
 	}
 
 	freq = opp_translate(kbdev, nominal_freq, &core_mask);
-	voltage_range_check(target_volt);
-
 #ifdef CONFIG_REGULATOR
-	if (kbdev->current_voltage[0] < target_volt[0]) {
-		err = set_voltages(kbdev, target_volt, 1);
+	if (kbdev->regulator && kbdev->current_voltage != voltage
+			&& kbdev->current_freq < freq) {
+		err = regulator_set_voltage(kbdev->regulator, voltage, voltage);
 		if (err) {
-			dev_err(kbdev->dev, "Failed to increase voltage\n");
+			dev_err(dev, "Failed to increase voltage (%d)\n", err);
 			return err;
 		}
 	}
 #endif
 
-	if (kbdev->current_freq != freq) {
-		err = clk_set_parent(mfg->clk_mux, mfg->clk_sub_parent);
-		if (err) {
-			dev_err(kbdev->dev, "Failed to select sub clock src\n");
-			return err;
-		}
-
-		err = clk_set_rate(kbdev->clock, freq);
-		if (err) {
-			dev_err(dev, "Failed to set clock %lu (target %lu)\n",
-					freq, *target_freq);
-			return err;
-		}
-
-		err = clk_set_parent(mfg->clk_mux, mfg->clk_main_parent);
-		if (err) {
-			dev_err(kbdev->dev, "Failed to select main clock src\n");
-			return err;
-		}
+	err = clk_set_rate(kbdev->clock, freq);
+	if (err) {
+		dev_err(dev, "Failed to set clock %lu (target %lu)\n",
+				freq, *target_freq);
+		return err;
 	}
 
 #ifdef CONFIG_REGULATOR
-	if (kbdev->current_voltage[0] > target_volt[0]) {
-		err = set_voltages(kbdev, target_volt, 0);
+	if (kbdev->regulator && kbdev->current_voltage != voltage
+			&& kbdev->current_freq > freq) {
+		err = regulator_set_voltage(kbdev->regulator, voltage, voltage);
 		if (err) {
-			dev_err(kbdev->dev, "Failed to decrease voltage\n");
+			dev_err(dev, "Failed to decrease voltage (%d)\n", err);
 			return err;
 		}
 	}
@@ -261,8 +151,7 @@
 	kbase_devfreq_set_core_mask(kbdev, core_mask);
 
 	*target_freq = nominal_freq;
-	for (i = 0; i < kbdev->regulator_num; i++)
-		kbdev->current_voltage[i] = target_volt[i];
+	kbdev->current_voltage = voltage;
 	kbdev->current_nominal_freq = nominal_freq;
 	kbdev->current_freq = freq;
 	kbdev->current_core_mask = core_mask;
@@ -432,7 +321,7 @@
 		kbdev->opp_table[i].core_mask = core_mask;
 
 		dev_info(kbdev->dev, "OPP %d : opp_freq=%llu real_freq=%llu core_mask=%llx\n",
-			i, opp_freq, real_freq, core_mask);
+				i, opp_freq, real_freq, core_mask);
 
 		i++;
 	}