summaryrefslogtreecommitdiff
path: root/drivers/media/video/mxc_camera.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/mxc_camera.c')
-rw-r--r--drivers/media/video/mxc_camera.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/media/video/mxc_camera.c b/drivers/media/video/mxc_camera.c
index 11390f5829aa..ff8e3a9a468c 100644
--- a/drivers/media/video/mxc_camera.c
+++ b/drivers/media/video/mxc_camera.c
@@ -1,4 +1,4 @@
-
+#define DEBUG
#include <linux/init.h>
#include <linux/module.h>
#include <linux/version.h>
@@ -692,9 +692,13 @@ static int test_platform_param(struct mxc_camera_dev *mxc_cam,
* If requested data width is supported by the platform, use it or any
* possible lower value - i.MXC1 is smart enough to schift bits
*/
+
if (mxc_cam->platform_flags & MXC_CAMERA_DATAWIDTH_15)
*flags |= SOCAM_DATAWIDTH_15 | SOCAM_DATAWIDTH_10 |
SOCAM_DATAWIDTH_8 | SOCAM_DATAWIDTH_4;
+ else if (mxc_cam->platform_flags & MXC_CAMERA_DATAWIDTH_12)
+ *flags |= SOCAM_DATAWIDTH_12 | SOCAM_DATAWIDTH_10 |
+ SOCAM_DATAWIDTH_8 | SOCAM_DATAWIDTH_4;
else if (mxc_cam->platform_flags & MXC_CAMERA_DATAWIDTH_10)
*flags |= SOCAM_DATAWIDTH_10 | SOCAM_DATAWIDTH_8 |
SOCAM_DATAWIDTH_4;
@@ -708,6 +712,11 @@ static int test_platform_param(struct mxc_camera_dev *mxc_cam,
if (!(*flags & SOCAM_DATAWIDTH_15))
return -EINVAL;
break;
+ case 12:
+ if (!(*flags & SOCAM_DATAWIDTH_12)) {
+ return -EINVAL;
+ }
+ break;
case 10:
if (!(*flags & SOCAM_DATAWIDTH_10))
return -EINVAL;
@@ -998,9 +1007,13 @@ static int mxc_camera_set_bus_param(struct soc_camera_device *icd, __u32 pixfmt)
* Make the camera work in widest common mode, we'll take care of
* the rest
*/
+
if (common_flags & SOCAM_DATAWIDTH_15)
common_flags = (common_flags & ~SOCAM_DATAWIDTH_MASK) |
SOCAM_DATAWIDTH_15;
+ else if (common_flags & SOCAM_DATAWIDTH_12)
+ common_flags = (common_flags & ~SOCAM_DATAWIDTH_MASK) |
+ SOCAM_DATAWIDTH_12;
else if (common_flags & SOCAM_DATAWIDTH_10)
common_flags = (common_flags & ~SOCAM_DATAWIDTH_MASK) |
SOCAM_DATAWIDTH_10;
@@ -1125,7 +1138,7 @@ static int __devinit mxc_camera_probe(struct platform_device *pdev)
/* TODO: add other data widths */
if (!(mxc_cam->platform_flags & (MXC_CAMERA_DATAWIDTH_4 |
MXC_CAMERA_DATAWIDTH_8 | MXC_CAMERA_DATAWIDTH_10 |
- MXC_CAMERA_DATAWIDTH_15))) {
+ MXC_CAMERA_DATAWIDTH_12 | MXC_CAMERA_DATAWIDTH_15))) {
/*
* Platform hasn't set available data widths. This is bad.
* Warn and use a default.