OMAP: DSS2: Reject scaling settings when they cannot be supported
authorVille Syrjälä <ville.syrjala@nokia.com>
Fri, 8 Jan 2010 09:56:41 +0000 (11:56 +0200)
committerTomi Valkeinen <tomi.valkeinen@nokia.com>
Tue, 12 Jan 2010 10:10:19 +0000 (12:10 +0200)
If the scaling ratio is below 0.5 video output width can't be identical
to the display width. Reject such settings.

Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com>
Acked-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
drivers/video/omap2/dss/dispc.c

index e2e0f9ae7353f90e8bf82a5d906e394a388ffccd..de8bfbac9e268feb2cb4c8bd8396e24962737d95 100644 (file)
@@ -1454,7 +1454,10 @@ static unsigned long calc_fclk_five_taps(u16 width, u16 height,
                do_div(tmp, 2 * out_height * ppl);
                fclk = tmp;
 
-               if (height > 2 * out_height && ppl != out_width) {
+               if (height > 2 * out_height) {
+                       if (ppl == out_width)
+                               return 0;
+
                        tmp = pclk * (height - 2 * out_height) * out_width;
                        do_div(tmp, 2 * out_height * (ppl - out_width));
                        fclk = max(fclk, (u32) tmp);
@@ -1634,7 +1637,7 @@ static int _dispc_setup_plane(enum omap_plane plane,
                DSSDBG("required fclk rate = %lu Hz\n", fclk);
                DSSDBG("current fclk rate = %lu Hz\n", dispc_fclk_rate());
 
-               if (fclk > dispc_fclk_rate()) {
+               if (!fclk || fclk > dispc_fclk_rate()) {
                        DSSERR("failed to set up scaling, "
                                        "required fclk rate = %lu Hz, "
                                        "current fclk rate = %lu Hz\n",