aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/omapdrm/omap_fb.c
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2016-01-08 08:51:02 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2016-03-03 10:36:43 -0500
commitbe4f235c43f06ae749b8f99b04f899d1e9bd561e (patch)
treed22ce7f69cfd883908a9270033adab096018b590 /drivers/gpu/drm/omapdrm/omap_fb.c
parent2158f2c7fe7638040034135e934f89cb2e018625 (diff)
drm/omap: verify that fb plane pitches are the same
The DSS hardware uses the same ROW_INC value for both Y and UV planes for NV12 format. This means that the pitches of the Y and UV planes have to match. omapdrm doesn't check this at the moment, and this can lead into a broken NV12 fb on the screen. This patch adds the check. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_fb.c')
-rw-r--r--drivers/gpu/drm/omapdrm/omap_fb.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_fb.c b/drivers/gpu/drm/omapdrm/omap_fb.c
index ad202dfc1a49..481512db2656 100644
--- a/drivers/gpu/drm/omapdrm/omap_fb.c
+++ b/drivers/gpu/drm/omapdrm/omap_fb.c
@@ -449,6 +449,14 @@ struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
449 goto fail; 449 goto fail;
450 } 450 }
451 451
452 if (i > 0 && pitch != mode_cmd->pitches[i - 1]) {
453 dev_err(dev->dev,
454 "pitches are not the same between framebuffer planes %d != %d\n",
455 pitch, mode_cmd->pitches[i - 1]);
456 ret = -EINVAL;
457 goto fail;
458 }
459
452 plane->bo = bos[i]; 460 plane->bo = bos[i];
453 plane->offset = mode_cmd->offsets[i]; 461 plane->offset = mode_cmd->offsets[i];
454 plane->pitch = pitch; 462 plane->pitch = pitch;