From ba8907ebe1bfaeafaa96fb8615ade4890e2f0dca Mon Sep 17 00:00:00 2001 From: ddl Date: Thu, 4 Aug 2011 17:31:36 +0800 Subject: [PATCH] camera and uvc: fix camera power gpio request may be failed, uvc driver support --- drivers/media/video/rk29_camera.c | 10 ++++++++-- drivers/media/video/rk29_camera_oneframe.c | 2 +- drivers/media/video/uvc/uvc_queue.c | 5 +++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/media/video/rk29_camera.c b/drivers/media/video/rk29_camera.c index 04e6df1d3a1e..ac95527486c5 100755 --- a/drivers/media/video/rk29_camera.c +++ b/drivers/media/video/rk29_camera.c @@ -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) { + if (i == 0) { + goto sensor_io_int_loop_end; + } else { + if (camera_power != rk29_camera_platform_data.gpio_res[0].gpio_power) + goto sensor_io_int_loop_end; + } + } 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)); diff --git a/drivers/media/video/rk29_camera_oneframe.c b/drivers/media/video/rk29_camera_oneframe.c index 89a0ac76f93a..4365f771a005 100755 --- a/drivers/media/video/rk29_camera_oneframe.c +++ b/drivers/media/video/rk29_camera_oneframe.c @@ -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 diff --git a/drivers/media/video/uvc/uvc_queue.c b/drivers/media/video/uvc/uvc_queue.c index eb28da71e48b..6fc6324eface 100644 --- a/drivers/media/video/uvc/uvc_queue.c +++ b/drivers/media/video/uvc/uvc_queue.c @@ -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 } /* -- 2.34.1