1*8d67ca89SAndroid Build Coastguard Worker /* 2*8d67ca89SAndroid Build Coastguard Worker * This file is auto-generated. Modifications will be lost. 3*8d67ca89SAndroid Build Coastguard Worker * 4*8d67ca89SAndroid Build Coastguard Worker * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5*8d67ca89SAndroid Build Coastguard Worker * for more information. 6*8d67ca89SAndroid Build Coastguard Worker */ 7*8d67ca89SAndroid Build Coastguard Worker #ifndef _UAPI__LINUX_FUNCTIONFS_H__ 8*8d67ca89SAndroid Build Coastguard Worker #define _UAPI__LINUX_FUNCTIONFS_H__ 9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h> 10*8d67ca89SAndroid Build Coastguard Worker #include <linux/ioctl.h> 11*8d67ca89SAndroid Build Coastguard Worker #include <linux/usb/ch9.h> 12*8d67ca89SAndroid Build Coastguard Worker enum { 13*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_DESCRIPTORS_MAGIC = 1, 14*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_STRINGS_MAGIC = 2, 15*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_DESCRIPTORS_MAGIC_V2 = 3, 16*8d67ca89SAndroid Build Coastguard Worker }; 17*8d67ca89SAndroid Build Coastguard Worker enum functionfs_flags { 18*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_HAS_FS_DESC = 1, 19*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_HAS_HS_DESC = 2, 20*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_HAS_SS_DESC = 4, 21*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_HAS_MS_OS_DESC = 8, 22*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_VIRTUAL_ADDR = 16, 23*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_EVENTFD = 32, 24*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_ALL_CTRL_RECIP = 64, 25*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_CONFIG0_SETUP = 128, 26*8d67ca89SAndroid Build Coastguard Worker }; 27*8d67ca89SAndroid Build Coastguard Worker struct usb_endpoint_descriptor_no_audio { 28*8d67ca89SAndroid Build Coastguard Worker __u8 bLength; 29*8d67ca89SAndroid Build Coastguard Worker __u8 bDescriptorType; 30*8d67ca89SAndroid Build Coastguard Worker __u8 bEndpointAddress; 31*8d67ca89SAndroid Build Coastguard Worker __u8 bmAttributes; 32*8d67ca89SAndroid Build Coastguard Worker __le16 wMaxPacketSize; 33*8d67ca89SAndroid Build Coastguard Worker __u8 bInterval; 34*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 35*8d67ca89SAndroid Build Coastguard Worker struct usb_functionfs_descs_head_v2 { 36*8d67ca89SAndroid Build Coastguard Worker __le32 magic; 37*8d67ca89SAndroid Build Coastguard Worker __le32 length; 38*8d67ca89SAndroid Build Coastguard Worker __le32 flags; 39*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 40*8d67ca89SAndroid Build Coastguard Worker struct usb_functionfs_descs_head { 41*8d67ca89SAndroid Build Coastguard Worker __le32 magic; 42*8d67ca89SAndroid Build Coastguard Worker __le32 length; 43*8d67ca89SAndroid Build Coastguard Worker __le32 fs_count; 44*8d67ca89SAndroid Build Coastguard Worker __le32 hs_count; 45*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed, deprecated)); 46*8d67ca89SAndroid Build Coastguard Worker struct usb_os_desc_header { 47*8d67ca89SAndroid Build Coastguard Worker __u8 interface; 48*8d67ca89SAndroid Build Coastguard Worker __le32 dwLength; 49*8d67ca89SAndroid Build Coastguard Worker __le16 bcdVersion; 50*8d67ca89SAndroid Build Coastguard Worker __le16 wIndex; 51*8d67ca89SAndroid Build Coastguard Worker union { 52*8d67ca89SAndroid Build Coastguard Worker struct { 53*8d67ca89SAndroid Build Coastguard Worker __u8 bCount; 54*8d67ca89SAndroid Build Coastguard Worker __u8 Reserved; 55*8d67ca89SAndroid Build Coastguard Worker }; 56*8d67ca89SAndroid Build Coastguard Worker __le16 wCount; 57*8d67ca89SAndroid Build Coastguard Worker }; 58*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 59*8d67ca89SAndroid Build Coastguard Worker struct usb_ext_compat_desc { 60*8d67ca89SAndroid Build Coastguard Worker __u8 bFirstInterfaceNumber; 61*8d67ca89SAndroid Build Coastguard Worker __u8 Reserved1; 62*8d67ca89SAndroid Build Coastguard Worker __struct_group(, IDs,, __u8 CompatibleID[8]; 63*8d67ca89SAndroid Build Coastguard Worker __u8 SubCompatibleID[8]; 64*8d67ca89SAndroid Build Coastguard Worker ); 65*8d67ca89SAndroid Build Coastguard Worker __u8 Reserved2[6]; 66*8d67ca89SAndroid Build Coastguard Worker }; 67*8d67ca89SAndroid Build Coastguard Worker struct usb_ext_prop_desc { 68*8d67ca89SAndroid Build Coastguard Worker __le32 dwSize; 69*8d67ca89SAndroid Build Coastguard Worker __le32 dwPropertyDataType; 70*8d67ca89SAndroid Build Coastguard Worker __le16 wPropertyNameLength; 71*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 72*8d67ca89SAndroid Build Coastguard Worker #define USB_FFS_DMABUF_TRANSFER_MASK 0x0 73*8d67ca89SAndroid Build Coastguard Worker struct usb_ffs_dmabuf_transfer_req { 74*8d67ca89SAndroid Build Coastguard Worker int fd; 75*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 76*8d67ca89SAndroid Build Coastguard Worker __u64 length; 77*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 78*8d67ca89SAndroid Build Coastguard Worker struct usb_functionfs_strings_head { 79*8d67ca89SAndroid Build Coastguard Worker __le32 magic; 80*8d67ca89SAndroid Build Coastguard Worker __le32 length; 81*8d67ca89SAndroid Build Coastguard Worker __le32 str_count; 82*8d67ca89SAndroid Build Coastguard Worker __le32 lang_count; 83*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 84*8d67ca89SAndroid Build Coastguard Worker enum usb_functionfs_event_type { 85*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_BIND, 86*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_UNBIND, 87*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_ENABLE, 88*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_DISABLE, 89*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_SETUP, 90*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_SUSPEND, 91*8d67ca89SAndroid Build Coastguard Worker FUNCTIONFS_RESUME 92*8d67ca89SAndroid Build Coastguard Worker }; 93*8d67ca89SAndroid Build Coastguard Worker struct usb_functionfs_event { 94*8d67ca89SAndroid Build Coastguard Worker union { 95*8d67ca89SAndroid Build Coastguard Worker struct usb_ctrlrequest setup; 96*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)) u; 97*8d67ca89SAndroid Build Coastguard Worker __u8 type; 98*8d67ca89SAndroid Build Coastguard Worker __u8 _pad[3]; 99*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed)); 100*8d67ca89SAndroid Build Coastguard Worker #define FUNCTIONFS_FIFO_STATUS _IO('g', 1) 101*8d67ca89SAndroid Build Coastguard Worker #define FUNCTIONFS_FIFO_FLUSH _IO('g', 2) 102*8d67ca89SAndroid Build Coastguard Worker #define FUNCTIONFS_CLEAR_HALT _IO('g', 3) 103*8d67ca89SAndroid Build Coastguard Worker #define FUNCTIONFS_INTERFACE_REVMAP _IO('g', 128) 104*8d67ca89SAndroid Build Coastguard Worker #define FUNCTIONFS_ENDPOINT_REVMAP _IO('g', 129) 105*8d67ca89SAndroid Build Coastguard Worker #define FUNCTIONFS_ENDPOINT_DESC _IOR('g', 130, struct usb_endpoint_descriptor) 106*8d67ca89SAndroid Build Coastguard Worker #define FUNCTIONFS_DMABUF_ATTACH _IOW('g', 131, int) 107*8d67ca89SAndroid Build Coastguard Worker #define FUNCTIONFS_DMABUF_DETACH _IOW('g', 132, int) 108*8d67ca89SAndroid Build Coastguard Worker #define FUNCTIONFS_DMABUF_TRANSFER _IOW('g', 133, struct usb_ffs_dmabuf_transfer_req) 109*8d67ca89SAndroid Build Coastguard Worker #endif 110