Commit d9e19d79 authored by Jonathan Marek's avatar Jonathan Marek Committed by Rob Clark

drm/msm/a6xx: skip HFI set freq if GMU is powered down

Also skip the newly added HFI set freq path if the GMU is powered down,
which was missing because of patches crossing paths.
Signed-off-by: default avatarJonathan Marek <jonathan@marek.ca>
Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
parent fb212ad6
...@@ -110,13 +110,6 @@ static void __a6xx_gmu_set_freq(struct a6xx_gmu *gmu, int index) ...@@ -110,13 +110,6 @@ static void __a6xx_gmu_set_freq(struct a6xx_gmu *gmu, int index)
struct msm_gpu *gpu = &adreno_gpu->base; struct msm_gpu *gpu = &adreno_gpu->base;
int ret; int ret;
/*
* This can get called from devfreq while the hardware is idle. Don't
* bring up the power if it isn't already active
*/
if (pm_runtime_get_if_in_use(gmu->dev) == 0)
return;
gmu_write(gmu, REG_A6XX_GMU_DCVS_ACK_OPTION, 0); gmu_write(gmu, REG_A6XX_GMU_DCVS_ACK_OPTION, 0);
gmu_write(gmu, REG_A6XX_GMU_DCVS_PERF_SETTING, gmu_write(gmu, REG_A6XX_GMU_DCVS_PERF_SETTING,
...@@ -141,7 +134,6 @@ static void __a6xx_gmu_set_freq(struct a6xx_gmu *gmu, int index) ...@@ -141,7 +134,6 @@ static void __a6xx_gmu_set_freq(struct a6xx_gmu *gmu, int index)
* for now leave it at max so that the performance is nominal. * for now leave it at max so that the performance is nominal.
*/ */
icc_set_bw(gpu->icc_path, 0, MBps_to_icc(7216)); icc_set_bw(gpu->icc_path, 0, MBps_to_icc(7216));
pm_runtime_put(gmu->dev);
} }
void a6xx_gmu_set_freq(struct msm_gpu *gpu, unsigned long freq) void a6xx_gmu_set_freq(struct msm_gpu *gpu, unsigned long freq)
...@@ -159,13 +151,21 @@ void a6xx_gmu_set_freq(struct msm_gpu *gpu, unsigned long freq) ...@@ -159,13 +151,21 @@ void a6xx_gmu_set_freq(struct msm_gpu *gpu, unsigned long freq)
break; break;
gmu->current_perf_index = perf_index; gmu->current_perf_index = perf_index;
gmu->freq = gmu->gpu_freqs[perf_index];
/*
* This can get called from devfreq while the hardware is idle. Don't
* bring up the power if it isn't already active
*/
if (pm_runtime_get_if_in_use(gmu->dev) == 0)
return;
if (gmu->legacy) if (gmu->legacy)
__a6xx_gmu_set_freq(gmu, perf_index); __a6xx_gmu_set_freq(gmu, perf_index);
else else
a6xx_hfi_set_freq(gmu, perf_index); a6xx_hfi_set_freq(gmu, perf_index);
gmu->freq = gmu->gpu_freqs[perf_index]; pm_runtime_put(gmu->dev);
} }
unsigned long a6xx_gmu_get_freq(struct msm_gpu *gpu) unsigned long a6xx_gmu_get_freq(struct msm_gpu *gpu)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment