XenevaOS
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Functions
usb.h File Reference
#include <stdint.h>
#include <string.h>
#include <_null.h>
Include dependency graph for usb.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _usb_request_pack
 
struct  _au_usb_desc_
 
struct  _au_dev_desc_
 
struct  _au_interface_desc_
 
struct  _au_qualifier_desc_
 
struct  _au_config_desc_
 
struct  _au_string_desc_
 
struct  _au_endpoint_desc_
 
struct  _au_usb_dev_
 

Macros

#define USB_WAIT_TRANSFER_NORMAL   1
 
#define USB_WAIT_TRANSFER_SETUP_STAGE   2
 
#define USB_WAIT_TRANSFER_DATA_STAGE   3
 
#define USB_WAIT_TRANSFER_STATUS_STAGE   4
 
#define USB_WAIT_TRANSFER_ISOCH   5
 
#define USB_WAIT_TRANSFER_LINK   6
 
#define USB_WAIT_TRANSFER_EVENT_DATA   7
 
#define USB_WAIT_TRANSFER_NO_OP   8
 
#define USB_WAIT_CMD_ENABLE_SLOT   9
 
#define USB_WAIT_CMD_DISABLE_SLOT   10
 
#define USB_WAIT_CMD_ADDRESS_DEV   11
 
#define USB_WAIT_CMD_CONFIG_ENDPOINT   12
 
#define USB_WAIT_CMD_EVALUATE_CTX   13
 
#define USB_WAIT_CMD_RESET_ENDPOINT   14
 
#define USB_WAIT_CMD_STOP_ENDPOINT   15
 
#define USB_WAIT_CMD_SET_TR_DEQ_POINTER   16
 
#define USB_WAIT_CMD_RESET_DEV   17
 
#define USB_WAIT_CMD_FORCE_EVENT   18
 
#define USB_WAIT_CMD_NEGOTIATE_BANDWIDTH   19
 
#define USB_WAIT_CMD_SET_LATENCY_TOLERANCE_VALUE   20
 
#define USB_WAIT_CMD_GET_PORT_BANDWIDTH   21
 
#define USB_WAIT_CMD_FORCE_HEADER   22
 
#define USB_WAIT_CMD_NO_OP   23
 
#define USB_WAIT_CMD_GET_EXT_PROPERTY   24
 
#define USB_WAIT_CMD_SET_EXT_PROPERTY   25
 
#define USB_WAIT_EVENT_TRANSFER   32
 
#define USB_WAIT_EVENT_CMD_COMPLETION   33
 
#define USB_WAIT_EVENT_PORT_STATUS_CHANGE   34
 
#define USB_WAIT_EVENT_BANDWIDTH_REQUEST   35
 
#define USB_WAIT_EVENT_DOORBELL   36
 
#define USB_WAIT_EVENT_HOST_CONTROLLER   37
 
#define USB_WAIT_EVENT_DEVICE_NOTIFICATION   38
 
#define USB_WAIT_EVENT_MFINDEX   39
 
#define USB_DESCRIPTOR_WVALUE(type, index)   ((type << 8) | index)
 
#define ENDPOINT_TRANSFER_TYPE_CONTROL   0
 
#define ENDPOINT_TRANSFER_TYPE_ISOCH   1
 
#define ENDPOINT_TRANSFER_TYPE_BULK   2
 
#define ENDPOINT_TRANSFER_TYPE_INT   3
 

Typedefs

typedef struct _usb_request_pack AuUSBRequestPacket
 
typedef struct _au_usb_desc_ AuUSBDescriptor
 
typedef struct _au_dev_desc_ AuUSBDevDesc
 
typedef struct _au_interface_desc_ AuUSBInterfaceDesc
 
typedef struct _au_qualifier_desc_ AuUSBQualifierDesc
 
typedef struct _au_config_desc_ AuUSBConfigDesc
 
typedef struct _au_string_desc_ AuUSBStringDesc
 
typedef struct _au_endpoint_desc_ AuUSBEndpointDesc
 
typedef int(* au_usb_drv_entry) (_au_usb_dev_ *dev)
 
typedef int(* au_usb_drv_unload) (_au_usb_dev_ *dev)
 
typedef void(* schedule_interrupt_callback) (_au_usb_dev_ *controller, void *ep, uint64_t buffer, void(*callback) (void *dev, void *slot, void *Endp))
 
typedef void(* control_transfer) (_au_usb_dev_ *usbdev, const AuUSBRequestPacket *request, uint64_t buffer_addr, const size_t len)
 
typedef void(* bulk_transfer) (_au_usb_dev_ *usbdev, uint64_t buffer_addr, uint16_t len, void *ep)
 
typedef void(* get_device_desc_callback) (_au_usb_dev_ *dev, uint64_t buffer, uint16_t len)
 
typedef void(* get_string_desc_callback) (_au_usb_dev_ *dev, uint64_t buffer, uint16_t id)
 
typedef void(* get_config_desc_callback) (_au_usb_dev_ *dev, uint64_t buffer, uint16_t len, uint8_t id)
 
