camera and uvc: fix camera power gpio request may be failed, uvc driver support
authorddl <ddl@rockchip.com>
Thu, 4 Aug 2011 09:31:36 +0000 (17:31 +0800)
committerddl <ddl@rockchip.com>
Thu, 4 Aug 2011 09:31:36 +0000 (17:31 +0800)
drivers/media/video/rk29_camera.c
drivers/media/video/rk29_camera_oneframe.c
drivers/media/video/uvc/uvc_queue.c

index 04e6df1d3a1e7897934ced922c3f940f8a62d919..ac95527486c5e53095cd29f2b5e2979a8c7fef0b 100755 (executable)
@@ -270,8 +270,14 @@ static int rk29_sensor_io_init(void)
 
         if (camera_power != INVALID_GPIO) {
             ret = gpio_request(camera_power, "camera power");
-            if (ret)
-                               goto sensor_io_int_loop_end;
+            if (ret) {\r
+                if (i == 0) {\r
+                                   goto sensor_io_int_loop_end;\r
+                } else {\r
+                    if (camera_power != rk29_camera_platform_data.gpio_res[0].gpio_power)\r
+                        goto sensor_io_int_loop_end;\r
+                }\r
+            }\r
                        rk29_camera_platform_data.gpio_res[i].gpio_init |= RK29_CAM_POWERACTIVE_MASK;
             gpio_set_value(camera_reset, (((~camera_ioflag)&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));
             gpio_direction_output(camera_power, (((~camera_ioflag)&RK29_CAM_POWERACTIVE_MASK)>>RK29_CAM_POWERACTIVE_BITPOS));
index 89a0ac76f93a7ce1885cfb624a3379443e3c4545..4365f771a005403c878a24de4ea5f627883fe63b 100755 (executable)
@@ -48,7 +48,7 @@ module_param(debug, int, S_IRUGO|S_IWUSR);
        printk(KERN_WARNING"rk29xx_camera: " fmt , ## arg); } while (0)
 
 #define RK29CAMERA_TR(format, ...) printk(KERN_ERR format, ## __VA_ARGS__)
-#define RK29CAMERA_DG(format, ...) dprintk(0, format, ## __VA_ARGS__)
+#define RK29CAMERA_DG(format, ...) dprintk(1, format, ## __VA_ARGS__)
 
 // VIP Reg Offset
 #define RK29_VIP_AHBR_CTRL                0x00
index eb28da71e48b5a29e4aafc3c070afa6ab9b8f8e1..6fc6324efaceca0509acdc8dc3be98681dd726dd 100644 (file)
@@ -315,8 +315,9 @@ static int uvc_queue_waiton(struct uvc_buffer *buf, int nonblocking)
        return wait_event_interruptible_timeout(buf->wait,
                buf->state != UVC_BUF_STATE_QUEUED &&
                buf->state != UVC_BUF_STATE_ACTIVE &&
-               buf->state != UVC_BUF_STATE_READYi,
-               msecs_to_jiffies(800);
+               buf->state != UVC_BUF_STATE_READY,
+               msecs_to_jiffies(800));
+#endif
 }
 
 /*