From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Chiras Subject: [PATCH 05/10] drm/mxsfb: Fix the vblank events Date: Wed, 9 Jan 2019 14:13:45 +0000 Message-ID: <1547043209-8283-6-git-send-email-robert.chiras@nxp.com> References: <1547043209-8283-1-git-send-email-robert.chiras@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <1547043209-8283-1-git-send-email-robert.chiras@nxp.com> Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org To: Daniel Vetter , Philipp Zabel , Marek Vasut Cc: Robert Chiras , Stefan Agner , Shawn Guo , Fabio Estevam , David Airlie , Anson Huang , "dri-devel@lists.freedesktop.org" , dl-linux-imx , "kernel@pengutronix.de" , "linux-kernel@vger.kernel.org" List-Id: dri-devel@lists.freedesktop.org Currently, the vblank support is not correctly implemented in MXSFB_DRM driver. The call to drm_vblank_init is made with mode_config.num_crtc which at that time is 0. Because of this, vblank is not activated, so there won't be any vblank event submitted. Signed-off-by: Robert Chiras --- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsf= b_drv.c index 76230d7..aa35c43 100644 --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c @@ -43,6 +43,9 @@ #include "mxsfb_drv.h" #include "mxsfb_regs.h" =20 +/* The eLCDIF max possible CRTCs */ +#define MAX_CRTCS 1 + enum mxsfb_devtype { MXSFB_V3, MXSFB_V4, @@ -140,6 +143,8 @@ static void mxsfb_pipe_enable(struct drm_simple_display= _pipe *pipe, mxsfb->connector =3D &mxsfb->panel_connector; } =20 + drm_crtc_vblank_on(&mxsfb->pipe.crtc); + pm_runtime_get_sync(drm->dev); drm_panel_prepare(mxsfb->panel); mxsfb_crtc_enable(mxsfb); @@ -249,7 +254,7 @@ static int mxsfb_load(struct drm_device *drm, unsigned = long flags) =20 pm_runtime_enable(drm->dev); =20 - ret =3D drm_vblank_init(drm, drm->mode_config.num_crtc); + ret =3D drm_vblank_init(drm, MAX_CRTCS); if (ret < 0) { dev_err(drm->dev, "Failed to initialise vblank\n"); goto err_vblank; @@ -272,6 +277,8 @@ static int mxsfb_load(struct drm_device *drm, unsigned = long flags) goto err_vblank; } =20 + drm_crtc_vblank_off(&mxsfb->pipe.crtc); + /* * Attach panel only if there is one. * If there is no panel attach, it must be a bridge. In this case, we --=20 2.7.4