xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/usb/functionfs.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
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