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 | __u8 bInterval; | 32 | __u8 bInterval; |
| 33 | } __attribute__((packed)); | 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 | /* Legacy format, deprecated as of 3.14. */ | 45 | /* Legacy format, deprecated as of 3.14. */ |
| 36 | struct usb_functionfs_descs_head { | 46 | struct usb_functionfs_descs_head { |
| 37 | __le32 magic; | 47 | __le32 magic; |