typedef void *(* get_endpoint) (_au_usb_dev_ *dev, uint8_t ep_type)
 
typedef void *(* get_bulk_ep) (_au_usb_dev_ *dev, uint8_t dir)
 
typedef int(* get_max_pack_sz) (_au_usb_dev_ *dev, void *ep)
 
typedef uint8_t(* get_endpoint_address) (_au_usb_dev_ *dev, void *ep)
 
typedef uint8_t(* get_endpoint_attrib) (_au_usb_dev_ *dev, void *ep)
 
typedef AuUSBDescriptor *(* get_descriptor_callback) (_au_usb_dev_ *dev, uint8_t type)
 
typedef void(* set_config_val_callback) (_au_usb_dev_ *dev, uint8_t config_val)
 
typedef int(* poll_wait_callback) (_au_usb_dev_ *dev, int poll_wait)
 
typedef struct _au_usb_dev_ AuUSBDeviceStruc
 

Functions

void AuUSBSubsystemInit ()
 
AU_EXTERN AU_EXPORT void * AuUSBGetDeviceStruc (void *data)
 
AU_EXTERN AU_EXPORT void AuUSBDeviceDisconnect (AuUSBDeviceStruc *dev)
 
AU_EXTERN AU_EXPORT void AuUSBDeviceConnect (AuUSBDeviceStruc *device)
 

Macro Definition Documentation

◆ ENDPOINT_TRANSFER_TYPE_BULK

#define ENDPOINT_TRANSFER_TYPE_BULK   2

◆ ENDPOINT_TRANSFER_TYPE_CONTROL

#define ENDPOINT_TRANSFER_TYPE_CONTROL   0

◆ ENDPOINT_TRANSFER_TYPE_INT

#define ENDPOINT_TRANSFER_TYPE_INT   3

◆ ENDPOINT_TRANSFER_TYPE_ISOCH

#define ENDPOINT_TRANSFER_TYPE_ISOCH   1

◆ USB_DESCRIPTOR_WVALUE

#define USB_DESCRIPTOR_WVALUE (   type,
  index 
)    ((type << 8) | index)

◆ USB_WAIT_CMD_ADDRESS_DEV

#define USB_WAIT_CMD_ADDRESS_DEV   11

◆ USB_WAIT_CMD_CONFIG_ENDPOINT

#define USB_WAIT_CMD_CONFIG_ENDPOINT   12

◆ USB_WAIT_CMD_DISABLE_SLOT

#define USB_WAIT_CMD_DISABLE_SLOT   10

◆ USB_WAIT_CMD_ENABLE_SLOT

#define USB_WAIT_CMD_ENABLE_SLOT   9

◆ USB_WAIT_CMD_EVALUATE_CTX

#define USB_WAIT_CMD_EVALUATE_CTX   13

◆ USB_WAIT_CMD_FORCE_EVENT

#define USB_WAIT_CMD_FORCE_EVENT   18

◆ USB_WAIT_CMD_FORCE_HEADER

#define USB_WAIT_CMD_FORCE_HEADER   22

◆ USB_WAIT_CMD_GET_EXT_PROPERTY

#define USB_WAIT_CMD_GET_EXT_PROPERTY   24

◆ USB_WAIT_CMD_GET_PORT_BANDWIDTH

#define USB_WAIT_CMD_GET_PORT_BANDWIDTH   21

◆ USB_WAIT_CMD_NEGOTIATE_BANDWIDTH

#define USB_WAIT_CMD_NEGOTIATE_BANDWIDTH   19

◆ USB_WAIT_CMD_NO_OP

#define USB_WAIT_CMD_NO_OP   23

◆ USB_WAIT_CMD_RESET_DEV

#define USB_WAIT_CMD_RESET_DEV   17

◆ USB_WAIT_CMD_RESET_ENDPOINT

#define USB_WAIT_CMD_RESET_ENDPOINT   14

◆ USB_WAIT_CMD_SET_EXT_PROPERTY

#define USB_WAIT_CMD_SET_EXT_PROPERTY   25

◆ USB_WAIT_CMD_SET_LATENCY_TOLERANCE_VALUE

#define USB_WAIT_CMD_SET_LATENCY_TOLERANCE_VALUE   20

◆ USB_WAIT_CMD_SET_TR_DEQ_POINTER

#define USB_WAIT_CMD_SET_TR_DEQ_POINTER   16

◆ USB_WAIT_CMD_STOP_ENDPOINT

#define USB_WAIT_CMD_STOP_ENDPOINT   15

◆ USB_WAIT_EVENT_BANDWIDTH_REQUEST

#define USB_WAIT_EVENT_BANDWIDTH_REQUEST   35

◆ USB_WAIT_EVENT_CMD_COMPLETION

#define USB_WAIT_EVENT_CMD_COMPLETION   33

◆ USB_WAIT_EVENT_DEVICE_NOTIFICATION

#define USB_WAIT_EVENT_DEVICE_NOTIFICATION   38

◆ USB_WAIT_EVENT_DOORBELL

#define USB_WAIT_EVENT_DOORBELL   36

