Re: [PATCH v2 2/2] sh_mobile_ceu: Add field signal operation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'll hold off on both these SOCAM_FIELD_ID_* patches until we have 
clarified this, ok?

Thanks
Guennadi

On Thu, 5 Feb 2009, Guennadi Liakhovetski wrote:

> On Tue, 3 Feb 2009, Kuninori Morimoto wrote:
> 
> > sh_mobile_ceu can support "field signal" from external module.
> > To support this operation, SH_CEU_FLAG_USE_FLDID_{HIGH, LOW}
> > are added to header.
> 
> I never dealt with interlaced video, so, I probably just don't understand 
> something, please explain. I understand the Field ID signal is optional, 
> and, if used, it can be either active high or low. But who gets to decide 
> which polarity is applicable in a specific case? The platform? Is it not 
> like with other control signals, where if both partners are freely 
> configurable, then any polarity can be used; if one is configurable and 
> another is hard-wired, only one polarity can be used. And as long as the 
> signal is available (connected), the platform has no further influence on 
> its use? Ok, there can be an inverter there, but that we can handle too.
> 
> So, wouldn't something like
> 
> +	if (pcdev->pdata->flags & SH_CEU_FLAG_USE_FLDID)
> +		flags |= SOCAM_FIELD_ID_ACTIVE_HIGH | SOCAM_FIELD_ID_ACTIVE_LOW;
> +
> 
> ...
> 
> +	if (common_flags & (SOCAM_FIELD_ID_ACTIVE_HIGH | SOCAM_FIELD_ID_ACTIVE_LOW) ==
> +	    SOCAM_FIELD_ID_ACTIVE_LOW)
> +		/* The client only supports active low field ID */
> +		value |= 1 << 16;
> +	/* Otherwise we are free to choose, leave default active high */
> 
> Or does Field ID work differently?
> 
> And what do you do, if the platform doesn't specify SH_CEU_FLAG_USE_FLDID, 
> i.e., it is not connected, but the client does? Or the other way round? In 
> other words, is it a working configuration, when one of the partners 
> provides this signal and the other one doesn't? I guess it is, because, 
> you say, it is optional. So we shouldn't test it in 
> soc_camera_bus_param_compatible()?
> 
> Thanks
> Guennadi
> 
> > 
> > Signed-off-by: Kuninori Morimoto <morimoto.kuninori@xxxxxxxxxxx>
> > ---
> > v1 -> v2
> > o field name fix
> > 
> >  drivers/media/video/sh_mobile_ceu_camera.c |    7 +++++++
> >  include/media/sh_mobile_ceu.h              |    2 ++
> >  2 files changed, 9 insertions(+), 0 deletions(-)
> > 
> > diff --git a/drivers/media/video/sh_mobile_ceu_camera.c b/drivers/media/video/sh_mobile_ceu_camera.c
> > index aa20745..1f746e1 100644
> > --- a/drivers/media/video/sh_mobile_ceu_camera.c
> > +++ b/drivers/media/video/sh_mobile_ceu_camera.c
> > @@ -118,6 +118,12 @@ static unsigned long make_bus_param(struct sh_mobile_ceu_dev *pcdev)
> >  	if (pcdev->pdata->flags & SH_CEU_FLAG_USE_16BIT_BUS)
> >  		flags |= SOCAM_DATAWIDTH_16;
> >  
> > +	if (pcdev->pdata->flags & SH_CEU_FLAG_USE_FLDID_HIGH)
> > +		flags |= SOCAM_FIELD_ID_ACTIVE_HIGH;
> > +
> > +	if (pcdev->pdata->flags & SH_CEU_FLAG_USE_FLDID_LOW)
> > +		flags |= SOCAM_FIELD_ID_ACTIVE_LOW;
> > +
> >  	if (flags & SOCAM_DATAWIDTH_MASK)
> >  		return flags;
> >  
> > @@ -474,6 +480,7 @@ static int sh_mobile_ceu_set_bus_param(struct soc_camera_device *icd,
> >  	    icd->current_fmt->fourcc == V4L2_PIX_FMT_NV61)
> >  		value ^= 0x00000100; /* swap U, V to change from NV1x->NVx1 */
> >  
> > +	value |= common_flags & SOCAM_FIELD_ID_ACTIVE_LOW ? 1 << 16 : 0;
> >  	value |= common_flags & SOCAM_VSYNC_ACTIVE_LOW ? 1 << 1 : 0;
> >  	value |= common_flags & SOCAM_HSYNC_ACTIVE_LOW ? 1 << 0 : 0;
> >  	value |= buswidth == 16 ? 1 << 12 : 0;
> > diff --git a/include/media/sh_mobile_ceu.h b/include/media/sh_mobile_ceu.h
> > index 0f3524c..8da9437 100644
> > --- a/include/media/sh_mobile_ceu.h
> > +++ b/include/media/sh_mobile_ceu.h
> > @@ -3,6 +3,8 @@
> >  
> >  #define SH_CEU_FLAG_USE_8BIT_BUS	(1 << 0) /* use  8bit bus width */
> >  #define SH_CEU_FLAG_USE_16BIT_BUS	(1 << 1) /* use 16bit bus width */
> > +#define SH_CEU_FLAG_USE_FLDID_HIGH	(1 << 2) /* top field if FLD is high */
> > +#define SH_CEU_FLAG_USE_FLDID_LOW	(1 << 3) /* top field if FLD is low */
> >  
> >  struct sh_mobile_ceu_info {
> >  	unsigned long flags;
> > -- 
> > 1.5.6.3
> > 
> 
> ---
> Guennadi Liakhovetski, Ph.D.
> Freelance Open-Source Software Developer
> 

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux