diff options
-rw-r--r-- | drivers/media/video/sh_mobile_ceu_camera.c | 17 | ||||
-rw-r--r-- | include/media/sh_mobile_ceu.h | 2 |
2 files changed, 19 insertions, 0 deletions
diff --git a/drivers/media/video/sh_mobile_ceu_camera.c b/drivers/media/video/sh_mobile_ceu_camera.c index df8dc1dde19f..a610a571432a 100644 --- a/drivers/media/video/sh_mobile_ceu_camera.c +++ b/drivers/media/video/sh_mobile_ceu_camera.c | |||
@@ -687,6 +687,23 @@ static int sh_mobile_ceu_set_bus_param(struct soc_camera_device *icd, | |||
687 | if (!common_flags) | 687 | if (!common_flags) |
688 | return -EINVAL; | 688 | return -EINVAL; |
689 | 689 | ||
690 | /* Make choises, based on platform preferences */ | ||
691 | if ((common_flags & SOCAM_HSYNC_ACTIVE_HIGH) && | ||
692 | (common_flags & SOCAM_HSYNC_ACTIVE_LOW)) { | ||
693 | if (pcdev->pdata->flags & SH_CEU_FLAG_HSYNC_LOW) | ||
694 | common_flags &= ~SOCAM_HSYNC_ACTIVE_HIGH; | ||
695 | else | ||
696 | common_flags &= ~SOCAM_HSYNC_ACTIVE_LOW; | ||
697 | } | ||
698 | |||
699 | if ((common_flags & SOCAM_VSYNC_ACTIVE_HIGH) && | ||
700 | (common_flags & SOCAM_VSYNC_ACTIVE_LOW)) { | ||
701 | if (pcdev->pdata->flags & SH_CEU_FLAG_VSYNC_LOW) | ||
702 | common_flags &= ~SOCAM_VSYNC_ACTIVE_HIGH; | ||
703 | else | ||
704 | common_flags &= ~SOCAM_VSYNC_ACTIVE_LOW; | ||
705 | } | ||
706 | |||
690 | ret = icd->ops->set_bus_param(icd, common_flags); | 707 | ret = icd->ops->set_bus_param(icd, common_flags); |
691 | if (ret < 0) | 708 | if (ret < 0) |
692 | return ret; | 709 | return ret; |
diff --git a/include/media/sh_mobile_ceu.h b/include/media/sh_mobile_ceu.h index 0f3524cff435..b67747836878 100644 --- a/include/media/sh_mobile_ceu.h +++ b/include/media/sh_mobile_ceu.h | |||
@@ -3,6 +3,8 @@ | |||
3 | 3 | ||
4 | #define SH_CEU_FLAG_USE_8BIT_BUS (1 << 0) /* use 8bit bus width */ | 4 | #define SH_CEU_FLAG_USE_8BIT_BUS (1 << 0) /* use 8bit bus width */ |
5 | #define SH_CEU_FLAG_USE_16BIT_BUS (1 << 1) /* use 16bit bus width */ | 5 | #define SH_CEU_FLAG_USE_16BIT_BUS (1 << 1) /* use 16bit bus width */ |
6 | #define SH_CEU_FLAG_HSYNC_LOW (1 << 2) /* default High if possible */ | ||
7 | #define SH_CEU_FLAG_VSYNC_LOW (1 << 3) /* default High if possible */ | ||
6 | 8 | ||
7 | struct sh_mobile_ceu_info { | 9 | struct sh_mobile_ceu_info { |
8 | unsigned long flags; | 10 | unsigned long flags; |