blob: 417093eef5423c5e4a28612c0aae8d7266236b69 [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Ben Cheng655a7c02013-10-16 16:09:24 -07007#ifndef _UAPI__LINUX_FUNCTIONFS_H__
8#define _UAPI__LINUX_FUNCTIONFS_H__
9#include <linux/types.h>
10#include <linux/ioctl.h>
Ben Cheng655a7c02013-10-16 16:09:24 -070011#include <linux/usb/ch9.h>
12enum {
Tao Baod7db5942015-01-28 10:07:51 -080013 FUNCTIONFS_DESCRIPTORS_MAGIC = 1,
14 FUNCTIONFS_STRINGS_MAGIC = 2,
Tao Baod7db5942015-01-28 10:07:51 -080015 FUNCTIONFS_DESCRIPTORS_MAGIC_V2 = 3,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070016};
17enum functionfs_flags {
Tao Baod7db5942015-01-28 10:07:51 -080018 FUNCTIONFS_HAS_FS_DESC = 1,
Tao Baod7db5942015-01-28 10:07:51 -080019 FUNCTIONFS_HAS_HS_DESC = 2,
20 FUNCTIONFS_HAS_SS_DESC = 4,
21 FUNCTIONFS_HAS_MS_OS_DESC = 8,
22 FUNCTIONFS_VIRTUAL_ADDR = 16,
Christopher Ferris05d08e92016-02-04 13:16:38 -080023 FUNCTIONFS_EVENTFD = 32,
Christopher Ferris6a9755d2017-01-13 14:09:31 -080024 FUNCTIONFS_ALL_CTRL_RECIP = 64,
25 FUNCTIONFS_CONFIG0_SETUP = 128,
Ben Cheng655a7c02013-10-16 16:09:24 -070026};
27struct usb_endpoint_descriptor_no_audio {
Tao Baod7db5942015-01-28 10:07:51 -080028 __u8 bLength;
Christopher Ferris05d08e92016-02-04 13:16:38 -080029 __u8 bDescriptorType;
Tao Baod7db5942015-01-28 10:07:51 -080030 __u8 bEndpointAddress;
31 __u8 bmAttributes;
32 __le16 wMaxPacketSize;
Christopher Ferris05d08e92016-02-04 13:16:38 -080033 __u8 bInterval;
Christopher Ferris82d75042015-01-26 10:57:07 -080034} __attribute__((packed));
35struct usb_functionfs_descs_head_v2 {
Tao Baod7db5942015-01-28 10:07:51 -080036 __le32 magic;
Christopher Ferris05d08e92016-02-04 13:16:38 -080037 __le32 length;
Tao Baod7db5942015-01-28 10:07:51 -080038 __le32 flags;
Ben Cheng655a7c02013-10-16 16:09:24 -070039} __attribute__((packed));
40struct usb_functionfs_descs_head {
Christopher Ferris05d08e92016-02-04 13:16:38 -080041 __le32 magic;
Tao Baod7db5942015-01-28 10:07:51 -080042 __le32 length;
43 __le32 fs_count;
44 __le32 hs_count;
Christopher Ferris05d08e92016-02-04 13:16:38 -080045} __attribute__((packed, deprecated));
Christopher Ferris82d75042015-01-26 10:57:07 -080046struct usb_os_desc_header {
Tao Baod7db5942015-01-28 10:07:51 -080047 __u8 interface;
48 __le32 dwLength;
Christopher Ferris05d08e92016-02-04 13:16:38 -080049 __le16 bcdVersion;
Tao Baod7db5942015-01-28 10:07:51 -080050 __le16 wIndex;
51 union {
52 struct {
Christopher Ferris05d08e92016-02-04 13:16:38 -080053 __u8 bCount;
Tao Baod7db5942015-01-28 10:07:51 -080054 __u8 Reserved;
55 };
56 __le16 wCount;
Christopher Ferris05d08e92016-02-04 13:16:38 -080057 };
Christopher Ferris82d75042015-01-26 10:57:07 -080058} __attribute__((packed));
59struct usb_ext_compat_desc {
Tao Baod7db5942015-01-28 10:07:51 -080060 __u8 bFirstInterfaceNumber;
Christopher Ferris05d08e92016-02-04 13:16:38 -080061 __u8 Reserved1;
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070062 __struct_group(, IDs,, __u8 CompatibleID[8];
Tao Baod7db5942015-01-28 10:07:51 -080063 __u8 SubCompatibleID[8];
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070064 );
Tao Baod7db5942015-01-28 10:07:51 -080065 __u8 Reserved2[6];
Christopher Ferris05d08e92016-02-04 13:16:38 -080066};
Christopher Ferris82d75042015-01-26 10:57:07 -080067struct usb_ext_prop_desc {
Tao Baod7db5942015-01-28 10:07:51 -080068 __le32 dwSize;
69 __le32 dwPropertyDataType;
Christopher Ferris05d08e92016-02-04 13:16:38 -080070 __le16 wPropertyNameLength;
Christopher Ferris82d75042015-01-26 10:57:07 -080071} __attribute__((packed));
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070072struct usb_functionfs_strings_head {
Tao Baod7db5942015-01-28 10:07:51 -080073 __le32 magic;
Christopher Ferris05d08e92016-02-04 13:16:38 -080074 __le32 length;
Tao Baod7db5942015-01-28 10:07:51 -080075 __le32 str_count;
76 __le32 lang_count;
Ben Cheng655a7c02013-10-16 16:09:24 -070077} __attribute__((packed));
Christopher Ferris05d08e92016-02-04 13:16:38 -080078enum usb_functionfs_event_type {
Tao Baod7db5942015-01-28 10:07:51 -080079 FUNCTIONFS_BIND,
80 FUNCTIONFS_UNBIND,
81 FUNCTIONFS_ENABLE,
Christopher Ferris05d08e92016-02-04 13:16:38 -080082 FUNCTIONFS_DISABLE,
Tao Baod7db5942015-01-28 10:07:51 -080083 FUNCTIONFS_SETUP,
84 FUNCTIONFS_SUSPEND,
85 FUNCTIONFS_RESUME
Christopher Ferris05d08e92016-02-04 13:16:38 -080086};
Ben Cheng655a7c02013-10-16 16:09:24 -070087struct usb_functionfs_event {
Tao Baod7db5942015-01-28 10:07:51 -080088 union {
89 struct usb_ctrlrequest setup;
Christopher Ferris05d08e92016-02-04 13:16:38 -080090 } __attribute__((packed)) u;
Tao Baod7db5942015-01-28 10:07:51 -080091 __u8 type;
92 __u8 _pad[3];
Ben Cheng655a7c02013-10-16 16:09:24 -070093} __attribute__((packed));
Christopher Ferris05d08e92016-02-04 13:16:38 -080094#define FUNCTIONFS_FIFO_STATUS _IO('g', 1)
Ben Cheng655a7c02013-10-16 16:09:24 -070095#define FUNCTIONFS_FIFO_FLUSH _IO('g', 2)
96#define FUNCTIONFS_CLEAR_HALT _IO('g', 3)
Ben Cheng655a7c02013-10-16 16:09:24 -070097#define FUNCTIONFS_INTERFACE_REVMAP _IO('g', 128)
Christopher Ferris05d08e92016-02-04 13:16:38 -080098#define FUNCTIONFS_ENDPOINT_REVMAP _IO('g', 129)
Tao Baod7db5942015-01-28 10:07:51 -080099#define FUNCTIONFS_ENDPOINT_DESC _IOR('g', 130, struct usb_endpoint_descriptor)
Ben Cheng655a7c02013-10-16 16:09:24 -0700100#endif