From 9f8f1613253656f155b3844c8255a560f86e0acd Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Ville=20Syrj=C3=A4l=C3=A4?= Date: Mon, 6 Apr 2009 17:32:05 +0200 Subject: [PATCH 20/69] DSS2: Check scaling limits against proper values MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Move the ilace and fieldmode related height adjustments to be performed before checking the scaling limits. Signed-off-by: Ville Syrjälä --- drivers/video/omap2/dss/dispc.c | 31 ++++++++++++++++--------------- 1 files changed, 16 insertions(+), 15 deletions(-) diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c index 61861d8..ae7be3d 100644 --- a/drivers/video/omap2/dss/dispc.c +++ b/drivers/video/omap2/dss/dispc.c @@ -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); -- 1.6.2.4