The structure can be used with user space tools that use the new
functionfs description format, for example as follows:
static const struct {
        struct usb_functionfs_descs_head_v2 header;
        __le32 fs_count;
        __le32 hs_count;
        struct {
                …
        } fs_desc;
        struct {
                …
        } hs_desc;
} descriptors = {
        .header = {
                .magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC_V2),
                .length = cpu_to_le32(sizeof(descriptors)),
                .flags = cpu_to_le32(FUNCTIONFS_HAS_FS_DESC |
                                     FUNCTIONFS_HAS_HS_DESC)
        },
        .fs_count = cpu_to_le32(X),
        .fs_desc = {
                …
        },
        .hs_count = cpu_to_le32(Y),
        .hs_desc = {
                …
        }
};

Signed-off-by: Michal Nazarewicz <min...@mina86.com>
---
 include/uapi/linux/usb/functionfs.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/include/uapi/linux/usb/functionfs.h 
b/include/uapi/linux/usb/functionfs.h
index 0154b28..3ca03de 100644
--- a/include/uapi/linux/usb/functionfs.h
+++ b/include/uapi/linux/usb/functionfs.h
@@ -32,6 +32,16 @@ struct usb_endpoint_descriptor_no_audio {
        __u8  bInterval;
 } __attribute__((packed));
 
+struct usb_functionfs_descs_head_v2 {
+       __le32 magic;
+       __le32 length;
+       __le32 flags;
+       /*
+        * __le32 fs_count, hs_count, fs_count; must be included manually in
+        * the structure taking flags into consideration.
+        */
+} __attribute__((packed));
+
 /* Legacy format, deprecated as of 3.14. */
 struct usb_functionfs_descs_head {
        __le32 magic;
-- 
2.1.0.rc2.206.gedb03e5

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to