diff mbox

[media] imx: csi: enable double write reduction

Message ID 20170719122243.22911-1-p.zabel@pengutronix.de (mailing list archive)
State New, archived
Headers show

Commit Message

Philipp Zabel July 19, 2017, 12:22 p.m. UTC
For 4:2:0 subsampled YUV formats, avoid chroma overdraw by only writing
chroma for even lines. Reduces necessary write memory bandwidth by 25%.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
---
 drivers/staging/media/imx/imx-media-csi.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Steve Longerbeam July 19, 2017, 4:18 p.m. UTC | #1
Hi Philipp,

On 07/19/2017 05:22 AM, Philipp Zabel wrote:
> For 4:2:0 subsampled YUV formats, avoid chroma overdraw by only writing
> chroma for even lines. Reduces necessary write memory bandwidth by 25%.
> 
> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> ---
>   drivers/staging/media/imx/imx-media-csi.c | 6 ++++++
>   1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c
> index a2d26693912ec..0fb70d5a9e7fe 100644
> --- a/drivers/staging/media/imx/imx-media-csi.c
> +++ b/drivers/staging/media/imx/imx-media-csi.c
> @@ -388,6 +388,12 @@ static int csi_idmac_setup_channel(struct csi_priv *priv)
>   			goto unsetup_vb2;
>   	}
>   
> +	switch (image.pix.pixelformat) {
> +	case V4L2_PIX_FMT_YUV420:
> +	case V4L2_PIX_FMT_NV12:
> +		ipu_cpmem_skip_odd_chroma_rows(priv->idmac_ch);
> +	}
> +

Is there any reason why you can't place this call under the
already existing case statement for YUV420 and NV12 at line
352?

Steve

>   	ipu_cpmem_set_burstsize(priv->idmac_ch, burst_size);
>   
>   	/*
>
Philipp Zabel July 19, 2017, 4:29 p.m. UTC | #2
Hi Steve,

On Wed, 2017-07-19 at 09:18 -0700, Steve Longerbeam wrote:
> Hi Philipp,
> 
> On 07/19/2017 05:22 AM, Philipp Zabel wrote:
> > For 4:2:0 subsampled YUV formats, avoid chroma overdraw by only writing
> > chroma for even lines. Reduces necessary write memory bandwidth by 25%.
> > 
> > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> > ---
> >   drivers/staging/media/imx/imx-media-csi.c | 6 ++++++
> >   1 file changed, 6 insertions(+)
> > 
> > diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c
> > index a2d26693912ec..0fb70d5a9e7fe 100644
> > --- a/drivers/staging/media/imx/imx-media-csi.c
> > +++ b/drivers/staging/media/imx/imx-media-csi.c
> > @@ -388,6 +388,12 @@ static int csi_idmac_setup_channel(struct csi_priv *priv)
> >   			goto unsetup_vb2;
> >   	}
> >   
> > +	switch (image.pix.pixelformat) {
> > +	case V4L2_PIX_FMT_YUV420:
> > +	case V4L2_PIX_FMT_NV12:
> > +		ipu_cpmem_skip_odd_chroma_rows(priv->idmac_ch);
> > +	}
> > +
> 
> Is there any reason why you can't place this call under the
> already existing case statement for YUV420 and NV12 at line
> 352?

Not really. I didn't touch that block of code because it only dealt with
the burst size and generic data / passthrough mode settings. I'll move
the odd row skipping flag up there. Thank you for the suggestion.

regards
Philipp
diff mbox

Patch

diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c
index a2d26693912ec..0fb70d5a9e7fe 100644
--- a/drivers/staging/media/imx/imx-media-csi.c
+++ b/drivers/staging/media/imx/imx-media-csi.c
@@ -388,6 +388,12 @@  static int csi_idmac_setup_channel(struct csi_priv *priv)
 			goto unsetup_vb2;
 	}
 
+	switch (image.pix.pixelformat) {
+	case V4L2_PIX_FMT_YUV420:
+	case V4L2_PIX_FMT_NV12:
+		ipu_cpmem_skip_odd_chroma_rows(priv->idmac_ch);
+	}
+
 	ipu_cpmem_set_burstsize(priv->idmac_ch, burst_size);
 
 	/*