On Fri, 30 Jan 2009, Kuninori Morimoto wrote: > > Signed-off-by: Kuninori Morimoto <morimoto.kuninori@xxxxxxxxxxx> > Signed-off-by: Magnus Damm <damm@xxxxxxxxxx> > --- > drivers/media/video/sh_mobile_ceu_camera.c | 27 +++++++++++++++++++++++++-- > include/media/sh_mobile_ceu.h | 5 +++-- > 2 files changed, 28 insertions(+), 4 deletions(-) > > diff --git a/drivers/media/video/sh_mobile_ceu_camera.c b/drivers/media/video/sh_mobile_ceu_camera.c > index 9cde91a..07b7b4c 100644 > --- a/drivers/media/video/sh_mobile_ceu_camera.c > +++ b/drivers/media/video/sh_mobile_ceu_camera.c > @@ -101,6 +101,29 @@ struct sh_mobile_ceu_dev { > const struct soc_camera_data_format *camera_fmt; > }; > > +static unsigned long make_bus_param(struct sh_mobile_ceu_dev *pcdev) > +{ > + unsigned long flags; > + > + flags = SOCAM_SLAVE | Guys, are you both sure this should be SLAVE, not MASTER? Have you tested it? Both tw9910 and ov772x register themselves as MASTER and from the datasheet the interface seems to be a typical master parallel to me... I think with this patch you would neither be able to use your driver with tw9910 nor with ov772x... Thanks Guennadi > + SOCAM_PCLK_SAMPLE_RISING | > + SOCAM_HSYNC_ACTIVE_HIGH | > + SOCAM_HSYNC_ACTIVE_LOW | > + SOCAM_VSYNC_ACTIVE_HIGH | > + SOCAM_VSYNC_ACTIVE_LOW; > + > + if (pcdev->pdata->flags & SH_CEU_FLAG_USE_8BIT_BUS) > + flags |= SOCAM_DATAWIDTH_8; > + > + if (pcdev->pdata->flags & SH_CEU_FLAG_USE_16BIT_BUS) > + flags |= SOCAM_DATAWIDTH_16; > + > + if (flags & SOCAM_DATAWIDTH_MASK) > + return flags; > + > + return 0; > +} > + > static void ceu_write(struct sh_mobile_ceu_dev *priv, > unsigned long reg_offs, u32 data) > { > @@ -396,7 +419,7 @@ static int sh_mobile_ceu_set_bus_param(struct soc_camera_device *icd, > > camera_flags = icd->ops->query_bus_param(icd); > common_flags = soc_camera_bus_param_compatible(camera_flags, > - pcdev->pdata->flags); > + make_bus_param(pcdev)); > if (!common_flags) > return -EINVAL; > > @@ -517,7 +540,7 @@ static int sh_mobile_ceu_try_bus_param(struct soc_camera_device *icd) > > camera_flags = icd->ops->query_bus_param(icd); > common_flags = soc_camera_bus_param_compatible(camera_flags, > - pcdev->pdata->flags); > + make_bus_param(pcdev)); > if (!common_flags) > return -EINVAL; > > diff --git a/include/media/sh_mobile_ceu.h b/include/media/sh_mobile_ceu.h > index b5dbefe..0f3524c 100644 > --- a/include/media/sh_mobile_ceu.h > +++ b/include/media/sh_mobile_ceu.h > @@ -1,10 +1,11 @@ > #ifndef __ASM_SH_MOBILE_CEU_H__ > #define __ASM_SH_MOBILE_CEU_H__ > > -#include <media/soc_camera.h> > +#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 */ > > struct sh_mobile_ceu_info { > - unsigned long flags; /* SOCAM_... */ > + unsigned long flags; > }; > > #endif /* __ASM_SH_MOBILE_CEU_H__ */ > -- > 1.5.6.3 > --- 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