Allow userspace to pass SuperSpeed descriptors and handle them in the driver accordingly. This change doesn't modify existing desc_header and thereby keeps the ABI changes backward compatible i.e. existing userspace drivers compiled with old header (functionfs.h) would continue to work with the updated kernel.
Showing the changes to include/uapi/linux (1 of 3 files). Show all
Unified · Split
| @@ -13,6 +13,7 @@ enum { · 12 unmodified lines | |||
| 13 | FUNCTIONFS_STRINGS_MAGIC = 2 | 13 | FUNCTIONFS_STRINGS_MAGIC = 2 |
| 14 | }; | 14 | }; |
| 15 | 15 | ||
| 16 | #define FUNCTIONFS_SS_DESC_MAGIC 0x0055DE5C | ||
| 16 | 17 | ||
| 17 | #ifndef __KERNEL__ | 18 | #ifndef __KERNEL__ |
| 18 | 19 | ||
| @@ -50,7 +51,11 @@ struct usb_functionfs_descs_head { · 31 unmodified lines | |||
| 50 | * | 12 | hs_count | LE32 | number of high-speed descriptors | | 51 | * | 12 | hs_count | LE32 | number of high-speed descriptors | |
| 51 | * | 16 | fs_descrs | Descriptor[] | list of full-speed descriptors | | 52 | * | 16 | fs_descrs | Descriptor[] | list of full-speed descriptors | |
| 52 | * | | hs_descrs | Descriptor[] | list of high-speed descriptors | | 53 | * | | hs_descrs | Descriptor[] | list of high-speed descriptors | |
| 54 | * | | ss_magic | LE32 | FUNCTIONFS_SS_DESC_MAGIC | | ||
| 55 | * | | ss_count | LE32 | number of super-speed descriptors | | ||
| 56 | * | | ss_descrs | Descriptor[] | list of super-speed descriptors | | ||
| 53 | * | 57 | * |
| 58 | * ss_magic: if present then it implies that SS_DESCs are also present | ||
| 54 | * descs are just valid USB descriptors and have the following format: | 59 | * descs are just valid USB descriptors and have the following format: |
| 55 | * | 60 | * |
| 56 | * | off | name | type | description | | 61 | * | off | name | type | description | |