All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Horman <horms@verge.net.au>
To: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Cc: Yoshihiro Kaneko <ykaneko0929@gmail.com>,
	Linux Media Mailing List <linux-media@vger.kernel.org>,
	Guennadi Liakhovetski <g.liakhovetski@gmx.de>,
	Magnus Damm <magnus.damm@gmail.com>,
	Linux-sh list <linux-sh@vger.kernel.org>
Subject: Re: [PATCH v2] media: soc_camera: rcar_vin: Add BT.709 24-bit RGB888 input support
Date: Wed, 29 Oct 2014 23:51:00 +0000	[thread overview]
Message-ID: <20141029235100.GA4599@verge.net.au> (raw)
In-Reply-To: <5450D01D.9060701@cogentembedded.com>

On Wed, Oct 29, 2014 at 02:31:41PM +0300, Sergei Shtylyov wrote:
> Hello.
> 
> On 10/29/2014 7:11 AM, Simon Horman wrote:
> 
> >>>>From: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
> 
> >>>>Signed-off-by: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
> >>>>Signed-off-by: Yoshihiro Kaneko <ykaneko0929@gmail.com>
> >>>>---
> 
> >>>>This patch is against master branch of linuxtv.org/media_tree.git.
> 
> >>>>v2 [Yoshihiro Kaneko]
> >>>>* remove unused/useless definition as suggested by Sergei Shtylyov
> 
> >>>    I didn't say it's useless, I just suspected that you missed the necessary
> >>>test somewhere...
> 
> >>Sorry for my inaccurate description.
> 
> >>>>   drivers/media/platform/soc_camera/rcar_vin.c | 9 +++++++++
> >>>>   1 file changed, 9 insertions(+)
> 
> >>>>diff --git a/drivers/media/platform/soc_camera/rcar_vin.c
> >>>>b/drivers/media/platform/soc_camera/rcar_vin.c
> >>>>index 20defcb..cb5e682 100644
> >>>>--- a/drivers/media/platform/soc_camera/rcar_vin.c
> >>>>+++ b/drivers/media/platform/soc_camera/rcar_vin.c
> >>>>@@ -74,6 +74,7 @@
> >>>>   #define VNMC_INF_YUV10_BT656  (2 << 16)
> >>>>   #define VNMC_INF_YUV10_BT601  (3 << 16)
> >>>>   #define VNMC_INF_YUV16                (5 << 16)
> >>>>+#define VNMC_INF_RGB888                (6 << 16)
> >>>>   #define VNMC_VUP              (1 << 10)
> >>>>   #define VNMC_IM_ODD           (0 << 3)
> >>>>   #define VNMC_IM_ODD_EVEN      (1 << 3)
> 
> >>>[...]
> 
> >>>>@@ -331,6 +336,9 @@ static int rcar_vin_setup(struct rcar_vin_priv *priv)
> >>>>         if (output_is_yuv)
> >>>>                 vnmc |= VNMC_BPS;
> >>>>
> >>>>+       if (vnmc & VNMC_INF_RGB888)
> >>>>+               vnmc ^= VNMC_BPS;
> >>>>+
> 
> >>>    Hm, this also changes the behavior for VNMC_INF_YUV16 and
> >>>VNMC_INF_YUV10_BT{601|656}. Is this actually intended?
> 
> >>Probably this code is incorrect.
> >>Thank you for your review.
> 
> >Thanks, I have confirmed with Matsuoka-san that there is a problem here.
> 
> >He has provided the following fix. Could you see about squashing it into
> >the above patch and reposting?
> 
> >From: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
> 
> >[PATCH] media: soc_camera: rcar_vin: Fix bit field check
> 
> >Signed-off-by: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
> 
> >diff --git a/drivers/media/platform/soc_camera/rcar_vin.c b/drivers/media/platform/soc_camera/rcar_vin.c
> >index 013d75c..da62d94 100644
> >--- a/drivers/media/platform/soc_camera/rcar_vin.c
> >+++ b/drivers/media/platform/soc_camera/rcar_vin.c
> >@@ -94,7 +94,7 @@
> >  #define VNMC_INF_YUV8_BT601	(1 << 16)
> >  #define VNMC_INF_YUV16		(5 << 16)
> >  #define VNMC_INF_RGB888		(6 << 16)
> >-#define VNMC_INF_RGB_MASK	(6 << 16)
> >+#define VNMC_INF_MASK		(7 << 16)
> 
>    #define it above VNMC_INF_YUV8_BT656 please.
> 
> >  #define VNMC_VUP		(1 << 10)
> >  #define VNMC_IM_ODD		(0 << 3)
> >  #define VNMC_IM_ODD_EVEN	(1 << 3)
> >@@ -675,7 +675,7 @@ static int rcar_vin_setup(struct rcar_vin_priv *priv)
> >  	if (output_is_yuv)
> >  		vnmc |= VNMC_BPS;
> >
> >-	if (vnmc & VNMC_INF_RGB_MASK)
> >+	if ((vnmc & VNMC_INF_MASK) = VNMC_INF_RGB888)
> 
>    Is he sure it shouldn't be (vnmc & VNMC_INF_RGB888) = VNMC_INF_RGB888 to
> also cover 16-bit RGB666 and 12-bit RGB88?

