mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-03 23:58:05 +00:00
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
2 changed files with 29 additions and 4 deletions
|
@ -101,6 +101,30 @@ struct sh_mobile_ceu_dev {
|
||||||
const struct soc_camera_data_format *camera_fmt;
|
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,
|
static void ceu_write(struct sh_mobile_ceu_dev *priv,
|
||||||
unsigned long reg_offs, u32 data)
|
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);
|
camera_flags = icd->ops->query_bus_param(icd);
|
||||||
common_flags = soc_camera_bus_param_compatible(camera_flags,
|
common_flags = soc_camera_bus_param_compatible(camera_flags,
|
||||||
pcdev->pdata->flags);
|
make_bus_param(pcdev));
|
||||||
if (!common_flags)
|
if (!common_flags)
|
||||||
return -EINVAL;
|
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);
|
camera_flags = icd->ops->query_bus_param(icd);
|
||||||
common_flags = soc_camera_bus_param_compatible(camera_flags,
|
common_flags = soc_camera_bus_param_compatible(camera_flags,
|
||||||
pcdev->pdata->flags);
|
make_bus_param(pcdev));
|
||||||
if (!common_flags)
|
if (!common_flags)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
#ifndef __ASM_SH_MOBILE_CEU_H__
|
#ifndef __ASM_SH_MOBILE_CEU_H__
|
||||||
#define __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 {
|
struct sh_mobile_ceu_info {
|
||||||
unsigned long flags; /* SOCAM_... */
|
unsigned long flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __ASM_SH_MOBILE_CEU_H__ */
|
#endif /* __ASM_SH_MOBILE_CEU_H__ */
|
||||||
|
|
Loading…
Reference in a new issue