summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSean Paul <seanpaul@chromium.org>2019-01-28 21:42:49 +0100
committerRob Clark <robdclark@chromium.org>2019-04-18 19:04:09 +0200
commit2e0391865bd71e076139ca8059bf68469012c27a (patch)
treede47dcc342acd2f6549a9c1e372282aaaedc61d1 /drivers
parentdrm/msm: Use drm_mode_vrefresh instead of mode->vrefresh (diff)
downloadlinux-2e0391865bd71e076139ca8059bf68469012c27a.tar.xz
linux-2e0391865bd71e076139ca8059bf68469012c27a.zip
drm/msm: dpu: Simplify frame_done watchdog timeout calculation
Instead of setting the timeout and then immediately reading it back (along with the hand-rolled msecs_to_jiffies calculation), just calculate it once and set it in both places at the same time. Reviewed-by: Abhinav Kumar <abhinavk@codeaurora.org> Signed-off-by: Sean Paul <seanpaul@chromium.org> Link: https://patchwork.freedesktop.org/patch/msgid/20190128204306.95076-2-sean@poorly.run Signed-off-by: Rob Clark <robdclark@chromium.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
index 3a714695d536..107abd4b99d2 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
@@ -1788,6 +1788,7 @@ void dpu_encoder_kickoff(struct drm_encoder *drm_enc, bool async)
{
struct dpu_encoder_virt *dpu_enc;
struct dpu_encoder_phys *phys;
+ unsigned long timeout_ms;
ktime_t wakeup_time;
unsigned int i;
@@ -1800,11 +1801,12 @@ void dpu_encoder_kickoff(struct drm_encoder *drm_enc, bool async)
trace_dpu_enc_kickoff(DRMID(drm_enc));
- atomic_set(&dpu_enc->frame_done_timeout,
- DPU_FRAME_DONE_TIMEOUT * 1000 /
- drm_mode_vrefresh(&drm_enc->crtc->state->adjusted_mode));
- mod_timer(&dpu_enc->frame_done_timer, jiffies +
- ((atomic_read(&dpu_enc->frame_done_timeout) * HZ) / 1000));
+ timeout_ms = DPU_FRAME_DONE_TIMEOUT * 1000 /
+ drm_mode_vrefresh(&drm_enc->crtc->state->adjusted_mode);
+
+ atomic_set(&dpu_enc->frame_done_timeout, timeout_ms);
+ mod_timer(&dpu_enc->frame_done_timer,
+ jiffies + msecs_to_jiffies(timeout_ms));
/* All phys encs are ready to go, trigger the kickoff */
_dpu_encoder_kickoff_phys(dpu_enc, async);