Commit 15b7e07b authored by Paul Cercueil's avatar Paul Cercueil

drm/ingenic: Compute timings according to adjusted_mode->crtc_*

The adjusted_mode->crtc_* fields contain the values adjusted for the
hardware, and are the ones that should be written to the registers.
Signed-off-by: default avatarPaul Cercueil <paul@crapouillou.net>
Reviewed-by: default avatarSam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20201119155559.14112-2-paul@crapouillou.net
parent 71173e78
...@@ -191,15 +191,15 @@ static void ingenic_drm_crtc_update_timings(struct ingenic_drm *priv, ...@@ -191,15 +191,15 @@ static void ingenic_drm_crtc_update_timings(struct ingenic_drm *priv,
{ {
unsigned int vpe, vds, vde, vt, hpe, hds, hde, ht; unsigned int vpe, vds, vde, vt, hpe, hds, hde, ht;
vpe = mode->vsync_end - mode->vsync_start; vpe = mode->crtc_vsync_end - mode->crtc_vsync_start;
vds = mode->vtotal - mode->vsync_start; vds = mode->crtc_vtotal - mode->crtc_vsync_start;
vde = vds + mode->vdisplay; vde = vds + mode->crtc_vdisplay;
vt = vde + mode->vsync_start - mode->vdisplay; vt = vde + mode->crtc_vsync_start - mode->crtc_vdisplay;
hpe = mode->hsync_end - mode->hsync_start; hpe = mode->crtc_hsync_end - mode->crtc_hsync_start;
hds = mode->htotal - mode->hsync_start; hds = mode->crtc_htotal - mode->crtc_hsync_start;
hde = hds + mode->hdisplay; hde = hds + mode->crtc_hdisplay;
ht = hde + mode->hsync_start - mode->hdisplay; ht = hde + mode->crtc_hsync_start - mode->crtc_hdisplay;
regmap_write(priv->map, JZ_REG_LCD_VSYNC, regmap_write(priv->map, JZ_REG_LCD_VSYNC,
0 << JZ_LCD_VSYNC_VPS_OFFSET | 0 << JZ_LCD_VSYNC_VPS_OFFSET |
...@@ -334,7 +334,7 @@ static void ingenic_drm_crtc_atomic_flush(struct drm_crtc *crtc, ...@@ -334,7 +334,7 @@ static void ingenic_drm_crtc_atomic_flush(struct drm_crtc *crtc,
struct drm_pending_vblank_event *event = crtc_state->event; struct drm_pending_vblank_event *event = crtc_state->event;
if (drm_atomic_crtc_needs_modeset(crtc_state)) { if (drm_atomic_crtc_needs_modeset(crtc_state)) {
ingenic_drm_crtc_update_timings(priv, &crtc_state->mode); ingenic_drm_crtc_update_timings(priv, &crtc_state->adjusted_mode);
priv->update_clk_rate = true; priv->update_clk_rate = true;
} }
......
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