]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android-sdk/kernel-video.git/commitdiff
OMAPDSS: DISPC: fix div by zero issue in overlay scaling
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Fri, 3 Oct 2014 15:14:09 +0000 (15:14 +0000)
committerDarren Etheridge <detheridge@ti.com>
Fri, 3 Oct 2014 13:09:39 +0000 (08:09 -0500)
omapdrm doesn't always configure the overlays correctly, causing the
overlay setup functions to be called with zero timings. This leads to
division by zero error.

This happens, for example, when a HDMI cable is not connected, but a
user tries to setup a plane with scaling.

Fixing omapdrm is a big job, so for now let's check for the bad timings
in DISPC and return an error.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Darren Etheridge <detheridge@ti.com>
drivers/video/fbdev/omap2/dss/dispc.c

index 5aea698b8ad76c941187c982edc28a18f1135ba6..5f2bc849770bac4e459e93584a909b580b160e24 100644 (file)
@@ -2390,6 +2390,11 @@ static int dispc_ovl_calc_scaling(unsigned long pclk, unsigned long lclk,
        if (width == out_width && height == out_height)
                return 0;
 
+       if (pclk == 0 || mgr_timings->pixelclock == 0) {
+               DSSERR("cannot calculate scaling settings: pclk is zero\n");
+               return -EINVAL;
+       }
+
        if ((caps & OMAP_DSS_OVL_CAP_SCALE) == 0)
                return -EINVAL;