Nice, I think that is a good idea (although the latter formats aren't
supported by the driver yet, right?).

Its somewhat unobvious how that logic works so perhaps we should add a
comment like this

	/* If input and output use the same colorspace, use bypass mode */
	if (output_is_yuv)
		vnmc |= VNMC_BPS;

	/* The above assumes YUV input, toggle BPS for RGB input.
	 * RGB inputs can be detected by checking that the most-significant
	 * two bits of INF are set. This corresponds to the bits
	 * set in VNMC_INF_RGB888. */
	if ((vnmc & VNMC_INF_RGB888)) = VNMC_INF_RGB888)
		vnmc ^= VNMC_BPS;

WARNING: multiple messages have this Message-ID (diff)
From: Simon Horman <horms@verge.net.au>
To: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Cc: Yoshihiro Kaneko <ykaneko0929@gmail.com>,
	Linux Media Mailing List <linux-media@vger.kernel.org>,
	Guennadi Liakhovetski <g.liakhovetski@gmx.de>,
	Magnus Damm <magnus.damm@gmail.com>,
	Linux-sh list <linux-sh@vger.kernel.org>
Subject: Re: [PATCH v2] media: soc_camera: rcar_vin: Add BT.709 24-bit RGB888 input support
Date: Thu, 30 Oct 2014 08:51:00 +0900	[thread overview]
Message-ID: <20141029235100.GA4599@verge.net.au> (raw)
In-Reply-To: <5450D01D.9060701@cogentembedded.com>

On Wed, Oct 29, 2014 at 02:31:41PM +0300, Sergei Shtylyov wrote:
> Hello.
> 
> On 10/29/2014 7:11 AM, Simon Horman wrote:
> 
> >>>>From: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
> 
> >>>>Signed-off-by: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
> >>>>Signed-off-by: Yoshihiro Kaneko <ykaneko0929@gmail.com>
> >>>>---
> 
> >>>>This patch is against master branch of linuxtv.org/media_tree.git.
> 
> >>>>v2 [Yoshihiro Kaneko]
> >>>>* remove unused/useless definition as suggested by Sergei Shtylyov
> 
> >>>    I didn't say it's useless, I just suspected that you missed the necessary
> >>>test somewhere...
> 
> >>Sorry for my inaccurate description.
> 
> >>>>   drivers/media/platform/soc_camera/rcar_vin.c | 9 +++++++++
> >>>>   1 file changed, 9 insertions(+)
> 
> >>>>diff --git a/drivers/media/platform/soc_camera/rcar_vin.c
> >>>>b/drivers/media/platform/soc_camera/rcar_vin.c
> >>>>index 20defcb..cb5e682 100644
> >>>>--- a/drivers/media/platform/soc_camera/rcar_vin.c
> >>>>+++ b/drivers/media/platform/soc_camera/rcar_vin.c
> >>>>@@ -74,6 +74,7 @@
> >>>>   #define VNMC_INF_YUV10_BT656  (2 << 16)
> >>>>   #define VNMC_INF_YUV10_BT601  (3 << 16)
> >>>>   #define VNMC_INF_YUV16                (5 << 16)
> >>>>+#define VNMC_INF_RGB888                (6 << 16)
> >>>>   #define VNMC_VUP              (1 << 10)
> >>>>   #define VNMC_IM_ODD           (0 << 3)
> >>>>   #define VNMC_IM_ODD_EVEN      (1 << 3)
> 
> >>>[...]
> 
> >>>>@@ -331,6 +336,9 @@ static int rcar_vin_setup(struct rcar_vin_priv *priv)
> >>>>         if (output_is_yuv)
> >>>>                 vnmc |= VNMC_BPS;
> >>>>
> >>>>+       if (vnmc & VNMC_INF_RGB888)
> >>>>+               vnmc ^= VNMC_BPS;
> >>>>+
> 
> >>>    Hm, this also changes the behavior for VNMC_INF_YUV16 and
> >>>VNMC_INF_YUV10_BT{601|656}. Is this actually intended?
> 
> >>Probably this code is incorrect.
> >>Thank you for your review.
> 
> >Thanks, I have confirmed with Matsuoka-san that there is a problem here.
> 
> >He has provided the following fix. Could you see about squashing it into
> >the above patch and reposting?
> 
> >From: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
> 
> >[PATCH] media: soc_camera: rcar_vin: Fix bit field check
> 
> >Signed-off-by: Koji Matsuoka <koji.matsuoka.xm@renesas.com>
> 
> >diff --git a/drivers/media/platform/soc_camera/rcar_vin.c b/drivers/media/platform/soc_camera/rcar_vin.c
> >index 013d75c..da62d94 100644
> >--- a/drivers/media/platform/soc_camera/rcar_vin.c
> >+++ b/drivers/media/platform/soc_camera/rcar_vin.c
> >@@ -94,7 +94,7 @@
> >  #define VNMC_INF_YUV8_BT601	(1 << 16)
> >  #define VNMC_INF_YUV16		(5 << 16)
> >  #define VNMC_INF_RGB888		(6 << 16)
> >-#define VNMC_INF_RGB_MASK	(6 << 16)
> >+#define VNMC_INF_MASK		(7 << 16)
> 
>    #define it above VNMC_INF_YUV8_BT656 please.
> 
> >  #define VNMC_VUP		(1 << 10)
> >  #define VNMC_IM_ODD		(0 << 3)
> >  #define VNMC_IM_ODD_EVEN	(1 << 3)
> >@@ -675,7 +675,7 @@ static int rcar_vin_setup(struct rcar_vin_priv *priv)
> >  	if (output_is_yuv)
> >  		vnmc |= VNMC_BPS;
> >
> >-	if (vnmc & VNMC_INF_RGB_MASK)
> >+	if ((vnmc & VNMC_INF_MASK) == VNMC_INF_RGB888)
> 
>    Is he sure it shouldn't be (vnmc & VNMC_INF_RGB888) == VNMC_INF_RGB888 to
> also cover 16-bit RGB666 and 12-bit RGB88?

