From 95099d4622f8cb224d94e314c7a8e0df60b13f87 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Sat, 09 Dec 2023 08:38:01 +0000
Subject: [PATCH] enable docker ppp
---
kernel/drivers/usb/gadget/function/uvc.h | 43 ++++++++++++++++++++++++++++---------------
1 files changed, 28 insertions(+), 15 deletions(-)
diff --git a/kernel/drivers/usb/gadget/function/uvc.h b/kernel/drivers/usb/gadget/function/uvc.h
index 24f00aa..9a5507d 100644
--- a/kernel/drivers/usb/gadget/function/uvc.h
+++ b/kernel/drivers/usb/gadget/function/uvc.h
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0+
+/* SPDX-License-Identifier: GPL-2.0+ */
/*
* uvc_gadget.h -- USB Video Class Gadget driver
*
@@ -11,10 +11,11 @@
#include <linux/list.h>
#include <linux/mutex.h>
+#include <linux/pm_qos.h>
#include <linux/spinlock.h>
#include <linux/usb/composite.h>
#include <linux/videodev2.h>
-#include <linux/pm_qos.h>
+#include <linux/wait.h>
#include <media/v4l2-device.h>
#include <media/v4l2-dev.h>
@@ -25,6 +26,7 @@
struct usb_ep;
struct usb_request;
struct uvc_descriptor_header;
+struct uvc_device;
/* ------------------------------------------------------------------------
* Debugging, printing and logging
@@ -52,32 +54,39 @@
printk(KERN_DEBUG "uvcvideo: " msg); \
} while (0)
-#define uvc_warn_once(dev, warn, msg...) \
- do { \
- if (!test_and_set_bit(warn, &dev->warnings)) \
- printk(KERN_INFO "uvcvideo: " msg); \
- } while (0)
-
-#define uvc_printk(level, msg...) \
- printk(level "uvcvideo: " msg)
+#define uvcg_dbg(f, fmt, args...) \
+ dev_dbg(&(f)->config->cdev->gadget->dev, "%s: " fmt, (f)->name, ##args)
+#define uvcg_info(f, fmt, args...) \
+ dev_info(&(f)->config->cdev->gadget->dev, "%s: " fmt, (f)->name, ##args)
+#define uvcg_warn(f, fmt, args...) \
+ dev_warn(&(f)->config->cdev->gadget->dev, "%s: " fmt, (f)->name, ##args)
+#define uvcg_err(f, fmt, args...) \
+ dev_err(&(f)->config->cdev->gadget->dev, "%s: " fmt, (f)->name, ##args)
/* ------------------------------------------------------------------------
* Driver specific constants
*/
-#define UVC_NUM_REQUESTS 4
#define UVC_MAX_REQUEST_SIZE 64
#define UVC_MAX_EVENTS 4
-#define UVC_MAX_NUM_REQUESTS 8
/* ------------------------------------------------------------------------
* Structures
*/
+struct uvc_request {
+ struct usb_request *req;
+ u8 *req_buffer;
+ struct uvc_video *video;
+#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_NO_GKI)
+ struct completion req_done;
+#endif
+};
struct uvc_video {
+ struct uvc_device *uvc;
struct usb_ep *ep;
+
struct work_struct pump;
- struct workqueue_struct *async_wq;
/* Frame parameters */
u8 bpp;
@@ -87,10 +96,11 @@
unsigned int imagesize;
struct mutex mutex; /* protects frame parameters */
+ unsigned int uvc_num_requests;
+
/* Requests */
unsigned int req_size;
- struct usb_request *req[UVC_MAX_NUM_REQUESTS];
- __u8 *req_buffer[UVC_MAX_NUM_REQUESTS];
+ struct uvc_request *ureq;
struct list_head req_free;
spinlock_t req_lock;
@@ -117,6 +127,8 @@
enum uvc_state state;
struct usb_function func;
struct uvc_video video;
+ bool func_connected;
+ wait_queue_head_t func_connected_queue;
/* for creating and issuing QoS requests */
struct pm_qos_request pm_qos;
@@ -150,6 +162,7 @@
struct uvc_file_handle {
struct v4l2_fh vfh;
struct uvc_video *device;
+ bool is_uvc_app_handle;
};
#define to_uvc_file_handle(handle) \
--
Gitblit v1.6.2