◆ USB_WAIT_EVENT_HOST_CONTROLLER

#define USB_WAIT_EVENT_HOST_CONTROLLER   37

◆ USB_WAIT_EVENT_MFINDEX

#define USB_WAIT_EVENT_MFINDEX   39

◆ USB_WAIT_EVENT_PORT_STATUS_CHANGE

#define USB_WAIT_EVENT_PORT_STATUS_CHANGE   34

◆ USB_WAIT_EVENT_TRANSFER

#define USB_WAIT_EVENT_TRANSFER   32

◆ USB_WAIT_TRANSFER_DATA_STAGE

#define USB_WAIT_TRANSFER_DATA_STAGE   3

◆ USB_WAIT_TRANSFER_EVENT_DATA

#define USB_WAIT_TRANSFER_EVENT_DATA   7

◆ USB_WAIT_TRANSFER_ISOCH

#define USB_WAIT_TRANSFER_ISOCH   5

◆ USB_WAIT_TRANSFER_LINK

#define USB_WAIT_TRANSFER_LINK   6

◆ USB_WAIT_TRANSFER_NO_OP

#define USB_WAIT_TRANSFER_NO_OP   8

◆ USB_WAIT_TRANSFER_NORMAL

#define USB_WAIT_TRANSFER_NORMAL   1

◆ USB_WAIT_TRANSFER_SETUP_STAGE

#define USB_WAIT_TRANSFER_SETUP_STAGE   2

◆ USB_WAIT_TRANSFER_STATUS_STAGE

#define USB_WAIT_TRANSFER_STATUS_STAGE   4

Typedef Documentation

◆ au_usb_drv_entry

typedef int(* au_usb_drv_entry) (_au_usb_dev_ *dev)

◆ au_usb_drv_unload

typedef int(* au_usb_drv_unload) (_au_usb_dev_ *dev)

◆ AuUSBConfigDesc

◆ AuUSBDescriptor

◆ AuUSBDevDesc

typedef struct _au_dev_desc_ AuUSBDevDesc

◆ AuUSBDeviceStruc

◆ AuUSBEndpointDesc

◆ AuUSBInterfaceDesc

◆ AuUSBQualifierDesc

◆ AuUSBRequestPacket

BSD 2-Clause License

Copyright (c) 2022-2025, Manas Kamal Choudhury All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

◆ AuUSBStringDesc

◆ bulk_transfer

typedef void(* bulk_transfer) (_au_usb_dev_ *usbdev, uint64_t buffer_addr, uint16_t len, void *ep)

◆ control_transfer

typedef void(* control_transfer) (_au_usb_dev_ *usbdev, const AuUSBRequestPacket *request, uint64_t buffer_addr, const size_t len)

◆ get_bulk_ep

typedef void *(* get_bulk_ep) (_au_usb_dev_ *dev, uint8_t dir)

◆ get_config_desc_callback

typedef void(* get_config_desc_callback) (_au_usb_dev_ *dev, uint64_t buffer, uint16_t len, uint8_t id)

◆ get_descriptor_callback

typedef AuUSBDescriptor *(* get_descriptor_callback) (_au_usb_dev_ *dev, uint8_t type)

◆ get_device_desc_callback

typedef void(* get_device_desc_callback) (_au_usb_dev_ *dev, uint64_t buffer, uint16_t len)

◆ get_endpoint

typedef void *(* get_endpoint) (_au_usb_dev_ *dev, uint8_t ep_type)

◆ get_endpoint_address

typedef uint8_t(* get_endpoint_address) (_au_usb_dev_ *dev, void *ep)

◆ get_endpoint_attrib

typedef uint8_t(* get_endpoint_attrib) (_au_usb_dev_ *dev, void *ep)

◆ get_max_pack_sz

typedef int(* get_max_pack_sz) (_au_usb_dev_ *dev, void *ep)

◆ get_string_desc_callback

typedef void(* get_string_desc_callback) (_au_usb_dev_ *dev, uint64_t buffer, uint16_t id)

◆ poll_wait_callback

typedef int(* poll_wait_callback) (_au_usb_dev_ *dev, int poll_wait)

◆ schedule_interrupt_callback

typedef void(* schedule_interrupt_callback) (_au_usb_dev_ *controller, void *ep, uint64_t buffer, void(*callback)(void *dev, void *slot, void *Endp))

◆ set_config_val_callback

typedef void(* set_config_val_callback) (_au_usb_dev_ *dev, uint8_t config_val)

Function Documentation

◆ AuUSBDeviceConnect()

AU_EXTERN AU_EXPORT void AuUSBDeviceConnect ( AuUSBDeviceStruc device)

◆ AuUSBDeviceDisconnect()

AU_EXTERN AU_EXPORT void AuUSBDeviceDisconnect ( AuUSBDeviceStruc dev)

◆ AuUSBGetDeviceStruc()

AU_EXTERN AU_EXPORT void * AuUSBGetDeviceStruc ( void *  data)

◆ AuUSBSubsystemInit()

void AuUSBSubsystemInit ( )
extern