• Fabio Estevam's avatar
    staging: imx-drm: Fix probe failure · 099326d8
    Fabio Estevam authored
    Since commit b5dc0d10 (drm/imx: kill firstopen callback) the following probe
    failure is seen:
    
    [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
    [drm] No driver support for vblank timestamp query.
    [drm] Initialized imx-drm 1.0.0 20120507 on minor 0
    imx-ldb ldb.10: adding encoder failed with -16
    imx-ldb: probe of ldb.10 failed with error -16
    imx-ipuv3 2400000.ipu: IPUv3H probed
    imx-ipuv3 2800000.ipu: IPUv3H probed
    imx-ipuv3-crtc imx-ipuv3-crtc.0: adding crtc failed with -16.
    imx-ipuv3-crtc: probe of imx-ipuv3-crtc.0 failed with error -16
    imx-ipuv3-crtc imx-ipuv3-crtc.1: adding crtc failed with -16.
    imx-ipuv3-crtc: probe of imx-ipuv3-crtc.1 failed with error -16
    imx-ipuv3-crtc imx-ipuv3-crtc.2: adding crtc failed with -16.
    imx-ipuv3-crtc: probe of imx-ipuv3-crtc.2 failed with error -16
    imx-ipuv3-crtc imx-ipuv3-crtc.3: adding crtc failed with -16.
    imx-ipuv3-crtc: probe of imx-ipuv3-crtc.3 failed with error -16
    
    The reason for the probe failure is that now 'imxdrm->references' is incremented
    early in imx_drm_driver_load(), so the following checks in imx_drm_add_crtc()
    and imx_drm_add_encoder():
    
    	if (imxdrm->references) {
    		ret = -EBUSY;
    		goto err_busy;
    	}
    
    ,will always fail.
    
    Instead of manually keeping the references in the imx-drm driver, let's use
    drm->open_count.
    
    After this patch, lvds panel is functional on a mx6qsabrelite board.
    Signed-off-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
    Acked-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    099326d8
imx-drm-core.c 19.6 KB