Age | Commit message (Collapse) | Author |
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
Restructure the UVC descriptors parsing code to handle multiple streaming
interfaces. The driver now creates a uvc_video_chain instance for each chain
detected in the UVC control interface descriptors, and tries to register one
video device per streaming endpoint.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
As a first step towards multiple streaming interfaces support, reorganize the
driver's data structures to cleanly separate video control and video streaming
data.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
At least one MT6227 model crashes when receiving a GET_DEF request on the
video probe control. As the various models can't be told apart based on the
descriptors, add a PROBE_DEF quirk to avoid sending the GET_DEF request and
enable the quirk for all models.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
To make UVC constants accessible by a future UVC gadget driver, move them from
drivers/media/video/uvc/uvcvideo.h to include/linux/usb/video.h.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
Those constants are not used anymore, remove them.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
In preparation to moving UVC constants to a public location, prefix all
constants with UVC_ to avoid namespace clashes.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
uvcvideo.h redefines class-specific descriptor types already present in
usb/ch9.h. Remove the duplicated definitions and use the ones from usb/ch9.h.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
Setting a new frame format or size will likely change the buffer size required
to store a complete video frame. To avoid a buffer overflow, don't allow
VIDIOC_S_FMT calls when video buffers are already allocated.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
Another device (5986:0241) has been reported to advertise a UVC control it
does not support. Rework the control blacklist to match devices by their
VID:PID instead of trying to be clever about which controls might not be
supported properly.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
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
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
At least 3 Vimicro cameras (0x332d, 0x3410 and 0x3420) fail to return correct
bandwidth information. The first model rounds the value provided by the host
to the nearest supported packet size, while the other two always request the
maximum bandwidth.
Introduce a device quirk to override the value returned by the device with an
estimated bandwidth computed by the driver from the frame size and frame rate,
and enable it for all Vimicro cameras.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
The dynamically allocated input_dev->phys buffer isn't freed when
unregistering the device. As the input layer doesn't provide any release
callback, use a fixed-size buffer inside the uvc_device structure.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
URB buffers for video transfers are sized to UVC_MAX_PACKETS bulk/isochronous
packets by default. If the system is too low on memory try successively
smaller numbers of packets until allocation succeeds.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
Tested-by: Johannes Berg <johannes@sipsolutions.net>
|
|
From: Mauro Carvalho Chehab <mchehab@redhat.com>
Priority: normal
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
Extend the range of supported UVC devices by allowing video output devices
matching the following structure:
TT_STREAMING -> VC_PROCESSING_UNIT -> VC_EXTENSION_UNIT{0,n} -> OTT_*
Video output devices are reported with the V4L2_CAP_VIDEO_OUTPUT capability
flag and are subject to the same restrictions as video input devices.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
Add support for absolute and continuous zoom controls (mapped to absolute
and relative UVC zoom controls).
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
Bogus controls currently include processing unit auto controls for which no
corresponding manual control is available. Such auto controls make little
sense if any, and are known to crash at least the SiGma Micro webcam.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
The driver drops incomplete uncompressed video frames to avoid confusing
userspace with corrupt data. Add a nodrop module parameter to turn that
behaviour off and make all frames available to userspace.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
When used in userspace code, the uvcvideo.h header shouldn't pull compat.h.
Make sure this won't happen by moving the #include to a __KERNEL__ protected
section.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Hans Verkuil <hverkuil@xs4all.nl>
Introduce a struct v4l2_file_operations for v4l2 drivers.
Remove the unnecessary inode argument.
Move compat32 handling (and llseek) into the v4l2-dev core: this is now
handled in the v4l2 core and no longer in the drivers themselves.
Note that this changeset reverts an earlier patch that changed the return
type of__video_ioctl2 from int to long. This change will be reinstated
later in a much improved version.
Priority: normal
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
The uvcvideo driver makes use of the usb_endpoint_* functions as well as
the list_first_entry and uninitialized_var macros. Add them to v4l/compat.h
and update the driver with kernel version-based conditional compilation
sections.
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
Failed requests will now generate a one-time warning message instead of the
usual "Failed to query..." error, which should be more user-friendly. The
driver will also recover automatically from failed GET_MIN/GET_MAX requests
when the device is half-broken without requiring the MINMAX quirk (fully
broken devices still need the quirk).
Priority: normal
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
|
|
From: Ming Lei <tom.leiming@gmail.com>
The status[] is part of uvc_device structure. We can't make sure
the address of status is at a cache-line boundary in all archs,so
status[] might share a cache-line with some fields in uvc_structure.
This can lead to some cache coherence issues(http://lwn.net/Articles/2265/).
Use dynamically allocated buffer instead.
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Acked-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
|
|
From: Laurent Pinchart <laurent.pinchart@skynet.be>
All submitted URBs must be killed at suspend time, but URB buffers don't have
to be freed. Avoiding a free on suspend/reallocate on resume lowers the presure
on system memory.
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
|
|
USB Video Class driver
This driver supports video input devices compliant with the USB Video Class
specification. This means lots of currently manufactured webcams, and probably
most of the future ones.
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Notice: Due to MAINTAINERS file that isn't at mercurial tree, I've
committed it on my -git and backported to -hg.
kernel-sync:
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
|