usb: gadget: function: move u_f.h to include/linux/usb/func_utils.h
authorMichael Grzeschik <m.grzeschik@pengutronix.de>
Sun, 1 Sep 2024 19:11:16 +0000 (21:11 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 Sep 2024 07:57:08 +0000 (09:57 +0200)
We move the func_utils.h header to include/linux/usb to be
able to compile function drivers outside of the
drivers/usb/gadget/function directory.

Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
Link: https://lore.kernel.org/r/20240116-ml-topic-u9p-v12-1-9a27de5160e0@pengutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/configfs.c
drivers/usb/gadget/function/f_fs.c
drivers/usb/gadget/function/f_hid.c
drivers/usb/gadget/function/f_loopback.c
drivers/usb/gadget/function/f_midi.c
drivers/usb/gadget/function/f_midi2.c
drivers/usb/gadget/function/f_sourcesink.c
drivers/usb/gadget/u_f.c
drivers/usb/gadget/u_f.h [deleted file]
include/linux/usb/func_utils.h [new file with mode: 0644]

index 5cba3e8d626c5aeab149e155d8f5387909a03798..c82a6a0fba93ddc34a93c56aa2104241fbac2bdb 100644 (file)
@@ -6,10 +6,10 @@
 #include <linux/kstrtox.h>
 #include <linux/nls.h>
 #include <linux/usb/composite.h>
+#include <linux/usb/func_utils.h>
 #include <linux/usb/gadget_configfs.h>
 #include <linux/usb/webusb.h>
 #include "configfs.h"
-#include "u_f.h"
 #include "u_os_desc.h"
 
 static int check_user_usb_string(const char *name,
index e35177fc6c55dd9e8ec362a75edb8cf6cb2a2b93..05b52e61a66f0e561a6c0f9d50ace1c77ba58752 100644 (file)
@@ -33,6 +33,7 @@
 #include <linux/usb/ccid.h>
 #include <linux/usb/composite.h>
 #include <linux/usb/functionfs.h>
+#include <linux/usb/func_utils.h>
 
 #include <linux/aio.h>
 #include <linux/kthread.h>
@@ -40,7 +41,6 @@
 #include <linux/eventfd.h>
 
 #include "u_fs.h"
-#include "u_f.h"
 #include "u_os_desc.h"
 #include "configfs.h"
 
index 82c7dff6de5c3c22056b95b269c496dd314457fc..740311c4fa2496280fee949755492349ebe74cbb 100644 (file)
 #include <linux/wait.h>
 #include <linux/sched.h>
 #include <linux/workqueue.h>
+#include <linux/usb/func_utils.h>
 #include <linux/usb/g_hid.h>
 #include <uapi/linux/usb/g_hid.h>
 
-#include "u_f.h"
 #include "u_hid.h"
 
 #define HIDG_MINORS    4
index 979b028edb99ef0d4a4dc97bb3bd46c69fd134e8..49b009a7d5d79285c2397c7aebb8c8fcd3b7dafb 100644 (file)
@@ -14,9 +14,9 @@
 #include <linux/module.h>
 #include <linux/err.h>
 #include <linux/usb/composite.h>
+#include <linux/usb/func_utils.h>
 
 #include "g_zero.h"
-#include "u_f.h"
 
 /*
  * LOOPBACK FUNCTION ... a testing vehicle for USB peripherals,
index 67052a664e746de199c61ef2653e1a29e0bd3906..1067847cc07995150368f57fab2469fc81e5ab5f 100644 (file)
 #include <sound/rawmidi.h>
 
 #include <linux/usb/ch9.h>
+#include <linux/usb/func_utils.h>
 #include <linux/usb/gadget.h>
 #include <linux/usb/audio.h>
 #include <linux/usb/midi.h>
 
-#include "u_f.h"
 #include "u_midi.h"
 
 MODULE_AUTHOR("Ben Williamson");
index 3f63253ad3e074e7baf7f95d07173e627893e6cc..8285df9ed6fd781bf6fb1ec2d0c5b27145f6fffb 100644 (file)
 #include <sound/ump_convert.h>
 
 #include <linux/usb/ch9.h>
+#include <linux/usb/func_utils.h>
 #include <linux/usb/gadget.h>
 #include <linux/usb/audio.h>
 #include <linux/usb/midi-v2.h>
 
-#include "u_f.h"
 #include "u_midi2.h"
 
 struct f_midi2;
index 6f3702210450ff421f06b7e424bc0f043ef53f2b..ec5fd25020fdbf007bc474d3b466257275b7c744 100644 (file)
 #include <linux/device.h>
 #include <linux/module.h>
 #include <linux/usb/composite.h>
+#include <linux/usb/func_utils.h>
 #include <linux/err.h>
 
 #include "g_zero.h"
-#include "u_f.h"
 
 /*
  * SOURCE/SINK FUNCTION ... a primary testing vehicle for USB peripheral
index 6aea1ecb399998e872df00d4e561222779231cbb..115d219c9c00cf3ef8a08f0ec32f3cba10e58cbe 100644 (file)
@@ -8,8 +8,8 @@
  * Author: Andrzej Pietrasiewicz <andrzejtp2010@gmail.com>
  */
 
-#include "u_f.h"
 #include <linux/usb/ch9.h>
+#include <linux/usb/func_utils.h>
 
 struct usb_request *alloc_ep_req(struct usb_ep *ep, size_t len)
 {
diff --git a/drivers/usb/gadget/u_f.h b/drivers/usb/gadget/u_f.h
deleted file mode 100644 (file)
index e313c3b..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * u_f.h
- *
- * Utility definitions for USB functions
- *
- * Copyright (c) 2013 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * Author: Andrzej Pietrasiewicz <andrzejtp2010@gmail.com>
- */
-
-#ifndef __U_F_H__
-#define __U_F_H__
-
-#include <linux/usb/gadget.h>
-#include <linux/overflow.h>
-
-/* Variable Length Array Macros **********************************************/
-#define vla_group(groupname) size_t groupname##__next = 0
-#define vla_group_size(groupname) groupname##__next
-
-#define vla_item(groupname, type, name, n) \
-       size_t groupname##_##name##__offset = ({                               \
-               size_t offset = 0;                                             \
-               if (groupname##__next != SIZE_MAX) {                           \
-                       size_t align_mask = __alignof__(type) - 1;             \
-                       size_t size = array_size(n, sizeof(type));             \
-                       offset = (groupname##__next + align_mask) &            \
-                                 ~align_mask;                                 \
-                       if (check_add_overflow(offset, size,                   \
-                                              &groupname##__next)) {          \
-                               groupname##__next = SIZE_MAX;                  \
-                               offset = 0;                                    \
-                       }                                                      \
-               }                                                              \
-               offset;                                                        \
-       })
-
-#define vla_item_with_sz(groupname, type, name, n) \
-       size_t groupname##_##name##__sz = array_size(n, sizeof(type));          \
-       size_t groupname##_##name##__offset = ({                                \
-               size_t offset = 0;                                              \
-               if (groupname##__next != SIZE_MAX) {                            \
-                       size_t align_mask = __alignof__(type) - 1;              \
-                       offset = (groupname##__next + align_mask) &             \
-                                 ~align_mask;                                  \
-                       if (check_add_overflow(offset, groupname##_##name##__sz,\
-                                                       &groupname##__next)) {  \
-                               groupname##__next = SIZE_MAX;                   \
-                               offset = 0;                                     \
-                       }                                                       \
-               }                                                               \
-               offset;                                                         \
-       })
-
-#define vla_ptr(ptr, groupname, name) \
-       ((void *) ((char *)ptr + groupname##_##name##__offset))
-
-struct usb_ep;
-struct usb_request;
-
-/**
- * alloc_ep_req - returns a usb_request allocated by the gadget driver and
- * allocates the request's buffer.
- *
- * @ep: the endpoint to allocate a usb_request
- * @len: usb_requests's buffer suggested size
- *
- * In case @ep direction is OUT, the @len will be aligned to ep's
- * wMaxPacketSize. In order to avoid memory leaks or drops, *always* use
- * usb_requests's length (req->length) to refer to the allocated buffer size.
- * Requests allocated via alloc_ep_req() *must* be freed by free_ep_req().
- */
-struct usb_request *alloc_ep_req(struct usb_ep *ep, size_t len);
-
-/* Frees a usb_request previously allocated by alloc_ep_req() */
-static inline void free_ep_req(struct usb_ep *ep, struct usb_request *req)
-{
-       WARN_ON(req->buf == NULL);
-       kfree(req->buf);
-       req->buf = NULL;
-       usb_ep_free_request(ep, req);
-}
-
-#endif /* __U_F_H__ */
diff --git a/include/linux/usb/func_utils.h b/include/linux/usb/func_utils.h
new file mode 100644 (file)
index 0000000..c8795c9
--- /dev/null
@@ -0,0 +1,86 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * func_utils.h
+ *
+ * Utility definitions for USB functions
+ *
+ * Copyright (c) 2013 Samsung Electronics Co., Ltd.
+ *             http://www.samsung.com
+ *
+ * Author: Andrzej Pietrasiewicz <andrzejtp2010@gmail.com>
+ */
+
+#ifndef _FUNC_UTILS_H_
+#define _FUNC_UTILS_H_
+
+#include <linux/usb/gadget.h>
+#include <linux/overflow.h>
+
+/* Variable Length Array Macros **********************************************/
+#define vla_group(groupname) size_t groupname##__next = 0
+#define vla_group_size(groupname) groupname##__next
+
+#define vla_item(groupname, type, name, n) \
+       size_t groupname##_##name##__offset = ({                               \
+               size_t offset = 0;                                             \
+               if (groupname##__next != SIZE_MAX) {                           \
+                       size_t align_mask = __alignof__(type) - 1;             \
+                       size_t size = array_size(n, sizeof(type));             \
+                       offset = (groupname##__next + align_mask) &            \
+                                 ~align_mask;                                 \
+                       if (check_add_overflow(offset, size,                   \
+                                              &groupname##__next)) {          \
+                               groupname##__next = SIZE_MAX;                  \
+                               offset = 0;                                    \
+                       }                                                      \
+               }                                                              \
+               offset;                                                        \
+       })
+
+#define vla_item_with_sz(groupname, type, name, n) \
+       size_t groupname##_##name##__sz = array_size(n, sizeof(type));          \
+       size_t groupname##_##name##__offset = ({                                \
+               size_t offset = 0;                                              \
+               if (groupname##__next != SIZE_MAX) {                            \
+                       size_t align_mask = __alignof__(type) - 1;              \
+                       offset = (groupname##__next + align_mask) &             \
+                                 ~align_mask;                                  \
+                       if (check_add_overflow(offset, groupname##_##name##__sz,\
+                                                       &groupname##__next)) {  \
+                               groupname##__next = SIZE_MAX;                   \
+                               offset = 0;                                     \
+                       }                                                       \
+               }                                                               \
+               offset;                                                         \
+       })
+
+#define vla_ptr(ptr, groupname, name) \
+       ((void *) ((char *)ptr + groupname##_##name##__offset))
+
+struct usb_ep;
+struct usb_request;
+
+/**
+ * alloc_ep_req - returns a usb_request allocated by the gadget driver and
+ * allocates the request's buffer.
+ *
+ * @ep: the endpoint to allocate a usb_request
+ * @len: usb_requests's buffer suggested size
+ *
+ * In case @ep direction is OUT, the @len will be aligned to ep's
+ * wMaxPacketSize. In order to avoid memory leaks or drops, *always* use
+ * usb_requests's length (req->length) to refer to the allocated buffer size.
+ * Requests allocated via alloc_ep_req() *must* be freed by free_ep_req().
+ */
+struct usb_request *alloc_ep_req(struct usb_ep *ep, size_t len);
+
+/* Frees a usb_request previously allocated by alloc_ep_req() */
+static inline void free_ep_req(struct usb_ep *ep, struct usb_request *req)
+{
+       WARN_ON(req->buf == NULL);
+       kfree(req->buf);
+       req->buf = NULL;
+       usb_ep_free_request(ep, req);
+}
+
+#endif /* _FUNC_UTILS_H_ */