MALI: drm/arm: mt8183: Update the platform driver
We have updated the mali driver.
This updates the platform to work the new mali driver.
Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
diff --git a/drivers/gpu/arm/midgard/platform/mediatek/mali_kbase_runtime_pm.c b/drivers/gpu/arm/midgard/platform/mediatek/mali_kbase_runtime_pm.c
index 6497053..b40e407 100644
--- a/drivers/gpu/arm/midgard/platform/mediatek/mali_kbase_runtime_pm.c
+++ b/drivers/gpu/arm/midgard/platform/mediatek/mali_kbase_runtime_pm.c
@@ -177,8 +177,8 @@
struct mfg_base *mfg = kbdev->platform_context;
int error, i;
- for (i = 0; i < kbdev->regulator_num; i++) {
- error = regulator_enable(kbdev->regulator[i]);
+ for (i = 0; i < kbdev->nr_regulators; i++) {
+ error = regulator_enable(kbdev->regulators[i]);
if (error < 0) {
dev_err(kbdev->dev,
"Power on reg %d failed error = %d\n",
@@ -224,8 +224,8 @@
clk_unprepare(mfg->clk_main_parent);
- for (i = 0; i < kbdev->regulator_num; i++) {
- error = regulator_disable(kbdev->regulator[i]);
+ for (i = 0; i < kbdev->nr_regulators; i++) {
+ error = regulator_disable(kbdev->regulators[i]);
if (error < 0) {
dev_err(kbdev->dev,
"Power off reg %d failed error = %d\n",
@@ -271,8 +271,8 @@
if (!probe_gpu_core1_dev || !probe_gpu_core2_dev)
return -EPROBE_DEFER;
- for (i = 0; i < kbdev->regulator_num; i++)
- if (kbdev->regulator[i] == NULL)
+ for (i = 0; i < kbdev->nr_regulators; i++)
+ if (kbdev->regulators[i] == NULL)
return -EINVAL;
mfg->gpu_core1_dev = probe_gpu_core1_dev;
@@ -306,9 +306,9 @@
return err;
}
- for (i = 0; i < kbdev->regulator_num; i++) {
+ for (i = 0; i < kbdev->nr_regulators; i++) {
volt = (0 == i) ? VGPU_MAX_VOLT : VSRAM_GPU_MAX_VOLT;
- err = regulator_set_voltage(kbdev->regulator[i],
+ err = regulator_set_voltage(kbdev->regulators[i],
volt, volt + VOLT_TOL);
if (err < 0) {
dev_err(kbdev->dev,
@@ -316,7 +316,7 @@
i, err);
return err;
}
- kbdev->current_voltage[i] = volt;
+ kbdev->current_voltages[i] = volt;
}
mfg->is_powered = false;
@@ -324,129 +324,6 @@
return 0;
}
-static void voltage_range_check(struct kbase_device *kbdev,
- unsigned long *voltages)
-{
- if (voltages[1] - voltages[0] < MIN_VOLT_BIAS ||
- voltages[1] - voltages[0] > MAX_VOLT_BIAS)
- voltages[1] = voltages[0] + MIN_VOLT_BIAS;
- voltages[1] = clamp_t(unsigned long, voltages[1], VSRAM_GPU_MIN_VOLT,
- VSRAM_GPU_MAX_VOLT);
-}
-
-#ifdef CONFIG_REGULATOR
-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] = clamp_val(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 *voltages,
- bool inc)
-{
- unsigned long step_volt[KBASE_MAX_REGULATORS];
- 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, voltages, 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;
-}
-#endif
-
-static int set_frequency(struct kbase_device *kbdev, unsigned long freq)
-{
- int err;
- struct mfg_base *mfg = kbdev->platform_context;
-
- 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)
- 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;
- }
- }
-
- return 0;
-}
-
static int platform_init(struct kbase_device *kbdev)
{
int err;
@@ -484,12 +361,6 @@
goto platform_init_err;
}
- kbdev->devfreq_ops.set_frequency = set_frequency;
-#ifdef CONFIG_REGULATOR
- kbdev->devfreq_ops.set_voltages = set_voltages;
-#endif
- kbdev->devfreq_ops.voltage_range_check = voltage_range_check;
-
return 0;
platform_init_err: