<div dir="ltr">2017-02-02 19:26 GMT-02:00 Fabio Estevam <<a href="mailto:festevam@gmail.com">festevam@gmail.com</a>>:<br>><br>> From: Fabio Estevam <<a href="mailto:fabio.estevam@nxp.com">fabio.estevam@nxp.com</a>><br>><br>> Currently the framebuffer content is displayed with incorrect offsets<br>> in both the vertical and horizontal directions.<br>><br>> The fbdev version of the driver does not show this problem. Breno Lima<br>> dumped the eLCDIF controller registers on both the drm and fbdev drivers<br>> and noticed that the VDCTRL3 register is configured incorrectly in the<br>> drm driver.<br>><br>> The fbdev driver calculates the vertical and horizontal wait counts<br>> of the VDCTRL3 register by doing: back porch + sync length.<br>><br>> Looking at the horizontal and vertical timing diagram from<br>> include/drm/drm_modes.h this value corresponds to:<br>><br>> crtc_[hv]total - crtc_[hv]sync_start<br>><br>> So fix the VDCTRL3 register setting accordingly so that the eLCDIF<br>> controller can properly show the framebuffer content in the correct<br>> position.<br>><br>> Reported-by: Breno Lima <<a href="mailto:breno.lima@nxp.com">breno.lima@nxp.com</a>><br>> Signed-off-by: Fabio Estevam <<a href="mailto:fabio.estevam@nxp.com">fabio.estevam@nxp.com</a>><br>> ---<br>>  drivers/gpu/drm/mxsfb/mxsfb_crtc.c | 4 ++--<br>>  1 file changed, 2 insertions(+), 2 deletions(-)<br>><br>> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_crtc.c b/drivers/gpu/drm/mxsfb/mxsfb_crtc.c<br>> index e10a4ed..b56f86c 100644<br>> --- a/drivers/gpu/drm/mxsfb/mxsfb_crtc.c<br>> +++ b/drivers/gpu/drm/mxsfb/mxsfb_crtc.c<br>> @@ -184,8 +184,8 @@ static void mxsfb_crtc_mode_set_nofb(struct mxsfb_drm_private *mxsfb)<br>>                VDCTRL2_SET_HSYNC_PERIOD(m->crtc_htotal),<br>>                mxsfb->base + LCDC_VDCTRL2);<br>><br>> -       writel(SET_HOR_WAIT_CNT(m->crtc_hblank_end - m->crtc_hsync_end) |<br>> -             SET_VERT_WAIT_CNT(m->crtc_vblank_end - m->crtc_vsync_end),<br>> +       writel(SET_HOR_WAIT_CNT(m->crtc_htotal - m->crtc_hsync_start) |<br>> +              SET_VERT_WAIT_CNT(m->crtc_vtotal - m->crtc_vsync_start),<br>>                mxsfb->base + LCDC_VDCTRL3);<br>><br>>         writel(SET_DOTCLK_H_VALID_DATA_CNT(m->hdisplay),<br>> --<br>> 2.7.4<br>><br><br>Tested-by: Breno Lima <<a href="mailto:breno.lima@nxp.com">breno.lima@nxp.com</a>><br><div><br></div><div><br></div></div>