14#ifndef ZEPHYR_INCLUDE_USBH_H_
15#define ZEPHYR_INCLUDE_USBH_H_
67#define USBH_CONTROLLER_DEFINE(device_name, uhc_dev) \
68 SYS_BITARRAY_DEFINE_STATIC(ba_##device_name, 128); \
69 static STRUCT_SECTION_ITERABLE(usbh_context, device_name) = { \
70 .name = STRINGIFY(device_name), \
71 .mutex = Z_MUTEX_INITIALIZER(device_name.mutex), \
73 .addr_ba = &ba_##device_name, \
142enum usbh_class_state {
144 USBH_CLASS_STATE_IDLE,
146 USBH_CLASS_STATE_BOUND,
148 USBH_CLASS_STATE_ERROR,
158struct usbh_class_node {
160 struct usbh_class_data *
const c_data;
162 const struct usbh_class_filter *filters;
164 enum usbh_class_state
state;
180#define USBH_DEFINE_CLASS(class_name, class_api, class_priv, filt) \
181 static struct usbh_class_data UTIL_CAT(class_data_, class_name) = { \
182 .name = STRINGIFY(class_name), \
184 .priv = class_priv, \
186 static STRUCT_SECTION_ITERABLE(usbh_class_node, class_name) = { \
187 .c_data = &UTIL_CAT(class_data_, class_name), \
struct _dnode sys_dlist_t
Doubly-linked list structure.
Definition dlist.h:50
int usbh_enable(struct usbh_context *uhs_ctx)
Enable the USB host support and class instances.
int usbh_init(struct usbh_context *uhs_ctx)
Initialize the USB host support;.
int usbh_disable(struct usbh_context *uhs_ctx)
Disable the USB host support.
int usbh_shutdown(struct usbh_context *const uhs_ctx)
Shutdown the USB host support.
state
Definition parser_state.h:29
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition device.h:513
Mutex Structure.
Definition kernel.h:3402
UHC endpoint buffer info.
Definition uhc.h:119
Host representation of a USB device.
Definition uhc.h:73
USB host class instance API.
Definition usbh.h:99
int(* init)(struct usbh_class_data *const c_data, struct usbh_context *const uhs_ctx)
Host initialization handler, before any device is connected.
Definition usbh.h:101
int(* resumed)(struct usbh_class_data *const c_data)
Bus resumed handler (optional).
Definition usbh.h:115
int(* probe)(struct usbh_class_data *const c_data, struct usb_device *const udev, const uint8_t iface)
Device connection handler.
Definition usbh.h:107
int(* suspended)(struct usbh_class_data *const c_data)
Bus suspended handler (optional).
Definition usbh.h:113
int(* completion_cb)(struct usbh_class_data *const c_data, struct uhc_transfer *const xfer)
Request completion handler.
Definition usbh.h:104
int(* removed)(struct usbh_class_data *const c_data)
Device removal handler.
Definition usbh.h:111
USB host class instance data.
Definition usbh.h:121
struct usbh_class_api * api
Pointer to host support class API.
Definition usbh.h:131
struct usbh_context * uhs_ctx
Pointer to USB host stack context structure.
Definition usbh.h:125
const char * name
Name of the USB host class instance.
Definition usbh.h:123
uint8_t iface
First interface number or claimed function.
Definition usbh.h:129
struct usb_device * udev
Pointer to USB device this class is used for.
Definition usbh.h:127
void * priv
Pointer to private data.
Definition usbh.h:133
Information about a device, which is relevant for matching a particular class.
Definition usbh.h:81
uint16_t pid
Product ID.
Definition usbh.h:85
uint8_t flags
Flags that tell which field to match.
Definition usbh.h:93
uint8_t sub
Subclass Code.
Definition usbh.h:89
uint16_t vid
Vendor ID.
Definition usbh.h:83
uint8_t proto
Protocol Code.
Definition usbh.h:91
USB host support runtime context.
Definition usbh.h:50
struct usb_device * root
USB root device.
Definition usbh.h:62
struct usbh_status status
Status of the USB host support.
Definition usbh.h:58
sys_dlist_t udevs
USB device list.
Definition usbh.h:60
struct k_mutex mutex
Access mutex.
Definition usbh.h:54
const char * name
Name of the USB device.
Definition usbh.h:52
struct sys_bitarray * addr_ba
Allocated device addresses bit array.
Definition usbh.h:64
const struct device * dev
Pointer to UHC device struct.
Definition usbh.h:56
USB host support status.
Definition usbh.h:40
unsigned int enabled
USB host support is enabled.
Definition usbh.h:44
unsigned int initialized
USB host support is initialized.
Definition usbh.h:42
USB host controller (UHC) driver API.