mirror of https://gitee.com/openkylin/linux.git
V4L/DVB (10671): sh_mobile_ceu: SOCAM flags are not platform dependent
sh_mobile_ceu_camera.c support for signal polarity flags isn't platform dependent, provide them locally. Only the bus width is implementation specific. Signed-off-by: Kuninori Morimoto <morimoto.kuninori@renesas.com> Acked-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
1af1b7a2de
commit
c354b400c0
|
@ -101,6 +101,30 @@ 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_MASTER |
|
||||
SOCAM_PCLK_SAMPLE_RISING |
|
||||
SOCAM_HSYNC_ACTIVE_HIGH |
|
||||
SOCAM_HSYNC_ACTIVE_LOW |
|
||||
SOCAM_VSYNC_ACTIVE_HIGH |
|
||||
SOCAM_VSYNC_ACTIVE_LOW |
|
||||
SOCAM_DATA_ACTIVE_HIGH;
|
||||
|
||||
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 +420,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 +541,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;
|
||||
|
||||
|
|
|
@ -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__ */
|
||||
|
|
Loading…
Reference in New Issue