diff options
Diffstat (limited to 'recipes/linux/linux-omap-2.6.29/dss2/0020-DSS2-Check-scaling-limits-against-proper-values.patch')
-rw-r--r-- | recipes/linux/linux-omap-2.6.29/dss2/0020-DSS2-Check-scaling-limits-against-proper-values.patch | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/recipes/linux/linux-omap-2.6.29/dss2/0020-DSS2-Check-scaling-limits-against-proper-values.patch b/recipes/linux/linux-omap-2.6.29/dss2/0020-DSS2-Check-scaling-limits-against-proper-values.patch new file mode 100644 index 0000000000..b3248527e8 --- /dev/null +++ b/recipes/linux/linux-omap-2.6.29/dss2/0020-DSS2-Check-scaling-limits-against-proper-values.patch @@ -0,0 +1,79 @@ +From 9f8f1613253656f155b3844c8255a560f86e0acd Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@nokia.com> +Date: Mon, 6 Apr 2009 17:32:05 +0200 +Subject: [PATCH] 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ä <ville.syrjala@nokia.com> +--- + 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.5.6.5 + |