From: Josh Wu <josh.wu@atmel.com>
To: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Cc: Linux Media Mailing List <linux-media@vger.kernel.org>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Mauro Carvalho Chehab <mchehab@osg.samsung.com>,
<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/2] media: atmel-isi: setup the ISI_CFG2 register directly
Date: Mon, 31 Aug 2015 18:53:29 +0800 [thread overview]
Message-ID: <55E43229.2@atmel.com> (raw)
In-Reply-To: <Pine.LNX.4.64.1508301019340.29683@axis700.grange>
Hi, Guennadi
Thanks for the review.
On 8/30/2015 4:48 PM, Guennadi Liakhovetski wrote:
> Hi Josh,
>
> On Wed, 17 Jun 2015, Josh Wu wrote:
>
>> In the function configure_geometry(), we will setup the ISI CFG2
>> according to the sensor output format.
>>
>> It make no sense to just read back the CFG2 register and just set part
>> of it.
>>
>> So just set up this register directly makes things simpler.
> Simpler doesn't necessarily mean better or more correct:) There are other
> fields in that register and currently the driver preserves them, with this
> patch you overwrite them with 0. 0 happens to be the reset value of that
> register. So, you should at least mention that in this patch description,
> just saying "simpler" doesn't convince me.
Correct, I should mention that the reset value (0) of cfg2 means the YUV
mode in the commit message.
To use YUV mode we need to clear COL_SPACE (bit 15 of CFG2) and since
the reset value is 0, so in the code, I didn't need do anything.
> So, at least I'd modify that, I
> can do that myself. But in general I'm not even sure why this patch is
> needed. Yes, currently those fields of that register are unused, so, we
> can assume they stay at their reset values. But firstly the hardware can
> change and at some point the reset value can change, or those other fields
> will get set indirectly by something. Or the driver will change at some
> point to support more fields of that register and then this code will have
> to be changed again.
I understand your concern.
maybe a better solution is explicitly set the COL_SPACE (bit 15) to 0
for the YUV formats. like:
#define ISI_CFG2_COL_SPACE_YUV (0 << 15)
case MEDIA_BUS_FMT_YVYU8_2X8:
cfg2 = ISI_CFG2_COL_SPACE_YUV | ISI_CFG2_YCC_SWAP_MODE_1;
break;
And above modifications can be sent with RGB format support patch in future.
> So, I'd ask you again - do you really want this
> patch?
yes, this patch is needed. And in future i will add the RGB format settings.
> If you insist - I'll take it, but I'd add the "reset value"
> reasoning.
That would be great, thank you very much.
Best Regards,
Josh Wu
> Otherwise maybe just drop it?
>
> Thanks
> Guennadi
>
>> Currently only support YUV format from camera sensor.
>>
>> Signed-off-by: Josh Wu <josh.wu@atmel.com>
>> ---
>>
>> drivers/media/platform/soc_camera/atmel-isi.c | 20 +++++++-------------
>> 1 file changed, 7 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/media/platform/soc_camera/atmel-isi.c b/drivers/media/platform/soc_camera/atmel-isi.c
>> index 9070172..8bc40ca 100644
>> --- a/drivers/media/platform/soc_camera/atmel-isi.c
>> +++ b/drivers/media/platform/soc_camera/atmel-isi.c
>> @@ -105,24 +105,25 @@ static u32 isi_readl(struct atmel_isi *isi, u32 reg)
>> static int configure_geometry(struct atmel_isi *isi, u32 width,
>> u32 height, u32 code)
>> {
>> - u32 cfg2, cr;
>> + u32 cfg2;
>>
>> + /* According to sensor's output format to set cfg2 */
>> switch (code) {
>> /* YUV, including grey */
>> case MEDIA_BUS_FMT_Y8_1X8:
>> - cr = ISI_CFG2_GRAYSCALE;
>> + cfg2 = ISI_CFG2_GRAYSCALE;
>> break;
>> case MEDIA_BUS_FMT_VYUY8_2X8:
>> - cr = ISI_CFG2_YCC_SWAP_MODE_3;
>> + cfg2 = ISI_CFG2_YCC_SWAP_MODE_3;
>> break;
>> case MEDIA_BUS_FMT_UYVY8_2X8:
>> - cr = ISI_CFG2_YCC_SWAP_MODE_2;
>> + cfg2 = ISI_CFG2_YCC_SWAP_MODE_2;
>> break;
>> case MEDIA_BUS_FMT_YVYU8_2X8:
>> - cr = ISI_CFG2_YCC_SWAP_MODE_1;
>> + cfg2 = ISI_CFG2_YCC_SWAP_MODE_1;
>> break;
>> case MEDIA_BUS_FMT_YUYV8_2X8:
>> - cr = ISI_CFG2_YCC_SWAP_DEFAULT;
>> + cfg2 = ISI_CFG2_YCC_SWAP_DEFAULT;
>> break;
>> /* RGB, TODO */
>> default:
>> @@ -130,17 +131,10 @@ static int configure_geometry(struct atmel_isi *isi, u32 width,
>> }
>>
>> isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS);
>> -
>> - cfg2 = isi_readl(isi, ISI_CFG2);
>> - /* Set YCC swap mode */
>> - cfg2 &= ~ISI_CFG2_YCC_SWAP_MODE_MASK;
>> - cfg2 |= cr;
>> /* Set width */
>> - cfg2 &= ~(ISI_CFG2_IM_HSIZE_MASK);
>> cfg2 |= ((width - 1) << ISI_CFG2_IM_HSIZE_OFFSET) &
>> ISI_CFG2_IM_HSIZE_MASK;
>> /* Set height */
>> - cfg2 &= ~(ISI_CFG2_IM_VSIZE_MASK);
>> cfg2 |= ((height - 1) << ISI_CFG2_IM_VSIZE_OFFSET)
>> & ISI_CFG2_IM_VSIZE_MASK;
>> isi_writel(isi, ISI_CFG2, cfg2);
>> --
>> 1.9.1
>>
prev parent reply other threads:[~2015-08-31 10:53 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-17 10:39 [PATCH 1/2] media: atmel-isi: setup the ISI_CFG2 register directly Josh Wu
2015-06-17 10:39 ` [PATCH 2/2] media: atmel-isi: move configure_geometry() to start_streaming() Josh Wu
2015-07-31 14:37 ` Laurent Pinchart
2015-08-03 3:56 ` Josh Wu
2015-08-03 13:27 ` Laurent Pinchart
2015-08-04 6:19 ` Josh Wu
2015-08-30 9:26 ` Guennadi Liakhovetski
2015-08-30 10:16 ` Guennadi Liakhovetski
2015-07-31 2:54 ` [PATCH 1/2] media: atmel-isi: setup the ISI_CFG2 register directly Josh Wu
2015-07-31 14:32 ` Laurent Pinchart
2015-08-30 8:48 ` Guennadi Liakhovetski
2015-08-31 10:53 ` Josh Wu [this message]
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=55E43229.2@atmel.com \
--to=josh.wu@atmel.com \
--cc=g.liakhovetski@gmx.de \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@osg.samsung.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.