Message ID | 1527244246-10519-3-git-send-email-smasetty@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, May 25, 2018 at 04:00:45PM +0530, Sharat Masetty wrote: > This is needed for hardware revisions which do not rely on the generic > suspend, resume handlers for power management. > > Signed-off-by: Sharat Masetty <smasetty@codeaurora.org> > --- > drivers/gpu/drm/msm/msm_gpu.c | 26 ++++++++++++++++++-------- > drivers/gpu/drm/msm/msm_gpu.h | 2 ++ > 2 files changed, 20 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c > index d7586f2..d8d4fc9 100644 > --- a/drivers/gpu/drm/msm/msm_gpu.c > +++ b/drivers/gpu/drm/msm/msm_gpu.c > @@ -203,6 +203,22 @@ static int disable_axi(struct msm_gpu *gpu) > return 0; > } > > +void msm_gpu_resume_devfreq(struct msm_gpu *gpu) > +{ > + if (gpu->devfreq.devfreq) { > + gpu->devfreq.busy_cycles = 0; > + gpu->devfreq.time = ktime_get(); > + > + devfreq_resume_device(gpu->devfreq.devfreq); > + } I just looked, we don't need the if() check - devfreq_resume_device should be safe. Yeah, we're doing an extra ktime_get() but its not the end of the world. > +} > + > +void msm_gpu_suspend_devfreq(struct msm_gpu *gpu) > +{ > + if (gpu->devfreq.devfreq) > + devfreq_suspend_device(gpu->devfreq.devfreq); We don't need the if check here either. > +} > + > int msm_gpu_pm_resume(struct msm_gpu *gpu) > { > int ret; > @@ -221,12 +237,7 @@ int msm_gpu_pm_resume(struct msm_gpu *gpu) > if (ret) > return ret; > > - if (gpu->devfreq.devfreq) { > - gpu->devfreq.busy_cycles = 0; > - gpu->devfreq.time = ktime_get(); > - > - devfreq_resume_device(gpu->devfreq.devfreq); > - } > + msm_gpu_resume_devfreq(gpu); > > gpu->needs_hw_init = true; > > @@ -239,8 +250,7 @@ int msm_gpu_pm_suspend(struct msm_gpu *gpu) > > DBG("%s", gpu->name); > > - if (gpu->devfreq.devfreq) > - devfreq_suspend_device(gpu->devfreq.devfreq); > + msm_gpu_suspend_devfreq(gpu); > > ret = disable_axi(gpu); > if (ret) > diff --git a/drivers/gpu/drm/msm/msm_gpu.h b/drivers/gpu/drm/msm/msm_gpu.h > index b824117..1876b81 100644 > --- a/drivers/gpu/drm/msm/msm_gpu.h > +++ b/drivers/gpu/drm/msm/msm_gpu.h > @@ -226,6 +226,8 @@ static inline void gpu_write64(struct msm_gpu *gpu, u32 lo, u32 hi, u64 val) > > int msm_gpu_pm_suspend(struct msm_gpu *gpu); > int msm_gpu_pm_resume(struct msm_gpu *gpu); > +void msm_gpu_resume_devfreq(struct msm_gpu *gpu); > +void msm_gpu_suspend_devfreq(struct msm_gpu *gpu); > > int msm_gpu_hw_init(struct msm_gpu *gpu); > > -- > 1.9.1 >
diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c index d7586f2..d8d4fc9 100644 --- a/drivers/gpu/drm/msm/msm_gpu.c +++ b/drivers/gpu/drm/msm/msm_gpu.c @@ -203,6 +203,22 @@ static int disable_axi(struct msm_gpu *gpu) return 0; } +void msm_gpu_resume_devfreq(struct msm_gpu *gpu) +{ + if (gpu->devfreq.devfreq) { + gpu->devfreq.busy_cycles = 0; + gpu->devfreq.time = ktime_get(); + + devfreq_resume_device(gpu->devfreq.devfreq); + } +} + +void msm_gpu_suspend_devfreq(struct msm_gpu *gpu) +{ + if (gpu->devfreq.devfreq) + devfreq_suspend_device(gpu->devfreq.devfreq); +} + int msm_gpu_pm_resume(struct msm_gpu *gpu) { int ret; @@ -221,12 +237,7 @@ int msm_gpu_pm_resume(struct msm_gpu *gpu) if (ret) return ret; - if (gpu->devfreq.devfreq) { - gpu->devfreq.busy_cycles = 0; - gpu->devfreq.time = ktime_get(); - - devfreq_resume_device(gpu->devfreq.devfreq); - } + msm_gpu_resume_devfreq(gpu); gpu->needs_hw_init = true; @@ -239,8 +250,7 @@ int msm_gpu_pm_suspend(struct msm_gpu *gpu) DBG("%s", gpu->name); - if (gpu->devfreq.devfreq) - devfreq_suspend_device(gpu->devfreq.devfreq); + msm_gpu_suspend_devfreq(gpu); ret = disable_axi(gpu); if (ret) diff --git a/drivers/gpu/drm/msm/msm_gpu.h b/drivers/gpu/drm/msm/msm_gpu.h index b824117..1876b81 100644 --- a/drivers/gpu/drm/msm/msm_gpu.h +++ b/drivers/gpu/drm/msm/msm_gpu.h @@ -226,6 +226,8 @@ static inline void gpu_write64(struct msm_gpu *gpu, u32 lo, u32 hi, u64 val) int msm_gpu_pm_suspend(struct msm_gpu *gpu); int msm_gpu_pm_resume(struct msm_gpu *gpu); +void msm_gpu_resume_devfreq(struct msm_gpu *gpu); +void msm_gpu_suspend_devfreq(struct msm_gpu *gpu); int msm_gpu_hw_init(struct msm_gpu *gpu);
This is needed for hardware revisions which do not rely on the generic suspend, resume handlers for power management. Signed-off-by: Sharat Masetty <smasetty@codeaurora.org> --- drivers/gpu/drm/msm/msm_gpu.c | 26 ++++++++++++++++++-------- drivers/gpu/drm/msm/msm_gpu.h | 2 ++ 2 files changed, 20 insertions(+), 8 deletions(-)