|
Takashi Iwai |
cca179 |
From 9b2798d5b71c50f64c41a40f0cbcae47c3fbd067 Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
cca179 |
From: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
|
|
Takashi Iwai |
cca179 |
Date: Thu, 26 Oct 2017 02:27:51 -0400
|
|
Takashi Iwai |
cca179 |
Subject: [PATCH] media: vsp1: Fix YCbCr planar formats pitch calculation
|
|
Takashi Iwai |
cca179 |
Git-commit: 9b2798d5b71c50f64c41a40f0cbcae47c3fbd067
|
|
Takashi Iwai |
cca179 |
Patch-mainline: v4.20-rc1
|
|
Takashi Iwai |
cca179 |
References: bsc#1051510
|
|
Takashi Iwai |
cca179 |
|
|
Takashi Iwai |
cca179 |
YCbCr planar formats can have different pitch values for the luma and
|
|
Takashi Iwai |
cca179 |
chroma planes. This isn't taken into account in the driver. Fix it.
|
|
Takashi Iwai |
cca179 |
|
|
Takashi Iwai |
cca179 |
Based on a BSP patch from Koji Matsuoka <koji.matsuoka.xm@renesas.com>.
|
|
Takashi Iwai |
cca179 |
|
|
Takashi Iwai |
cca179 |
Fixes: 7863ac504bc5 ("drm: rcar-du: Add tri-planar memory formats support")
|
|
Takashi Iwai |
cca179 |
[Updated documentation of the struct vsp1_du_atomic_config pitch field]
|
|
Takashi Iwai |
cca179 |
|
|
Takashi Iwai |
cca179 |
Signed-off-by: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
|
|
Takashi Iwai |
cca179 |
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
|
|
Takashi Iwai |
cca179 |
Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
|
|
Takashi Iwai |
cca179 |
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
|
Takashi Iwai |
cca179 |
Acked-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
cca179 |
|
|
Takashi Iwai |
cca179 |
---
|
|
Takashi Iwai |
cca179 |
drivers/media/platform/vsp1/vsp1_drm.c | 11 ++++++++++-
|
|
Takashi Iwai |
cca179 |
1 file changed, 10 insertions(+), 1 deletion(-)
|
|
Takashi Iwai |
cca179 |
|
|
Takashi Iwai |
cca179 |
--- a/drivers/media/platform/vsp1/vsp1_drm.c
|
|
Takashi Iwai |
cca179 |
+++ b/drivers/media/platform/vsp1/vsp1_drm.c
|
|
Takashi Iwai |
cca179 |
@@ -260,6 +260,7 @@ int vsp1_du_atomic_update(struct device
|
|
Takashi Iwai |
cca179 |
{
|
|
Takashi Iwai |
cca179 |
struct vsp1_device *vsp1 = dev_get_drvdata(dev);
|
|
Takashi Iwai |
cca179 |
const struct vsp1_format_info *fmtinfo;
|
|
Takashi Iwai |
cca179 |
+ unsigned int chroma_hsub;
|
|
Takashi Iwai |
cca179 |
struct vsp1_rwpf *rpf;
|
|
Takashi Iwai |
cca179 |
|
|
Takashi Iwai |
cca179 |
if (rpf_index >= vsp1->info->rpf_count)
|
|
Takashi Iwai |
cca179 |
@@ -294,10 +295,18 @@ int vsp1_du_atomic_update(struct device
|
|
Takashi Iwai |
cca179 |
return -EINVAL;
|
|
Takashi Iwai |
cca179 |
}
|
|
Takashi Iwai |
cca179 |
|
|
Takashi Iwai |
cca179 |
+ /*
|
|
Takashi Iwai |
cca179 |
+ * Only formats with three planes can affect the chroma planes pitch.
|
|
Takashi Iwai |
cca179 |
+ * All formats with two planes have a horizontal subsampling value of 2,
|
|
Takashi Iwai |
cca179 |
+ * but combine U and V in a single chroma plane, which thus results in
|
|
Takashi Iwai |
cca179 |
+ * the luma plane and chroma plane having the same pitch.
|
|
Takashi Iwai |
cca179 |
+ */
|
|
Takashi Iwai |
cca179 |
+ chroma_hsub = (fmtinfo->planes == 3) ? fmtinfo->hsub : 1;
|
|
Takashi Iwai |
cca179 |
+
|
|
Takashi Iwai |
cca179 |
rpf->fmtinfo = fmtinfo;
|
|
Takashi Iwai |
cca179 |
rpf->format.num_planes = fmtinfo->planes;
|
|
Takashi Iwai |
cca179 |
rpf->format.plane_fmt[0].bytesperline = cfg->pitch;
|
|
Takashi Iwai |
cca179 |
- rpf->format.plane_fmt[1].bytesperline = cfg->pitch;
|
|
Takashi Iwai |
cca179 |
+ rpf->format.plane_fmt[1].bytesperline = cfg->pitch / chroma_hsub;
|
|
Takashi Iwai |
cca179 |
rpf->alpha = cfg->alpha;
|
|
Takashi Iwai |
cca179 |
|
|
Takashi Iwai |
cca179 |
rpf->mem.addr[0] = cfg->mem[0];
|