From: Tomi Valkeinen <tomi.valkeinen@ti.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
linux-omap@vger.kernel.org, linux-fbdev@vger.kernel.org
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Subject: [PATCH 02/11] OMAPDSS: DISPC: fix predecimation for YUV modes
Date: Wed, 17 Jun 2015 12:54:26 +0000 [thread overview]
Message-ID: <1434545675-477-3-git-send-email-tomi.valkeinen@ti.com> (raw)
In-Reply-To: <1434545675-477-1-git-send-email-tomi.valkeinen@ti.com>
DISPC needs even input buffer width for YUV modes. The DISPC driver
doesn't check this at the moment (although omapdrm does), but worse,
when DISPC driver does x predecimation the result may be uneven. This
causes sometimes sync losts, underflows, or just visual errors.
This patch makes DISPC driver return an error if the user gives uneven
input width for a YUV buffer. It also makes the input width even in case
of predecimation.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
drivers/video/fbdev/omap2/dss/dispc.c | 36 +++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/drivers/video/fbdev/omap2/dss/dispc.c b/drivers/video/fbdev/omap2/dss/dispc.c
index a074d8b70591..db60aa98f661 100644
--- a/drivers/video/fbdev/omap2/dss/dispc.c
+++ b/drivers/video/fbdev/omap2/dss/dispc.c
@@ -2542,6 +2542,21 @@ static int dispc_ovl_setup_common(enum omap_plane plane,
if (paddr = 0 && rotation_type != OMAP_DSS_ROT_TILER)
return -EINVAL;
+ switch (color_mode) {
+ case OMAP_DSS_COLOR_YUV2:
+ case OMAP_DSS_COLOR_UYVY:
+ case OMAP_DSS_COLOR_NV12:
+ if (in_width & 1) {
+ DSSERR("input width %d is not even for YUV format\n",
+ in_width);
+ return -EINVAL;
+ }
+ break;
+
+ default:
+ break;
+ }
+
out_width = out_width = 0 ? width : out_width;
out_height = out_height = 0 ? height : out_height;
@@ -2572,6 +2587,27 @@ static int dispc_ovl_setup_common(enum omap_plane plane,
in_width = in_width / x_predecim;
in_height = in_height / y_predecim;
+ if (x_predecim > 1 || y_predecim > 1)
+ DSSDBG("predecimation %d x %x, new input size %d x %d\n",
+ x_predecim, y_predecim, in_width, in_height);
+
+ switch (color_mode) {
+ case OMAP_DSS_COLOR_YUV2:
+ case OMAP_DSS_COLOR_UYVY:
+ case OMAP_DSS_COLOR_NV12:
+ if (in_width & 1) {
+ DSSDBG("predecimated input width is not even for YUV format\n");
+ DSSDBG("adjusting input width %d -> %d\n",
+ in_width, in_width & ~1);
+
+ in_width &= ~1;
+ }
+ break;
+
+ default:
+ break;
+ }
+
if (color_mode = OMAP_DSS_COLOR_YUV2 ||
color_mode = OMAP_DSS_COLOR_UYVY ||
color_mode = OMAP_DSS_COLOR_NV12)
--
2.1.4
next prev parent reply other threads:[~2015-06-17 12:54 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-17 12:54 [PATCH 00/11] OMAPDSS: scaling & misc fixes Tomi Valkeinen
2015-06-17 12:54 ` [PATCH 01/11] OMAPDSS: DISPC: work-around for errata i631 Tomi Valkeinen
2015-06-17 12:54 ` Tomi Valkeinen [this message]
2015-06-17 12:54 ` [PATCH 03/11] OMAPDSS: DISPC: fix check_horiz_timing_omap3 args Tomi Valkeinen
2015-06-17 12:54 ` [PATCH 04/11] OMAPDSS: DISPC: add check for scaling limits Tomi Valkeinen
2015-06-17 12:54 ` [PATCH 05/11] OMAPDSS: DISPC: fix row_inc for OMAP3 Tomi Valkeinen
2015-06-17 12:54 ` [PATCH 06/11] OMAPDSS: DISPC: fix 64 bit issue in 5-tap Tomi Valkeinen
2015-06-17 12:54 ` [PATCH 07/11] OMAPDSS: DISPC: check if scaling setup failed Tomi Valkeinen
2015-06-17 12:54 ` [PATCH 08/11] OMAPDSS: DISPC: do only y decimation on OMAP3 Tomi Valkeinen
2015-06-17 12:54 ` [PATCH 09/11] OMAPDSS: DISPC: scaler debug print Tomi Valkeinen
2015-06-17 12:54 ` [PATCH 10/11] OMAPDSS: HDMI4: fix error handling Tomi Valkeinen
2015-06-17 12:54 ` [PATCH 11/11] OMAPDSS: HDMI: wait for framedone when stopping video Tomi Valkeinen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1434545675-477-3-git-send-email-tomi.valkeinen@ti.com \
--to=tomi.valkeinen@ti.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).