diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2010-11-21 17:15:44 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-05-20 09:30:46 -0300 |
commit | 5f7088127e800df2cd5ff08140bdca087ab0fbac (patch) | |
tree | 1ab1b7e3d3581d7b794b5576ff25bc3d47e66739 /drivers/media/video/uvc | |
parent | f411f103822379bab356345430f097bdae3440e5 (diff) |
[media] uvcvideo: Make the API public
Move the public API definitions to include/linux/uvcvideo.h and bump the
version number to 1.1.0. Compatibility with the old API is kept,
application can still be compiled against the private header and will
not break.
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_v4l2.c | 13 | ||||
-rw-r--r-- | drivers/media/video/uvc/uvcvideo.h | 68 |
2 files changed, 37 insertions, 44 deletions
diff --git a/drivers/media/video/uvc/uvc_v4l2.c b/drivers/media/video/uvc/uvc_v4l2.c index 2e2a556d166..6e8aad44c4b 100644 --- a/drivers/media/video/uvc/uvc_v4l2.c +++ b/drivers/media/video/uvc/uvc_v4l2.c @@ -1036,24 +1036,25 @@ static long uvc_v4l2_do_ioctl(struct file *file, unsigned int cmd, void *arg) * UVCIOC_CTRL_GET and UVCIOC_CTRL_SET are deprecated and scheduled for * removal in 2.6.42. */ - case UVCIOC_CTRL_ADD: + case __UVCIOC_CTRL_ADD: uvc_v4l2_ioctl_warn(); return -EEXIST; - case UVCIOC_CTRL_MAP_OLD: + case __UVCIOC_CTRL_MAP_OLD: uvc_v4l2_ioctl_warn(); + case __UVCIOC_CTRL_MAP: case UVCIOC_CTRL_MAP: return uvc_ioctl_ctrl_map(chain, arg, - cmd == UVCIOC_CTRL_MAP_OLD); + cmd == __UVCIOC_CTRL_MAP_OLD); - case UVCIOC_CTRL_GET: - case UVCIOC_CTRL_SET: + case __UVCIOC_CTRL_GET: + case __UVCIOC_CTRL_SET: { struct uvc_xu_control *xctrl = arg; struct uvc_xu_control_query xqry = { .unit = xctrl->unit, .selector = xctrl->selector, - .query = cmd == UVCIOC_CTRL_GET + .query = cmd == __UVCIOC_CTRL_GET ? UVC_GET_CUR : UVC_SET_CUR, .size = xctrl->size, .data = xctrl->data, diff --git a/drivers/media/video/uvc/uvcvideo.h b/drivers/media/video/uvc/uvcvideo.h index cd58ea81320..38dd4e18a2c 100644 --- a/drivers/media/video/uvc/uvcvideo.h +++ b/drivers/media/video/uvc/uvcvideo.h @@ -4,6 +4,14 @@ #include <linux/kernel.h> #include <linux/videodev2.h> +#ifndef __KERNEL__ +/* + * This header provides binary compatibility with applications using the private + * uvcvideo API. This API is deprecated and will be removed in 2.6.42. + * Applications should be recompiled against the public linux/uvcvideo.h header. + */ +#warn "The uvcvideo.h header is deprecated, use linux/uvcvideo.h instead." + /* * Dynamic controls */ @@ -17,23 +25,6 @@ #define UVC_CTRL_DATA_TYPE_BITMASK 5 /* Control flags */ -#define UVC_CTRL_FLAG_SET_CUR (1 << 0) -#define UVC_CTRL_FLAG_GET_CUR (1 << 1) -#define UVC_CTRL_FLAG_GET_MIN (1 << 2) -#define UVC_CTRL_FLAG_GET_MAX (1 << 3) -#define UVC_CTRL_FLAG_GET_RES (1 << 4) -#define UVC_CTRL_FLAG_GET_DEF (1 << 5) -/* Control should be saved at suspend and restored at resume. */ -#define UVC_CTRL_FLAG_RESTORE (1 << 6) -/* Control can be updated by the camera. */ -#define UVC_CTRL_FLAG_AUTO_UPDATE (1 << 7) - -#define UVC_CTRL_FLAG_GET_RANGE \ - (UVC_CTRL_FLAG_GET_CUR | UVC_CTRL_FLAG_GET_MIN | \ - UVC_CTRL_FLAG_GET_MAX | UVC_CTRL_FLAG_GET_RES | \ - UVC_CTRL_FLAG_GET_DEF) - -/* Old control flags, don't use */ #define UVC_CONTROL_SET_CUR (1 << 0) #define UVC_CONTROL_GET_CUR (1 << 1) #define UVC_CONTROL_GET_MIN (1 << 2) @@ -47,23 +38,11 @@ UVC_CONTROL_GET_MAX | UVC_CONTROL_GET_RES | \ UVC_CONTROL_GET_DEF) -struct uvc_xu_control_info { - __u8 entity[16]; - __u8 index; - __u8 selector; - __u16 size; - __u32 flags; -}; - struct uvc_menu_info { __u32 value; __u8 name[32]; }; -struct uvc_xu_control_mapping_old { - __u8 reserved[64]; -}; - struct uvc_xu_control_mapping { __u32 id; __u8 name[32]; @@ -81,32 +60,46 @@ struct uvc_xu_control_mapping { __u32 reserved[4]; }; -struct uvc_xu_control { - __u8 unit; +#endif + +struct uvc_xu_control_info { + __u8 entity[16]; + __u8 index; __u8 selector; __u16 size; - __u8 __user *data; + __u32 flags; }; -struct uvc_xu_control_query { +struct uvc_xu_control_mapping_old { + __u8 reserved[64]; +}; + +struct uvc_xu_control { __u8 unit; __u8 selector; - __u8 query; __u16 size; __u8 __user *data; }; +#ifndef __KERNEL__ #define UVCIOC_CTRL_ADD _IOW('U', 1, struct uvc_xu_control_info) #define UVCIOC_CTRL_MAP_OLD _IOWR('U', 2, struct uvc_xu_control_mapping_old) #define UVCIOC_CTRL_MAP _IOWR('U', 2, struct uvc_xu_control_mapping) #define UVCIOC_CTRL_GET _IOWR('U', 3, struct uvc_xu_control) #define UVCIOC_CTRL_SET _IOW('U', 4, struct uvc_xu_control) -#define UVCIOC_CTRL_QUERY _IOWR('U', 5, struct uvc_xu_control_query) +#else +#define __UVCIOC_CTRL_ADD _IOW('U', 1, struct uvc_xu_control_info) +#define __UVCIOC_CTRL_MAP_OLD _IOWR('U', 2, struct uvc_xu_control_mapping_old) +#define __UVCIOC_CTRL_MAP _IOWR('U', 2, struct uvc_xu_control_mapping) +#define __UVCIOC_CTRL_GET _IOWR('U', 3, struct uvc_xu_control) +#define __UVCIOC_CTRL_SET _IOW('U', 4, struct uvc_xu_control) +#endif #ifdef __KERNEL__ #include <linux/poll.h> #include <linux/usb/video.h> +#include <linux/uvcvideo.h> /* -------------------------------------------------------------------------- * UVC constants @@ -184,8 +177,8 @@ struct uvc_xu_control_query { * Driver specific constants. */ -#define DRIVER_VERSION_NUMBER KERNEL_VERSION(1, 0, 0) -#define DRIVER_VERSION "v1.0.0" +#define DRIVER_VERSION_NUMBER KERNEL_VERSION(1, 1, 0) +#define DRIVER_VERSION "v1.1.0" /* Number of isochronous URBs. */ #define UVC_URBS 5 @@ -682,4 +675,3 @@ void uvc_video_decode_isight(struct urb *urb, struct uvc_streaming *stream, #endif /* __KERNEL__ */ #endif - |