aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/uvc
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2010-03-31 12:29:26 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-05-18 00:52:52 -0300
commited3de6015a920c131fbcc770fb95097fde592d86 (patch)
tree0dcf1e935719a6766fb156c79acb4b6c400b48d4 /drivers/media/video/uvc
parent35a00c41ea8b280cb629503c735daf20cdf0f9f8 (diff)
downloadkernel_samsung_aries-ed3de6015a920c131fbcc770fb95097fde592d86.zip
kernel_samsung_aries-ed3de6015a920c131fbcc770fb95097fde592d86.tar.gz
kernel_samsung_aries-ed3de6015a920c131fbcc770fb95097fde592d86.tar.bz2
V4L/DVB: uvcvideo: Use POLLOUT and POLLWRNORM for output devices
The V4L2 specification requires drivers to use the write events in the file operations poll handler for output devices. The uvcvideo driver erroneously used read events for all devices. Fix this. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/uvc')
-rw-r--r--drivers/media/video/uvc/uvc_queue.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/media/video/uvc/uvc_queue.c b/drivers/media/video/uvc/uvc_queue.c
index 4a925a3..133c78d 100644
--- a/drivers/media/video/uvc/uvc_queue.c
+++ b/drivers/media/video/uvc/uvc_queue.c
@@ -388,8 +388,12 @@ unsigned int uvc_queue_poll(struct uvc_video_queue *queue, struct file *file,
poll_wait(file, &buf->wait, wait);
if (buf->state == UVC_BUF_STATE_DONE ||
- buf->state == UVC_BUF_STATE_ERROR)
- mask |= POLLIN | POLLRDNORM;
+ buf->state == UVC_BUF_STATE_ERROR) {
+ if (queue->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
+ mask |= POLLIN | POLLRDNORM;
+ else
+ mask |= POLLOUT | POLLWRNORM;
+ }
done:
mutex_unlock(&queue->mutex);