Nice, I think that is a good idea (although the latter formats aren't
supported by the driver yet, right?).

Its somewhat unobvious how that logic works so perhaps we should add a
comment like this

	/* If input and output use the same colorspace, use bypass mode */
	if (output_is_yuv)
		vnmc |= VNMC_BPS;

	/* The above assumes YUV input, toggle BPS for RGB input.
	 * RGB inputs can be detected by checking that the most-significant
	 * two bits of INF are set. This corresponds to the bits
	 * set in VNMC_INF_RGB888. */
	if ((vnmc & VNMC_INF_RGB888)) == VNMC_INF_RGB888)
		vnmc ^= VNMC_BPS;

  reply	other threads:[~2014-10-29 23:51 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-26 15:31 [PATCH V2] media: soc_camera: rcar_vin: Add preliminary R-Car M2 support Valentine Barshak
2013-12-26 15:31 ` Valentine Barshak
2013-12-26 23:38 ` Laurent Pinchart
2013-12-26 23:38   ` Laurent Pinchart
2014-10-17  7:07 ` [PATCH v2] media: soc_camera: rcar_vin: Add r8a7794, r8a7793 device support Yoshihiro Kaneko
2014-10-17  7:07   ` Yoshihiro Kaneko
2014-10-17  8:01   ` Laurent Pinchart
2014-10-17  8:01     ` Laurent Pinchart
2014-10-17 12:38     ` Simon Horman
2014-10-17 12:38       ` Simon Horman
2014-10-21  5:08 ` [PATCH v2] media: soc_camera: rcar_vin: Add BT.709 24-bit RGB888 input support Yoshihiro Kaneko
2014-10-21  5:08   ` Yoshihiro Kaneko
2014-10-21 10:22   ` Sergei Shtylyov
2014-10-21 10:22     ` Sergei Shtylyov
2014-10-21 11:33     ` Yoshihiro Kaneko
2014-10-21 11:33       ` Yoshihiro Kaneko
2014-10-29  4:11       ` Simon Horman
2014-10-29  4:11         ` Simon Horman
2014-10-29 11:31         ` Sergei Shtylyov
2014-10-29 11:31           ` Sergei Shtylyov
2014-10-29 23:51           ` Simon Horman [this message]
2014-10-29 23:51             ` Simon Horman
2014-10-22  4:05 ` [PATCH v2] media: soc_camera: rcar_vin: Enable VSYNC field toggle mode Yoshihiro Kaneko
2014-10-22  4:05   ` Yoshihiro Kaneko
2014-10-27  7:41   ` Simon Horman
2014-10-27  7:41     ` Simon Horman
2015-03-16 16:11 ` [PATCH v2] media: soc_camera: rcar_vin: Fix wait_for_completion Yoshihiro Kaneko
2015-03-16 16:11   ` Yoshihiro Kaneko

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=20141029235100.GA4599@verge.net.au \
    --to=horms@verge.net.au \
    --cc=g.liakhovetski@gmx.de \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --cc=sergei.shtylyov@cogentembedded.com \
    --cc=ykaneko0929@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.