DSS2: Check scaling limits against proper values
authorVille Syrjälä <ville.syrjala@nokia.com>
Mon, 6 Apr 2009 15:32:05 +0000 (17:32 +0200)
committerGrazvydas Ignotas <notasas@gmail.com>
Fri, 1 May 2009 16:45:01 +0000 (19:45 +0300)
Move the ilace and fieldmode related height adjustments to be performed
before checking the scaling limits.

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

index 61861d8..ae7be3d 100644 (file)
@@ -1366,10 +1366,25 @@ static int _dispc_setup_plane(enum omap_plane plane,
        unsigned offset0, offset1;
        s32 row_inc;
        s32 pix_inc;
+       u16 frame_height = height;
 
        if (paddr == 0)
                return -EINVAL;
 
+       if (ilace && height >= out_height)
+               fieldmode = 1;
+
+       if (ilace) {
+               if (fieldmode)
+                       height /= 2;
+               pos_y /= 2;
+               out_height /= 2;
+
+               DSSDBG("adjusting for ilace: height %d, pos_y %d, "
+                               "out_height %d\n",
+                               height, pos_y, out_height);
+       }
+
        if (plane == OMAP_DSS_GFX) {
                if (width != out_width || height != out_height)
                        return -EINVAL;
@@ -1448,28 +1463,14 @@ static int _dispc_setup_plane(enum omap_plane plane,
                        return -EINVAL;
        }
 
-       if (ilace && height >= out_height)
-               fieldmode = 1;
-
        calc_rotation_offset(rotation, mirror,
-                       screen_width, width, height, color_mode,
+                       screen_width, width, frame_height, color_mode,
                        fieldmode,
                        &offset0, &offset1, &row_inc, &pix_inc);
 
        DSSDBG("offset0 %u, offset1 %u, row_inc %d, pix_inc %d\n",
                        offset0, offset1, row_inc, pix_inc);
 
-       if (ilace) {
-               if (fieldmode)
-                       height /= 2;
-               pos_y /= 2;
-               out_height /= 2;
-
-               DSSDBG("adjusting for ilace: height %d, pos_y %d, "
-                               "out_height %d\n",
-                               height, pos_y, out_height);
-       }
-
        _dispc_set_channel_out(plane, channel_out);
        _dispc_set_color_mode(plane, color_mode);