XenevaOS
Loading...
Searching...
No Matches
ch9.h
Go to the documentation of this file.
1#ifndef __LINUX_USB_CH9_H__
2#define __LINUX_USB_CH9_H__
3
4#include <linux/list.h>
5
6/* ─── USB speed ─── */
9 USB_SPEED_LOW, /* 1.5 Mb/s */
10 USB_SPEED_FULL, /* 12 Mb/s */
11 USB_SPEED_HIGH, /* 480 Mb/s */
13 USB_SPEED_SUPER, /* 5 Gb/s */
14 USB_SPEED_SUPER_PLUS, /* 10 Gb/s */
15};
16
17/* ─── USB device state ─── */
29
30/* ─── Endpoint type ─── */
31#define USB_ENDPOINT_XFER_CONTROL 0
32#define USB_ENDPOINT_XFER_ISOC 1
33#define USB_ENDPOINT_XFER_BULK 2
34#define USB_ENDPOINT_XFER_INT 3
35
36/* ─── Endpoint direction ─── */
37#define USB_DIR_OUT 0x00
38#define USB_DIR_IN 0x80
39
40/* ─── usb_endpoint_descriptor ─── */
41#pragma pack(push,1)
50#pragma pack(pop)
51
52/* ─── usb_ep ─── */
53struct usb_ep {
55 const char* name;
56 const struct usb_ep_ops* ops;
59 unsigned maxpacket : 11;
60 unsigned maxpacket_limit : 11;
61 unsigned max_streams : 5;
62 unsigned mult : 2;
63 unsigned maxburst : 5;
71 bool enabled;
72 bool wedged;
73};
74
75/* ─── usb_request (URB equivalent at gadget layer) ─── */
77 void* buf;
78 unsigned length;
80 unsigned stream_id : 16;
81 unsigned no_interrupt : 1;
82 unsigned zero : 1;
83 unsigned short_not_ok : 1;
84 void (*complete)(struct usb_ep* ep,
85 struct usb_request* req);
86 void* context;
88 unsigned actual;
89 int status;
90};
91
92/* ─── URB (host side) ─── */
93#define URB_SHORT_NOT_OK 0x0001
94#define URB_ISO_ASAP 0x0002
95#define URB_NO_TRANSFER_DMA_MAP 0x0004
96#define URB_ZERO_PACKET 0x0040
97#define URB_NO_INTERRUPT 0x0080
98
121
122/* ─── Pipe encoding helpers ─── */
123#define usb_pipein(pipe) ((pipe) & USB_DIR_IN)
124#define usb_pipeout(pipe) (!usb_pipein(pipe))
125#define usb_pipedevice(pipe) (((pipe) >> 8) & 0x7f)
126#define usb_pipeendpoint(pipe) (((pipe) >> 15) & 0xf)
127#define usb_pipetype(pipe) (((pipe) >> 30) & 3)
128#define usb_pipecontrol(pipe) (usb_pipetype(pipe) == USB_ENDPOINT_XFER_CONTROL)
129#define usb_pipebulk(pipe) (usb_pipetype(pipe) == USB_ENDPOINT_XFER_BULK)
130#define usb_pipeint(pipe) (usb_pipetype(pipe) == USB_ENDPOINT_XFER_INT)
131#define usb_pipeisoc(pipe) (usb_pipetype(pipe) == USB_ENDPOINT_XFER_ISOC)
132
133/* ─── usb_host_endpoint ─── */
137 void* hcpriv;
138 struct ep_device* ep_dev;
139 unsigned char* extra;
143};
144
145/* ─── usb_device ─── */
164
165/* ─── usb_bus ─── */
176
177#endif
usb_device_speed
Definition ch9.h:7
@ USB_SPEED_LOW
Definition ch9.h:9
@ USB_SPEED_FULL
Definition ch9.h:10
@ USB_SPEED_HIGH
Definition ch9.h:11
@ USB_SPEED_UNKNOWN
Definition ch9.h:8
@ USB_SPEED_SUPER_PLUS
Definition ch9.h:14
@ USB_SPEED_WIRELESS
Definition ch9.h:12
@ USB_SPEED_SUPER
Definition ch9.h:13
usb_device_state
Definition ch9.h:18
@ USB_STATE_POWERED
Definition ch9.h:21
@ USB_STATE_NOTATTACHED
Definition ch9.h:19
@ USB_STATE_ADDRESS
Definition ch9.h:25
@ USB_STATE_SUSPENDED
Definition ch9.h:27
@ USB_STATE_CONFIGURED
Definition ch9.h:26
@ USB_STATE_ATTACHED
Definition ch9.h:20
@ USB_STATE_DEFAULT
Definition ch9.h:24
@ USB_STATE_UNAUTHENTICATED
Definition ch9.h:23
@ USB_STATE_RECONNECTING
Definition ch9.h:22
uintptr_t dma_addr_t
Definition kernel.h:42
uint8_t u8
Definition kernel.h:14
uint16_t u16
Definition kernel.h:15
uint32_t u32
Definition kernel.h:16
Definition fs.h:255
Definition list.h:11
Definition ch9.h:99
dma_addr_t setup_dma
Definition ch9.h:113
int start_frame
Definition ch9.h:114
unsigned int pipe
Definition ch9.h:104
unsigned int stream_id
Definition ch9.h:105
int status
Definition ch9.h:106
struct list_head anchor_list
Definition ch9.h:101
int interval
Definition ch9.h:116
u32 transfer_buffer_length
Definition ch9.h:110
int error_count
Definition ch9.h:117
void * context
Definition ch9.h:118
struct usb_host_endpoint * ep
Definition ch9.h:103
struct usb_device * dev
Definition ch9.h:102
int number_of_packets
Definition ch9.h:115
unsigned int transfer_flags
Definition ch9.h:107
void(* complete)(struct urb *urb)
Definition ch9.h:119
void * transfer_buffer
Definition ch9.h:108
unsigned char * setup_packet
Definition ch9.h:112
dma_addr_t transfer_dma
Definition ch9.h:109
u32 actual_length
Definition ch9.h:111
struct list_head urb_list
Definition ch9.h:100
Definition ch9.h:166
u8 otg_port
Definition ch9.h:172
const char * bus_name
Definition ch9.h:169
int busnum
Definition ch9.h:168
u8 uses_dma
Definition ch9.h:170
u8 uses_pio_for_control
Definition ch9.h:171
struct device * controller
Definition ch9.h:167
struct usb_device * root_hub
Definition ch9.h:174
int devnum_next
Definition ch9.h:173
Definition ch9.h:146
enum usb_device_speed speed
Definition ch9.h:149
int maxchild
Definition ch9.h:159
void * hcpriv
Definition ch9.h:162
int devnum
Definition ch9.h:147
u16 descriptor_idProduct
Definition ch9.h:155
struct usb_bus * bus
Definition ch9.h:151
u16 descriptor_idVendor
Definition ch9.h:154
struct usb_device * children[16]
Definition ch9.h:160
struct usb_host_endpoint ep0
Definition ch9.h:152
u32 quirks
Definition ch9.h:161
char * serial
Definition ch9.h:158
enum usb_device_state state
Definition ch9.h:148
char * manufacturer
Definition ch9.h:157
char * product
Definition ch9.h:156
struct usb_device * parent
Definition ch9.h:150
Definition ch9.h:42
u8 bInterval
Definition ch9.h:48
u8 bDescriptorType
Definition ch9.h:44
u16 wMaxPacketSize
Definition ch9.h:47
u8 bEndpointAddress
Definition ch9.h:45
u8 bmAttributes
Definition ch9.h:46
u8 bLength
Definition ch9.h:43
Definition ch9.h:53
bool caps_type_iso
Definition ch9.h:68
u8 address
Definition ch9.h:64
bool caps_type_bulk
Definition ch9.h:69
bool caps_type_control
Definition ch9.h:67
bool caps_type_int
Definition ch9.h:70
bool enabled
Definition ch9.h:71
unsigned maxburst
Definition ch9.h:63
bool wedged
Definition ch9.h:72
unsigned max_streams
Definition ch9.h:61
const char * name
Definition ch9.h:55
unsigned mult
Definition ch9.h:62
unsigned maxpacket_limit
Definition ch9.h:60
const struct usb_ep_ops * ops
Definition ch9.h:56
bool caps_dir_out
Definition ch9.h:66
unsigned maxpacket
Definition ch9.h:59
struct usb_endpoint_descriptor * desc
Definition ch9.h:58
void * driver_data
Definition ch9.h:54
struct list_head ep_list
Definition ch9.h:57
bool caps_dir_in
Definition ch9.h:65
Definition ch9.h:134
int streams
Definition ch9.h:142
unsigned char * extra
Definition ch9.h:139
struct list_head urb_list
Definition ch9.h:136
struct ep_device * ep_dev
Definition ch9.h:138
void * hcpriv
Definition ch9.h:137
int enabled
Definition ch9.h:141
int extralen
Definition ch9.h:140
struct usb_endpoint_descriptor desc
Definition ch9.h:135
Definition ch9.h:76
int status
Definition ch9.h:89
unsigned no_interrupt
Definition ch9.h:81
struct list_head list
Definition ch9.h:87
unsigned actual
Definition ch9.h:88
unsigned stream_id
Definition ch9.h:80
unsigned zero
Definition ch9.h:82
unsigned short_not_ok
Definition ch9.h:83
void(* complete)(struct usb_ep *ep, struct usb_request *req)
Definition ch9.h:84
void * buf
Definition ch9.h:77
dma_addr_t dma
Definition ch9.h:79
void * context
Definition ch9.h:86
unsigned length
Definition ch9.h:78