blob: e838363f19d37189ce9952aa2e4b043c3f57e27a [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__
Christopher Ferris65552ba2024-11-20 17:55:06 +00009#include <linux/const.h>
Ben Cheng655a7c02013-10-16 16:09:24 -070010#include <linux/types.h>
11#include <linux/ioctl.h>
Ben Cheng655a7c02013-10-16 16:09:24 -070012#include <linux/usb/ch9.h>
13enum {
Tao Baod7db5942015-01-28 10:07:51 -080014 FUNCTIONFS_DESCRIPTORS_MAGIC = 1,
15 FUNCTIONFS_STRINGS_MAGIC = 2,
Tao Baod7db5942015-01-28 10:07:51 -080016 FUNCTIONFS_DESCRIPTORS_MAGIC_V2 = 3,
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070017};
18enum functionfs_flags {
Tao Baod7db5942015-01-28 10:07:51 -080019 FUNCTIONFS_HAS_FS_DESC = 1,
Tao Baod7db5942015-01-28 10:07:51 -080020 FUNCTIONFS_HAS_HS_DESC = 2,
21 FUNCTIONFS_HAS_SS_DESC = 4,
22 FUNCTIONFS_HAS_MS_OS_DESC = 8,
23 FUNCTIONFS_VIRTUAL_ADDR = 16,
Christopher Ferris05d08e92016-02-04 13:16:38 -080024 FUNCTIONFS_EVENTFD = 32,
Christopher Ferris6a9755d2017-01-13 14:09:31 -080025 FUNCTIONFS_ALL_CTRL_RECIP = 64,
26 FUNCTIONFS_CONFIG0_SETUP = 128,
Ben Cheng655a7c02013-10-16 16:09:24 -070027};
28struct usb_endpoint_descriptor_no_audio {
Tao Baod7db5942015-01-28 10:07:51 -080029 __u8 bLength;
Christopher Ferris05d08e92016-02-04 13:16:38 -080030 __u8 bDescriptorType;
Tao Baod7db5942015-01-28 10:07:51 -080031 __u8 bEndpointAddress;
32 __u8 bmAttributes;
33 __le16 wMaxPacketSize;
Christopher Ferris05d08e92016-02-04 13:16:38 -080034 __u8 bInterval;
Christopher Ferris82d75042015-01-26 10:57:07 -080035} __attribute__((packed));
Christopher Ferris65552ba2024-11-20 17:55:06 +000036struct usb_dfu_functional_descriptor {
37 __u8 bLength;
38 __u8 bDescriptorType;
39 __u8 bmAttributes;
40 __le16 wDetachTimeOut;
41 __le16 wTransferSize;
42 __le16 bcdDFUVersion;
43} __attribute__((packed));
44#define DFU_FUNC_ATT_CAN_DOWNLOAD _BITUL(0)
45#define DFU_FUNC_ATT_CAN_UPLOAD _BITUL(1)
46#define DFU_FUNC_ATT_MANIFEST_TOLERANT _BITUL(2)
47#define DFU_FUNC_ATT_WILL_DETACH _BITUL(3)
Christopher Ferris82d75042015-01-26 10:57:07 -080048struct usb_functionfs_descs_head_v2 {
Tao Baod7db5942015-01-28 10:07:51 -080049 __le32 magic;
Christopher Ferris05d08e92016-02-04 13:16:38 -080050 __le32 length;
Tao Baod7db5942015-01-28 10:07:51 -080051 __le32 flags;
Ben Cheng655a7c02013-10-16 16:09:24 -070052} __attribute__((packed));
53struct usb_functionfs_descs_head {
Christopher Ferris05d08e92016-02-04 13:16:38 -080054 __le32 magic;
Tao Baod7db5942015-01-28 10:07:51 -080055 __le32 length;
56 __le32 fs_count;
57 __le32 hs_count;
Christopher Ferris05d08e92016-02-04 13:16:38 -080058} __attribute__((packed, deprecated));
Christopher Ferris82d75042015-01-26 10:57:07 -080059struct usb_os_desc_header {
Tao Baod7db5942015-01-28 10:07:51 -080060 __u8 interface;
61 __le32 dwLength;
Christopher Ferris05d08e92016-02-04 13:16:38 -080062 __le16 bcdVersion;
Tao Baod7db5942015-01-28 10:07:51 -080063 __le16 wIndex;
64 union {
65 struct {
Christopher Ferris05d08e92016-02-04 13:16:38 -080066 __u8 bCount;
Tao Baod7db5942015-01-28 10:07:51 -080067 __u8 Reserved;
68 };
69 __le16 wCount;
Christopher Ferris05d08e92016-02-04 13:16:38 -080070 };
Christopher Ferris82d75042015-01-26 10:57:07 -080071} __attribute__((packed));
72struct usb_ext_compat_desc {
Tao Baod7db5942015-01-28 10:07:51 -080073 __u8 bFirstInterfaceNumber;
Christopher Ferris05d08e92016-02-04 13:16:38 -080074 __u8 Reserved1;
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070075 __struct_group(, IDs,, __u8 CompatibleID[8];
Tao Baod7db5942015-01-28 10:07:51 -080076 __u8 SubCompatibleID[8];
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070077 );
Tao Baod7db5942015-01-28 10:07:51 -080078 __u8 Reserved2[6];
Christopher Ferris05d08e92016-02-04 13:16:38 -080079};
Christopher Ferris82d75042015-01-26 10:57:07 -080080struct usb_ext_prop_desc {
Tao Baod7db5942015-01-28 10:07:51 -080081 __le32 dwSize;
82 __le32 dwPropertyDataType;
Christopher Ferris05d08e92016-02-04 13:16:38 -080083 __le16 wPropertyNameLength;
Christopher Ferris82d75042015-01-26 10:57:07 -080084} __attribute__((packed));
Christopher Ferris7f4c8372024-06-03 14:22:19 -070085#define USB_FFS_DMABUF_TRANSFER_MASK 0x0
86struct usb_ffs_dmabuf_transfer_req {
87 int fd;
88 __u32 flags;
89 __u64 length;
90} __attribute__((packed));
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070091struct usb_functionfs_strings_head {
Tao Baod7db5942015-01-28 10:07:51 -080092 __le32 magic;
Christopher Ferris05d08e92016-02-04 13:16:38 -080093 __le32 length;
Tao Baod7db5942015-01-28 10:07:51 -080094 __le32 str_count;
95 __le32 lang_count;
Ben Cheng655a7c02013-10-16 16:09:24 -070096} __attribute__((packed));
Christopher Ferris05d08e92016-02-04 13:16:38 -080097enum usb_functionfs_event_type {
Tao Baod7db5942015-01-28 10:07:51 -080098 FUNCTIONFS_BIND,
99 FUNCTIONFS_UNBIND,
100 FUNCTIONFS_ENABLE,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800101 FUNCTIONFS_DISABLE,
Tao Baod7db5942015-01-28 10:07:51 -0800102 FUNCTIONFS_SETUP,
103 FUNCTIONFS_SUSPEND,
104 FUNCTIONFS_RESUME
Christopher Ferris05d08e92016-02-04 13:16:38 -0800105};
Ben Cheng655a7c02013-10-16 16:09:24 -0700106struct usb_functionfs_event {
Tao Baod7db5942015-01-28 10:07:51 -0800107 union {
108 struct usb_ctrlrequest setup;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800109 } __attribute__((packed)) u;
Tao Baod7db5942015-01-28 10:07:51 -0800110 __u8 type;
111 __u8 _pad[3];
Ben Cheng655a7c02013-10-16 16:09:24 -0700112} __attribute__((packed));
Christopher Ferris05d08e92016-02-04 13:16:38 -0800113#define FUNCTIONFS_FIFO_STATUS _IO('g', 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700114#define FUNCTIONFS_FIFO_FLUSH _IO('g', 2)
115#define FUNCTIONFS_CLEAR_HALT _IO('g', 3)
Ben Cheng655a7c02013-10-16 16:09:24 -0700116#define FUNCTIONFS_INTERFACE_REVMAP _IO('g', 128)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800117#define FUNCTIONFS_ENDPOINT_REVMAP _IO('g', 129)
Tao Baod7db5942015-01-28 10:07:51 -0800118#define FUNCTIONFS_ENDPOINT_DESC _IOR('g', 130, struct usb_endpoint_descriptor)
Christopher Ferris7f4c8372024-06-03 14:22:19 -0700119#define FUNCTIONFS_DMABUF_ATTACH _IOW('g', 131, int)
120#define FUNCTIONFS_DMABUF_DETACH _IOW('g', 132, int)
121#define FUNCTIONFS_DMABUF_TRANSFER _IOW('g', 133, struct usb_ffs_dmabuf_transfer_req)
Ben Cheng655a7c02013-10-16 16:09:24 -0700122#endif