V4L/DVB (10675): soc-camera: extend soc_camera_bus_param_compatible with more tests
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Mon, 23 Feb 2009 15:13:24 +0000 (12:13 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 30 Mar 2009 15:42:53 +0000 (12:42 -0300)
Add data signal polarity, mode, and bus-width tests to
soc_camera_bus_param_compatible().

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
include/media/soc_camera.h

index 7440d9250665489f2699fc1557bc1a7ae655b337..c63a3409ffb77f8833ce8130a231a0220c797e03 100644 (file)
@@ -239,15 +239,19 @@ static inline struct v4l2_queryctrl const *soc_camera_find_qctrl(
 static inline unsigned long soc_camera_bus_param_compatible(
                        unsigned long camera_flags, unsigned long bus_flags)
 {
-       unsigned long common_flags, hsync, vsync, pclk;
+       unsigned long common_flags, hsync, vsync, pclk, data, buswidth, mode;
 
        common_flags = camera_flags & bus_flags;
 
        hsync = common_flags & (SOCAM_HSYNC_ACTIVE_HIGH | SOCAM_HSYNC_ACTIVE_LOW);
        vsync = common_flags & (SOCAM_VSYNC_ACTIVE_HIGH | SOCAM_VSYNC_ACTIVE_LOW);
        pclk = common_flags & (SOCAM_PCLK_SAMPLE_RISING | SOCAM_PCLK_SAMPLE_FALLING);
+       data = common_flags & (SOCAM_DATA_ACTIVE_HIGH | SOCAM_DATA_ACTIVE_LOW);
+       mode = common_flags & (SOCAM_MASTER | SOCAM_SLAVE);
+       buswidth = common_flags & SOCAM_DATAWIDTH_MASK;
 
-       return (!hsync || !vsync || !pclk) ? 0 : common_flags;
+       return (!hsync || !vsync || !pclk || !data || !mode || !buswidth) ? 0 :
+               common_flags;
 }
 
 extern unsigned long soc_camera_apply_sensor_flags(struct soc_camera_link *icl,