OSDN Git Service

usb: gadget: uvc: Move userspace API definition to public header
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Mon, 21 May 2018 08:28:51 +0000 (11:28 +0300)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Thu, 26 Jul 2018 10:33:39 +0000 (13:33 +0300)
The UVC gadget userspace API (V4L2 events and custom ioctls) is defined
in a header internal to the kernel. Move it to a new public header to
make it accessible to userspace.

The UVC_INTF_CONTROL and UVC_INTF_STREAMING macros are not used, so
remove them in the process.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
MAINTAINERS
drivers/usb/gadget/function/uvc.h
include/uapi/linux/usb/g_uvc.h [new file with mode: 0644]

index 0fe4228..37035a0 100644 (file)
@@ -14996,6 +14996,7 @@ L:      linux-usb@vger.kernel.org
 S:     Maintained
 F:     drivers/usb/gadget/function/*uvc*
 F:     drivers/usb/gadget/legacy/webcam.c
+F:     include/uapi/linux/usb/g_uvc.h
 
 USB WIRELESS RNDIS DRIVER (rndis_wlan)
 M:     Jussi Kivilinna <jussi.kivilinna@iki.fi>
index a64e07e..053e4b7 100644 (file)
@@ -9,52 +9,20 @@
 #ifndef _UVC_GADGET_H_
 #define _UVC_GADGET_H_
 
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/usb/ch9.h>
-
-#define UVC_EVENT_FIRST                        (V4L2_EVENT_PRIVATE_START + 0)
-#define UVC_EVENT_CONNECT              (V4L2_EVENT_PRIVATE_START + 0)
-#define UVC_EVENT_DISCONNECT           (V4L2_EVENT_PRIVATE_START + 1)
-#define UVC_EVENT_STREAMON             (V4L2_EVENT_PRIVATE_START + 2)
-#define UVC_EVENT_STREAMOFF            (V4L2_EVENT_PRIVATE_START + 3)
-#define UVC_EVENT_SETUP                        (V4L2_EVENT_PRIVATE_START + 4)
-#define UVC_EVENT_DATA                 (V4L2_EVENT_PRIVATE_START + 5)
-#define UVC_EVENT_LAST                 (V4L2_EVENT_PRIVATE_START + 5)
-
-struct uvc_request_data {
-       __s32 length;
-       __u8 data[60];
-};
-
-struct uvc_event {
-       union {
-               enum usb_device_speed speed;
-               struct usb_ctrlrequest req;
-               struct uvc_request_data data;
-       };
-};
-
-#define UVCIOC_SEND_RESPONSE           _IOW('U', 1, struct uvc_request_data)
-
-#define UVC_INTF_CONTROL               0
-#define UVC_INTF_STREAMING             1
-
-/* ------------------------------------------------------------------------
- * Debugging, printing and logging
- */
-
-#ifdef __KERNEL__
-
 #include <linux/usb.h> /* For usb_endpoint_* */
 #include <linux/usb/composite.h>
 #include <linux/usb/gadget.h>
+#include <linux/usb/g_uvc.h>
 #include <linux/videodev2.h>
 #include <media/v4l2-fh.h>
 #include <media/v4l2-device.h>
 
 #include "uvc_queue.h"
 
+/* ------------------------------------------------------------------------
+ * Debugging, printing and logging
+ */
+
 #define UVC_TRACE_PROBE                                (1 << 0)
 #define UVC_TRACE_DESCR                                (1 << 1)
 #define UVC_TRACE_CONTROL                      (1 << 2)
@@ -184,7 +152,4 @@ extern void uvc_endpoint_stream(struct uvc_device *dev);
 extern void uvc_function_connect(struct uvc_device *uvc);
 extern void uvc_function_disconnect(struct uvc_device *uvc);
 
-#endif /* __KERNEL__ */
-
 #endif /* _UVC_GADGET_H_ */
-
diff --git a/include/uapi/linux/usb/g_uvc.h b/include/uapi/linux/usb/g_uvc.h
new file mode 100644 (file)
index 0000000..3c9ee30
--- /dev/null
@@ -0,0 +1,39 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * g_uvc.h  --  USB Video Class Gadget driver API
+ *
+ * Copyright (C) 2009-2010 Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+ */
+
+#ifndef __LINUX_USB_G_UVC_H
+#define __LINUX_USB_G_UVC_H
+
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/usb/ch9.h>
+
+#define UVC_EVENT_FIRST                        (V4L2_EVENT_PRIVATE_START + 0)
+#define UVC_EVENT_CONNECT              (V4L2_EVENT_PRIVATE_START + 0)
+#define UVC_EVENT_DISCONNECT           (V4L2_EVENT_PRIVATE_START + 1)
+#define UVC_EVENT_STREAMON             (V4L2_EVENT_PRIVATE_START + 2)
+#define UVC_EVENT_STREAMOFF            (V4L2_EVENT_PRIVATE_START + 3)
+#define UVC_EVENT_SETUP                        (V4L2_EVENT_PRIVATE_START + 4)
+#define UVC_EVENT_DATA                 (V4L2_EVENT_PRIVATE_START + 5)
+#define UVC_EVENT_LAST                 (V4L2_EVENT_PRIVATE_START + 5)
+
+struct uvc_request_data {
+       __s32 length;
+       __u8 data[60];
+};
+
+struct uvc_event {
+       union {
+               enum usb_device_speed speed;
+               struct usb_ctrlrequest req;
+               struct uvc_request_data data;
+       };
+};
+
+#define UVCIOC_SEND_RESPONSE           _IOW('U', 1, struct uvc_request_data)
+
+#endif /* __LINUX_USB_G_UVC_H */