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 = { … } };
Showing the changes to include/uapi/linux (1 of 1 file). Show all
Unified · Split
| @@ -32,6 +32,16 @@ struct usb_endpoint_descriptor_no_audio { · 31 unmodified lines | ||
| 32 | 32 | __u8 bInterval; |
| 33 | 33 | } __attribute__((packed)); |
| 34 | 34 | |
| 35 | +struct usb_functionfs_descs_head_v2 { | |
| 36 | + __le32 magic; | |
| 37 | + __le32 length; | |
| 38 | + __le32 flags; | |
| 39 | + /* | |
| 40 | + * __le32 fs_count, hs_count, fs_count; must be included manually in | |
| 41 | + * the structure taking flags into consideration. | |
| 42 | + */ | |
| 43 | +} __attribute__((packed)); | |
| 44 | + | |
| 35 | 45 | /* Legacy format, deprecated as of 3.14. */ |
| 36 | 46 | struct usb_functionfs_descs_head { |
| 37 | 47 | __le32 magic; |