diff options
Diffstat (limited to 'meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0033-DSS2-Prefer-3-tap-filter.patch')
-rw-r--r-- | meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0033-DSS2-Prefer-3-tap-filter.patch | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0033-DSS2-Prefer-3-tap-filter.patch b/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0033-DSS2-Prefer-3-tap-filter.patch new file mode 100644 index 0000000000..f643ca64f3 --- /dev/null +++ b/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0033-DSS2-Prefer-3-tap-filter.patch @@ -0,0 +1,82 @@ +From 5390230ed12585a79683733209db34e9130b8e3b Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@nokia.com> +Date: Thu, 9 Apr 2009 15:04:43 +0200 +Subject: [PATCH] DSS2: Prefer 3-tap filter +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +The 5-tap filter seems rather unstable. With some scaling settings it +works and with some it doesn't even though the functional clock remains +within the TRM limits. So prefer the 3-tap filter unless the functional +clock required for it is too high. + +Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> +--- + drivers/video/omap2/dss/dispc.c | 27 ++++++++++++--------------- + 1 files changed, 12 insertions(+), 15 deletions(-) + +diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c +index b8a3329..b631dd8 100644 +--- a/drivers/video/omap2/dss/dispc.c ++++ b/drivers/video/omap2/dss/dispc.c +@@ -1405,15 +1405,10 @@ static unsigned long calc_fclk_five_taps(u16 width, u16 height, + } + + static unsigned long calc_fclk(u16 width, u16 height, +- u16 out_width, u16 out_height, +- enum omap_color_mode color_mode, bool five_taps) ++ u16 out_width, u16 out_height) + { + unsigned int hf, vf; + +- if (five_taps) +- return calc_fclk_five_taps(width, height, +- out_width, out_height, color_mode); +- + /* + * FIXME how to determine the 'A' factor + * for the no downscaling case ? +@@ -1494,7 +1489,7 @@ static int _dispc_setup_plane(enum omap_plane plane, + } else { + /* video plane */ + +- unsigned long fclk; ++ unsigned long fclk = 0; + + if (out_width < width / maxdownscale || + out_width > width * 8) +@@ -1530,20 +1525,22 @@ static int _dispc_setup_plane(enum omap_plane plane, + /* Must use 5-tap filter? */ + five_taps = height > out_height * 2; + +- /* Try to use 5-tap filter whenever possible. */ +- if (cpu_is_omap34xx() && !five_taps && +- height > out_height && width <= 1024) { +- fclk = calc_fclk_five_taps(width, height, +- out_width, out_height, color_mode); +- if (fclk <= dispc_fclk_rate()) ++ if (!five_taps) { ++ fclk = calc_fclk(width, height, ++ out_width, out_height); ++ ++ /* Try 5-tap filter if 3-tap fclk is too high */ ++ if (cpu_is_omap34xx() && height > out_height && ++ fclk > dispc_fclk_rate()) + five_taps = true; + } + + if (width > (2048 >> five_taps)) + return -EINVAL; + +- fclk = calc_fclk(width, height, out_width, out_height, +- color_mode, five_taps); ++ if (five_taps) ++ fclk = calc_fclk_five_taps(width, height, ++ out_width, out_height, color_mode); + + DSSDBG("required fclk rate = %lu Hz\n", fclk); + DSSDBG("current fclk rate = %lu Hz\n", dispc_fclk_rate()); +-- +1.5.6.5 + |