[PATCH 4/5] ispccdc: Configure CCDC_SYN_MODE register for UYVY8_2X8 and YUYV8_2X8 formats
Ravi, Deepthy
deepthy.ravi at ti.com
Fri Sep 23 07:53:39 EDT 2011
> ________________________________________
> From: Laurent Pinchart [laurent.pinchart at ideasonboard.com]
> Sent: Wednesday, September 21, 2011 2:36 PM
> To: Ravi, Deepthy
> Cc: mchehab at infradead.org; tony at atomide.com; Hiremath, Vaibhav; linux-media at vger.kernel.org; linux at arm.linux.org.uk; linux-arm-kernel at lists.infradead.org; kyungmin.park at samsung.com; hverkuil at xs4all.nl; m.szyprowski at samsung.com; g.liakhovetski at gmx.de; Shilimkar, Santosh; khilman at deeprootsystems.com; david.woodhouse at intel.com; akpm at linux-foundation.org; linux-kernel at vger.kernel.org; linux-omap at vger.kernel.org; Sakari Ailus
> Subject: Re: [PATCH 4/5] ispccdc: Configure CCDC_SYN_MODE register for UYVY8_2X8 and YUYV8_2X8 formats
>
> Hi Deepthy,
>
> On Wednesday 21 September 2011 07:32:44 Ravi, Deepthy wrote:
>> On Wednesday, September 21, 2011 4:56 AM Laurent Pinchart wrote:
>> > On Tuesday 20 September 2011 16:56:51 Deepthy Ravi wrote:
>> >> Configure INPMOD and PACK8 fileds of CCDC_SYN_MODE
>> >> register for UYVY8_2X8 and YUYV8_2X8 formats.
>> >>
>> >> Signed-off-by: Deepthy Ravi <deepthy.ravi at ti.com>
>> >> ---
>> >>
>> >> drivers/media/video/omap3isp/ispccdc.c | 11 ++++++++---
>> >> 1 files changed, 8 insertions(+), 3 deletions(-)
>> >>
>> >> diff --git a/drivers/media/video/omap3isp/ispccdc.c
>> >> b/drivers/media/video/omap3isp/ispccdc.c index 418ba65..1dcf180 100644
>> >> --- a/drivers/media/video/omap3isp/ispccdc.c
>> >> +++ b/drivers/media/video/omap3isp/ispccdc.c
>> >> @@ -985,8 +985,12 @@ static void ccdc_config_sync_if(struct
>> >> isp_ccdc_device
>> >> *ccdc,
>> >>
>> >> syn_mode &= ~ISPCCDC_SYN_MODE_INPMOD_MASK;
>> >> if (format->code == V4L2_MBUS_FMT_YUYV8_2X8 ||
>> >>
>> >> - format->code == V4L2_MBUS_FMT_UYVY8_2X8)
>> >> - syn_mode |= ISPCCDC_SYN_MODE_INPMOD_YCBCR8;
>> >> + format->code == V4L2_MBUS_FMT_UYVY8_2X8){
>> >> + if (pdata && pdata->bt656)
>> >> + syn_mode |= ISPCCDC_SYN_MODE_INPMOD_YCBCR8;
>> >> + else
>> >> + syn_mode |= ISPCCDC_SYN_MODE_INPMOD_YCBCR16;
>> >> + }
>> >>
>> >> else if (format->code == V4L2_MBUS_FMT_YUYV8_1X16 ||
>> >>
>> >> format->code == V4L2_MBUS_FMT_UYVY8_1X16)
>> >>
>> >> syn_mode |= ISPCCDC_SYN_MODE_INPMOD_YCBCR16;
>> >>
>> >> @@ -1172,7 +1176,8 @@ static void ccdc_configure(struct isp_ccdc_device
>> >> *ccdc) syn_mode &= ~ISPCCDC_SYN_MODE_SDR2RSZ;
>> >>
>> >> /* Use PACK8 mode for 1byte per pixel formats. */
>> >>
>> >> - if (omap3isp_video_format_info(format->code)->width <= 8)
>> >> + if ((omap3isp_video_format_info(format->code)->width <= 8) &&
>> >> + (omap3isp_video_format_info(format->code)->bpp <=
>> >> 8))
>> >
>> > I'm not sure to follow you. This will clear the PACK8 bit for the
>> > YUYV8_2X8 formats. Those formats are 8 bits wide, shouldn't PACK8 be set
>> > to store samples on 8 bits instead of 16 bits ?
>> >
>> > Is this patch intended to support YUYV8_2X8 sensors in non BT.656 mode
>> > with the bridge enabled ? In that case, what would you think about setting
>> > the CCDC input format to YUYV8_1X16 instead ? This would better reflect
>> > the reality, as the bridge converts YUYV8_2X8 to YUYV8_1X16, and the CCDC
>> > is then fed with YUYV8_1X16.
>>
>> Yes this is intended for YUYV8_2X8 sensors in non BT.656 with 8 to 16 bit
>> bridge enabled. So the data has to be stored as 16 bits per sample. Thats
>> why PACK8 is cleared . I am not sure about using YUYV8_1X16.
>
> My original idea when I wrote the YV support patches was to implement this use
> case with YUYV8_2X8 at the sensor output and YUYV8_1X16 at the CCDC input. The
> ISP driver could then enable the bridge automatically. I'm not sure if that's
> the best solution though, it might be confusing for the users. What I would
> like to keep, however, is the idea of enabling the bridge automatically.
>
[Deepthy Ravi] But for streaming to start, the formats on both ends of the link should match. I believe setting different formats at sensor output and ccdc input will give a broken pipe error. Is my understanding correct ? If so, how do you propose to handle the situation ?
> Sakari, any opinion on this ?
>
>> >> syn_mode |= ISPCCDC_SYN_MODE_PACK8;
>> >> else
>> >> syn_mode &= ~ISPCCDC_SYN_MODE_PACK8;
>
> --
> Regards,
>
> Laurent Pinchart
>
More information about the linux-arm-kernel
mailing list