XenevaOS
Loading...
Searching...
No Matches
usb.h
Go to the documentation of this file.
1
30#ifndef __AURORA_USB_H__
31#define __AURORA_USB_H__
32
33#include <stdint.h>
34#include <string.h>
35#include <_null.h>
36
37#pragma pack(push,1)
45#pragma pack(pop)
46
47#pragma pack(push,1)
52#pragma pack(pop)
53
54#pragma pack(push,1)
71#pragma pack(pop)
72
73#pragma pack(push,1)
85#pragma pack(pop)
86
87#pragma pack(push,1)
99#pragma pack(pop)
100
101#pragma pack(push,1)
112#pragma pack(pop)
113
114#pragma pack(push,1)
120#pragma pack(pop)
121
122#pragma pack(push,1)
131#pragma pack(pop)
132
133
134/* Standard XHCI defined Transfer/Command/Event
135* TRB type values
136*/
137#define USB_WAIT_TRANSFER_NORMAL 1
138#define USB_WAIT_TRANSFER_SETUP_STAGE 2
139#define USB_WAIT_TRANSFER_DATA_STAGE 3
140#define USB_WAIT_TRANSFER_STATUS_STAGE 4
141#define USB_WAIT_TRANSFER_ISOCH 5
142#define USB_WAIT_TRANSFER_LINK 6
143#define USB_WAIT_TRANSFER_EVENT_DATA 7
144#define USB_WAIT_TRANSFER_NO_OP 8
145#define USB_WAIT_CMD_ENABLE_SLOT 9
146#define USB_WAIT_CMD_DISABLE_SLOT 10
147#define USB_WAIT_CMD_ADDRESS_DEV 11
148#define USB_WAIT_CMD_CONFIG_ENDPOINT 12
149#define USB_WAIT_CMD_EVALUATE_CTX 13
150#define USB_WAIT_CMD_RESET_ENDPOINT 14
151#define USB_WAIT_CMD_STOP_ENDPOINT 15
152#define USB_WAIT_CMD_SET_TR_DEQ_POINTER 16
153#define USB_WAIT_CMD_RESET_DEV 17
154#define USB_WAIT_CMD_FORCE_EVENT 18
155#define USB_WAIT_CMD_NEGOTIATE_BANDWIDTH 19
156#define USB_WAIT_CMD_SET_LATENCY_TOLERANCE_VALUE 20
157#define USB_WAIT_CMD_GET_PORT_BANDWIDTH 21
158#define USB_WAIT_CMD_FORCE_HEADER 22
159#define USB_WAIT_CMD_NO_OP 23
160#define USB_WAIT_CMD_GET_EXT_PROPERTY 24
161#define USB_WAIT_CMD_SET_EXT_PROPERTY 25
162#define USB_WAIT_EVENT_TRANSFER 32
163#define USB_WAIT_EVENT_CMD_COMPLETION 33
164#define USB_WAIT_EVENT_PORT_STATUS_CHANGE 34
165#define USB_WAIT_EVENT_BANDWIDTH_REQUEST 35
166#define USB_WAIT_EVENT_DOORBELL 36
167#define USB_WAIT_EVENT_HOST_CONTROLLER 37
168#define USB_WAIT_EVENT_DEVICE_NOTIFICATION 38
169#define USB_WAIT_EVENT_MFINDEX 39
170
171#define USB_DESCRIPTOR_WVALUE(type,index) ((type << 8) | index)
172
173/* transfer type defined in endpoint descriptor*/
174#define ENDPOINT_TRANSFER_TYPE_CONTROL 0
175#define ENDPOINT_TRANSFER_TYPE_ISOCH 1
176#define ENDPOINT_TRANSFER_TYPE_BULK 2
177#define ENDPOINT_TRANSFER_TYPE_INT 3
178
179struct _au_usb_dev_;
180
181typedef int(*au_usb_drv_entry)(_au_usb_dev_* dev);
182typedef int(*au_usb_drv_unload)(_au_usb_dev_* dev);
183
184
185typedef void (*schedule_interrupt_callback)(_au_usb_dev_* controller, void* ep, uint64_t buffer, void (*callback)(void* dev, void* slot, void* Endp));
186typedef void (*control_transfer)(_au_usb_dev_* usbdev, const AuUSBRequestPacket* request, uint64_t buffer_addr, const size_t len);
187typedef void (*bulk_transfer)(_au_usb_dev_* usbdev, uint64_t buffer_addr, uint16_t len, void* ep);
188typedef void (*get_device_desc_callback)(_au_usb_dev_* dev, uint64_t buffer, uint16_t len);
189typedef void (*get_string_desc_callback)(_au_usb_dev_* dev, uint64_t buffer, uint16_t id);
190typedef void (*get_config_desc_callback)(_au_usb_dev_* dev, uint64_t buffer, uint16_t len, uint8_t id);
191typedef void* (*get_endpoint)(_au_usb_dev_* dev, uint8_t ep_type);
192typedef void* (*get_bulk_ep)(_au_usb_dev_* dev, uint8_t dir);
193typedef int (*get_max_pack_sz)(_au_usb_dev_* dev, void* ep);
194typedef uint8_t(*get_endpoint_address)(_au_usb_dev_* dev, void* ep);
195typedef uint8_t(*get_endpoint_attrib)(_au_usb_dev_* dev, void* ep);
196typedef AuUSBDescriptor* (*get_descriptor_callback)(_au_usb_dev_* dev, uint8_t type);
197typedef void (*set_config_val_callback)(_au_usb_dev_* dev, uint8_t config_val);
198typedef int (*poll_wait_callback)(_au_usb_dev_* dev, int poll_wait);
199
200#pragma pack(push,1)
232#pragma pack(pop)
233
234
235/*
236 * AuUSBSubsystemInit -- initialize the
237 * aurora usb system
238 */
239extern void AuUSBSubsystemInit();
240
241
242/*
243 * AuUSBGetDeviceStruc -- returns USB device struc by looking
244 * its data field
245 * @param data -- Pointer to host controller related data
246 */
247AU_EXTERN AU_EXPORT void* AuUSBGetDeviceStruc(void* data);
248/*
249 * AuUSBDeviceDisconnect -- device detach callback
250 * called from host controller
251 * @param dev -- Pointer to USB Device structure
252 */
254
255/*
256 * AuUSBDeviceConnect -- function is called from the host
257 * driver whenever a port change event occurs
258 * @param device -- Pointer to AuUSBDevice passed by the host
259 */
261#endif
AU_EXTERN AU_EXPORT void AuUSBDeviceConnect(AuUSBDeviceStruc *device)
Definition usb.cpp:195
void(* get_config_desc_callback)(_au_usb_dev_ *dev, uint64_t buffer, uint16_t len, uint8_t id)
Definition usb.h:190
void AuUSBSubsystemInit()
Definition usb.cpp:50
void(* bulk_transfer)(_au_usb_dev_ *usbdev, uint64_t buffer_addr, uint16_t len, void *ep)
Definition usb.h:187
struct _au_string_desc_ AuUSBStringDesc
struct _au_endpoint_desc_ AuUSBEndpointDesc
uint8_t(* get_endpoint_address)(_au_usb_dev_ *dev, void *ep)
Definition usb.h:194
struct _usb_request_pack AuUSBRequestPacket
void(* control_transfer)(_au_usb_dev_ *usbdev, const AuUSBRequestPacket *request, uint64_t buffer_addr, const size_t len)
Definition usb.h:186
struct _au_config_desc_ AuUSBConfigDesc
uint8_t(* get_endpoint_attrib)(_au_usb_dev_ *dev, void *ep)
Definition usb.h:195
void(* get_string_desc_callback)(_au_usb_dev_ *dev, uint64_t buffer, uint16_t id)
Definition usb.h:189
void(* get_device_desc_callback)(_au_usb_dev_ *dev, uint64_t buffer, uint16_t len)
Definition usb.h:188
int(* au_usb_drv_unload)(_au_usb_dev_ *dev)
Definition usb.h:182
struct _au_usb_desc_ AuUSBDescriptor
void(* set_config_val_callback)(_au_usb_dev_ *dev, uint8_t config_val)
Definition usb.h:197
struct _au_dev_desc_ AuUSBDevDesc
int(* poll_wait_callback)(_au_usb_dev_ *dev, int poll_wait)
Definition usb.h:198
void *(* get_bulk_ep)(_au_usb_dev_ *dev, uint8_t dir)
Definition usb.h:192
AU_EXTERN AU_EXPORT void AuUSBDeviceDisconnect(AuUSBDeviceStruc *dev)
Definition usb.cpp:176
struct _au_usb_dev_ AuUSBDeviceStruc
AuUSBDescriptor *(* get_descriptor_callback)(_au_usb_dev_ *dev, uint8_t type)
Definition usb.h:196
struct _au_interface_desc_ AuUSBInterfaceDesc
void(* schedule_interrupt_callback)(_au_usb_dev_ *controller, void *ep, uint64_t buffer, void(*callback)(void *dev, void *slot, void *Endp))
Definition usb.h:185
int(* get_max_pack_sz)(_au_usb_dev_ *dev, void *ep)
Definition usb.h:193
AU_EXTERN AU_EXPORT void * AuUSBGetDeviceStruc(void *data)
Definition usb.cpp:163
void *(* get_endpoint)(_au_usb_dev_ *dev, uint8_t ep_type)
Definition usb.h:191
struct _au_qualifier_desc_ AuUSBQualifierDesc
int(* au_usb_drv_entry)(_au_usb_dev_ *dev)
Definition usb.h:181
#define AU_EXTERN
Definition aurora.h:50
#define AU_EXPORT
Definition aurora.h:38
AuUSBDeviceStruc * device
Definition main.cpp:148
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
unsigned short int uint16_t
Definition acefiex.h:162
AHCIController * controller
Definition ahci.cpp:46
Definition usb.h:102
uint16_t wTotalLength
Definition usb.h:105
uint8_t bConfigurationValue
Definition usb.h:107
uint8_t bmAttributes
Definition usb.h:109
uint8_t bLength
Definition usb.h:103
uint8_t bNumInterfaces
Definition usb.h:106
uint8_t bDescriptorType
Definition usb.h:104
uint8_t iConfiguration
Definition usb.h:108
uint8_t bMaxPower
Definition usb.h:110
Definition usb.h:55
uint16_t idProduct
Definition usb.h:64
uint8_t iSerialNumber
Definition usb.h:68
uint8_t bDescriptorType
Definition usb.h:57
uint8_t bDeviceProtocol
Definition usb.h:61
uint16_t bcdDevice
Definition usb.h:65
uint8_t bLength
Definition usb.h:56
uint8_t bDeviceSubClass
Definition usb.h:60
uint8_t bNumConfigurations
Definition usb.h:69
uint8_t iProduct
Definition usb.h:67
uint16_t idVendor
Definition usb.h:63
uint8_t iManufacturer
Definition usb.h:66
uint8_t bMaxPacketSize0
Definition usb.h:62
uint8_t bDeviceClass
Definition usb.h:59
uint16_t bcdUSB
Definition usb.h:58
Definition usb.h:123
uint8_t bEndpointAddress
Definition usb.h:126
uint16_t wMaxPacketSize
Definition usb.h:128
uint8_t bLength
Definition usb.h:124
uint8_t bInterval
Definition usb.h:129
uint8_t bmAttributes
Definition usb.h:127
uint8_t bDescriptorType
Definition usb.h:125
Definition usb.h:74
uint8_t bNumEndpoints
Definition usb.h:79
uint8_t bDescriptorType
Definition usb.h:76
uint8_t iInterface
Definition usb.h:83
uint8_t bAlternateSetting
Definition usb.h:78
uint8_t bInterfaceProtocol
Definition usb.h:82
uint8_t bInterfaceNumber
Definition usb.h:77
uint8_t bInterfaceSubClass
Definition usb.h:81
uint8_t bInterfaceClass
Definition usb.h:80
uint8_t bLength
Definition usb.h:75
Definition usb.h:88
uint8_t bMaxPacketSize0
Definition usb.h:95
uint8_t bDeviceClass
Definition usb.h:92
uint8_t bDeviceSubClass
Definition usb.h:93
uint16_t bcdUSB
Definition usb.h:91
uint8_t bDeviceProtocol
Definition usb.h:94
uint8_t bLength
Definition usb.h:89
uint8_t bDescriptorType
Definition usb.h:90
uint8_t bReserved
Definition usb.h:97
uint8_t bNumConfigurations
Definition usb.h:96
Definition usb.h:115
uint8_t bDescriptorType
Definition usb.h:117
uint8_t bLength
Definition usb.h:116
Definition usb.h:48
uint8_t bDescriptorType
Definition usb.h:50
uint8_t bLength
Definition usb.h:49
Definition usb.h:201
get_endpoint_attrib AuGetEndpointAttrib
Definition usb.h:226
set_config_val_callback AuSetConfigValue
Definition usb.h:227
int numEndpoint
Definition usb.h:213
get_device_desc_callback AuGetDeviceDescriptor
Definition usb.h:218
au_usb_drv_unload ClassUnload
Definition usb.h:230
get_config_desc_callback AuGetConfigDescriptor
Definition usb.h:220
uint8_t protocol
Definition usb.h:210
void * data
Definition usb.h:202
int numInterfaces
Definition usb.h:212
void * descriptor
Definition usb.h:211
bulk_transfer AuBulkTranfer
Definition usb.h:217
poll_wait_callback AuUSBWait
Definition usb.h:228
uint8_t address
Definition usb.h:209
uint32_t classCode
Definition usb.h:203
get_descriptor_callback AuGetDescriptor
Definition usb.h:221
uint16_t deviceID
Definition usb.h:206
au_usb_drv_entry ClassEntry
Definition usb.h:229
get_endpoint AuGetEndpoint
Definition usb.h:222
get_string_desc_callback AuGetStringDescriptor
Definition usb.h:219
schedule_interrupt_callback AuScheduleInterrupt
Definition usb.h:215
bool driverInitialized
Definition usb.h:214
uint32_t subClassCode
Definition usb.h:204
get_max_pack_sz AuGetMaxPacketSize
Definition usb.h:224
uint16_t vendorID
Definition usb.h:205
get_bulk_ep AuGetBulkEndpoint
Definition usb.h:223
int configValue
Definition usb.h:207
control_transfer AuControlTransfer
Definition usb.h:216
get_endpoint_address AuGetEndpointAddress
Definition usb.h:225
uint16_t usbVersion
Definition usb.h:208
Definition usb.h:38
uint8_t request
Definition usb.h:40
uint16_t value
Definition usb.h:41
uint16_t index
Definition usb.h:42
uint8_t request_type
Definition usb.h:39
uint16_t length
Definition usb.h:43