diff options
author | Márton Németh <nm127@freemail.hu> | 2009-04-20 13:51:49 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-16 17:20:37 -0400 |
commit | 2460cdac94082c7046ab595bf643338e6faed6cb (patch) | |
tree | 66135325edd502504a382dd49adfaabc3ad4a7a4 /drivers/media/video/uvc | |
parent | 9086c7b994dcd6d06723bcb48a23af3e3f75e002 (diff) |
V4L/DVB (11574): uvcvideo: fill reserved fields with zero of VIDIOC_QUERYMENU
When querying menu items with VIDIOC_QUERYMENU the reserved field
is not set to zero as required by V4L2 API revision 0.24 [1].
Add this fill.
The patch was tested with v4l-test 0.11 [2] with CNF7129 webcam found
on EeePC 901.
References:
[1] V4L2 API specification, revision 0.24
http://v4l2spec.bytesex.org/spec/r13317.htm#V4L2-QUERYMENU
[2] v4l-test: Test environment for Video For Linux Two API
http://v4l-test.sourceforge.net/
[Modified by Laurent Pinchart]
Use u32 instead of __u32 in non-exported kernel code.
Signed-off-by: Márton Németh <nm127@freemail.hu>
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/uvc')
-rw-r--r-- | drivers/media/video/uvc/uvc_v4l2.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/video/uvc/uvc_v4l2.c b/drivers/media/video/uvc/uvc_v4l2.c index 43b05a7ecdce..ad7e64ff3add 100644 --- a/drivers/media/video/uvc/uvc_v4l2.c +++ b/drivers/media/video/uvc/uvc_v4l2.c | |||
@@ -46,6 +46,8 @@ static int uvc_v4l2_query_menu(struct uvc_video_device *video, | |||
46 | struct uvc_menu_info *menu_info; | 46 | struct uvc_menu_info *menu_info; |
47 | struct uvc_control_mapping *mapping; | 47 | struct uvc_control_mapping *mapping; |
48 | struct uvc_control *ctrl; | 48 | struct uvc_control *ctrl; |
49 | u32 index = query_menu->index; | ||
50 | u32 id = query_menu->id; | ||
49 | 51 | ||
50 | ctrl = uvc_find_control(video, query_menu->id, &mapping); | 52 | ctrl = uvc_find_control(video, query_menu->id, &mapping); |
51 | if (ctrl == NULL || mapping->v4l2_type != V4L2_CTRL_TYPE_MENU) | 53 | if (ctrl == NULL || mapping->v4l2_type != V4L2_CTRL_TYPE_MENU) |
@@ -54,6 +56,10 @@ static int uvc_v4l2_query_menu(struct uvc_video_device *video, | |||
54 | if (query_menu->index >= mapping->menu_count) | 56 | if (query_menu->index >= mapping->menu_count) |
55 | return -EINVAL; | 57 | return -EINVAL; |
56 | 58 | ||
59 | memset(query_menu, 0, sizeof(*query_menu)); | ||
60 | query_menu->id = id; | ||
61 | query_menu->index = index; | ||
62 | |||
57 | menu_info = &mapping->menu_info[query_menu->index]; | 63 | menu_info = &mapping->menu_info[query_menu->index]; |
58 | strlcpy(query_menu->name, menu_info->name, sizeof query_menu->name); | 64 | strlcpy(query_menu->name, menu_info->name, sizeof query_menu->name); |
59 | return 0; | 65 | return 0; |