media: uvcvideo: Only create input devs if hw supports it
Examine the stream headers to figure out if the device has a button and can be used as an input. Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
41ddb251c6
commit
3bc22dc66a
@ -18,11 +18,34 @@
|
|||||||
* Input device
|
* Input device
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV
|
#ifdef CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV
|
||||||
|
|
||||||
|
static bool uvc_input_has_button(struct uvc_device *dev)
|
||||||
|
{
|
||||||
|
struct uvc_streaming *stream;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The device has button events if both bTriggerSupport and
|
||||||
|
* bTriggerUsage are one. Otherwise the camera button does not
|
||||||
|
* exist or is handled automatically by the camera without host
|
||||||
|
* driver or client application intervention.
|
||||||
|
*/
|
||||||
|
list_for_each_entry(stream, &dev->streams, list) {
|
||||||
|
if (stream->header.bTriggerSupport == 1 &&
|
||||||
|
stream->header.bTriggerUsage == 1)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static int uvc_input_init(struct uvc_device *dev)
|
static int uvc_input_init(struct uvc_device *dev)
|
||||||
{
|
{
|
||||||
struct input_dev *input;
|
struct input_dev *input;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
if (!uvc_input_has_button(dev))
|
||||||
|
return 0;
|
||||||
|
|
||||||
input = input_allocate_device();
|
input = input_allocate_device();
|
||||||
if (input == NULL)
|
if (input == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
Loading…
Reference in New Issue
Block a user