diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2018-07-30 11:53:06 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@armlinux.org.uk> | 2018-07-30 11:53:06 +0100 |
commit | dae2155bb07bb2063ce604049e9aa4e862b6db0a (patch) | |
tree | b6dbc5d98b87eabea5a6922e49812ea88f1e6074 | |
parent | 3cb13ac97bdfda5b301609256e3e0b59bc94f10a (diff) | |
download | op-kernel-dev-dae2155bb07bb2063ce604049e9aa4e862b6db0a.zip op-kernel-dev-dae2155bb07bb2063ce604049e9aa4e862b6db0a.tar.gz |
drm/armada: update primary framebuffer parameters on mode change
The framebuffer base address and toggling mode needs to be updated
when the interlaced flag for mode changes is updated. Arrange to
reprogram these parameters when only the mode has changed.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
-rw-r--r-- | drivers/gpu/drm/armada/armada_plane.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/drm/armada/armada_plane.c b/drivers/gpu/drm/armada/armada_plane.c index 39c9ba3..bed2dca 100644 --- a/drivers/gpu/drm/armada/armada_plane.c +++ b/drivers/gpu/drm/armada/armada_plane.c @@ -184,11 +184,13 @@ static void armada_drm_primary_plane_atomic_update(struct drm_plane *plane, armada_reg_queue_set(regs, idx, val, LCD_SPU_GZM_HPXL_VLN); if (old_state->src.x1 != state->src.x1 || old_state->src.y1 != state->src.y1 || - old_state->fb != state->fb) { + old_state->fb != state->fb || + state->crtc->state->mode_changed) { idx += armada_drm_crtc_calc_fb(state, regs + idx, dcrtc->interlaced); } - if (old_state->fb != state->fb) { + if (old_state->fb != state->fb || + state->crtc->state->mode_changed) { cfg = CFG_GRA_FMT(drm_fb_to_armada_fb(state->fb)->fmt) | CFG_GRA_MOD(drm_fb_to_armada_fb(state->fb)->mod); if (drm_fb_to_armada_fb(state->fb)->fmt > CFG_420) |