V4L/DVB (11837): uvcvideo: Start status polling on device open
authorLaurent Pinchart <laurent.pinchart@skynet.be>
Tue, 19 May 2009 13:08:03 +0000 (10:08 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 16 Jun 2009 21:21:10 +0000 (18:21 -0300)
commit04a37e0f32f9882430bc1899899d2ed91b8aaf5b
tree65af84e6e1165d1878d34c4a3dcefce881f3b955
parentb2d9cc4226fa512aa36fd78738f5069dfce0583d
V4L/DVB (11837): uvcvideo: Start status polling on device open

Most UVC camera include an interrupt endpoint to report control value changes,
video streaming errors and camera button events. The USB controller
continuously polls the interrupt endpoint to retrieve such events. This
prevents the device from being auto-suspended, and thus consumes power.

Reporting video streaming errors don't make sense when the V4L2 device is
closed. Control value changes are probably useless as well if nobody listens to
the events, although caching will probably have to be completely disabled then.
No polling is thus be required when /dev/videoX is not opened.

To enable auto-suspend and save power do not poll the interrupt endpoint until
the device is open. We lose the ability to detect button events if no
application is using the camera.

http://bugzilla.kernel.org/show_bug.cgi?id=11948

Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/uvc/uvc_driver.c
drivers/media/video/uvc/uvc_status.c
drivers/media/video/uvc/uvc_v4l2.c
drivers/media/video/uvc/uvcvideo.h