drm/omap: dispc: disp_wb_setup to check return code
authorBenoit Parrot <bparrot@ti.com>
Wed, 22 Jun 2016 17:59:50 +0000 (12:59 -0500)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Thu, 1 Mar 2018 07:18:18 +0000 (09:18 +0200)
When dispc_wb_setup() calls dispc_ovl_setup_common() it does not
check for failure but instead keeps on partially setting up WB.
This causes the WB H/W to be partially initialized and yield
unexpected behavior.

Make sure return code is successful before proceeding.

Signed-off-by: Benoit Parrot <bparrot@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
drivers/gpu/drm/omapdrm/dss/dispc.c

index d2d95c76a31302686ca888f2ef7e592975ad46b7..f0f729fc4ca2a5accf21540f8e00f3c3a55a85b0 100644 (file)
@@ -2783,6 +2783,8 @@ int dispc_wb_setup(struct dispc_device *dispc,
                wi->height, wi->fourcc, wi->rotation, zorder,
                wi->pre_mult_alpha, global_alpha, wi->rotation_type,
                replication, vm, mem_to_mem);
+       if (r)
+               return r;
 
        switch (wi->fourcc) {
        case DRM_FORMAT_RGB565:
@@ -2823,7 +2825,7 @@ int dispc_wb_setup(struct dispc_device *dispc,
                REG_FLD_MOD(dispc, DISPC_OVL_ATTRIBUTES2(plane), wbdelay, 7, 0);
        }
 
-       return r;
+       return 0;
 }
 
 static int dispc_ovl_enable(struct dispc_device *dispc,