|
Zephyr Project API 4.0.0
A Scalable Open Source RTOS
|
New USB device controller (UDC) driver API. More...
#include <zephyr/kernel.h>#include <zephyr/device.h>#include <zephyr/drivers/usb/udc_buf.h>#include <zephyr/sys/atomic.h>#include <zephyr/usb/usb_ch9.h>Go to the source code of this file.
Data Structures | |
| struct | udc_device_caps |
| USB device controller capabilities. More... | |
| struct | udc_ep_caps |
| USB device controller endpoint capabilities. More... | |
| struct | udc_ep_stat |
| USB device controller endpoint status. More... | |
| struct | udc_ep_config |
| USB device controller endpoint configuration. More... | |
| struct | udc_event |
| USB device controller event. More... | |
| struct | udc_buf_info |
| UDC endpoint buffer info. More... | |
| struct | udc_api |
| UDC driver API This is the mandatory API any USB device controller driver needs to expose with exception of: device_speed(), test_mode() are only required for HS controllers. More... | |
| struct | udc_data |
| Common UDC driver data structure. More... | |
Macros | |
| #define | UDC_STATUS_INITIALIZED 0 |
| Controller is initialized by udc_init() and can generate the VBUS events, if capable, but shall not be recognizable by host. | |
| #define | UDC_STATUS_ENABLED 1 |
| Controller is enabled and all API functions are available, controller is recognizable by host. | |
| #define | UDC_STATUS_SUSPENDED 2 |
| Controller is suspended by the host. | |
Typedefs | |
| typedef int(* | udc_event_cb_t) (const struct device *dev, const struct udc_event *const event) |
| Callback to submit UDC event to higher layer. | |
Enumerations | |
| enum | udc_mps0 { UDC_MPS0_8 , UDC_MPS0_16 , UDC_MPS0_32 , UDC_MPS0_64 } |
| Maximum packet size of control endpoint supported by the controller. More... | |
| enum | udc_bus_speed { UDC_BUS_UNKNOWN , UDC_BUS_SPEED_FS , UDC_BUS_SPEED_HS , UDC_BUS_SPEED_SS } |
| USB device actual speed. More... | |
| enum | udc_event_type { UDC_EVT_VBUS_READY , UDC_EVT_VBUS_REMOVED , UDC_EVT_RESUME , UDC_EVT_SUSPEND , UDC_EVT_RESET , UDC_EVT_SOF , UDC_EVT_EP_REQUEST , UDC_EVT_ERROR } |
| USB device controller event types. More... | |
Functions | |
| static bool | udc_is_initialized (const struct device *dev) |
| Checks whether the controller is initialized. | |
| static bool | udc_is_enabled (const struct device *dev) |
| Checks whether the controller is enabled. | |
| static bool | udc_is_suspended (const struct device *dev) |
| Checks whether the controller is suspended. | |
| int | udc_init (const struct device *dev, udc_event_cb_t event_cb, const void *const event_ctx) |
| Initialize USB device controller. | |
| int | udc_enable (const struct device *dev) |
| Enable USB device controller. | |
| int | udc_disable (const struct device *dev) |
| Disable USB device controller. | |
| int | udc_shutdown (const struct device *dev) |
| Poweroff USB device controller. | |
| static struct udc_device_caps | udc_caps (const struct device *dev) |
| Get USB device controller capabilities. | |
| enum udc_bus_speed | udc_device_speed (const struct device *dev) |
| Get actual USB device speed. | |
| static int | udc_set_address (const struct device *dev, const uint8_t addr) |
| Set USB device address. | |
| static int | udc_test_mode (const struct device *dev, const uint8_t mode, const bool dryrun) |
| Enable Test Mode. | |
| static int | udc_host_wakeup (const struct device *dev) |
| Initiate host wakeup procedure. | |
| int | udc_ep_try_config (const struct device *dev, const uint8_t ep, const uint8_t attributes, uint16_t *const mps, const uint8_t interval) |
| Try an endpoint configuration. | |
| int | udc_ep_enable (const struct device *dev, const uint8_t ep, const uint8_t attributes, const uint16_t mps, const uint8_t interval) |
| Configure and enable endpoint. | |
| int | udc_ep_disable (const struct device *dev, const uint8_t ep) |
| Disable endpoint. | |
| int | udc_ep_set_halt (const struct device *dev, const uint8_t ep) |
| Halt endpoint. | |
| int | udc_ep_clear_halt (const struct device *dev, const uint8_t ep) |
| Clear endpoint halt. | |
| int | udc_ep_enqueue (const struct device *dev, struct net_buf *const buf) |
| Queue USB device controller request. | |
| int | udc_ep_dequeue (const struct device *dev, const uint8_t ep) |
| Remove all USB device controller requests from endpoint queue. | |
| struct net_buf * | udc_ep_buf_alloc (const struct device *dev, const uint8_t ep, const size_t size) |
| Allocate UDC request buffer. | |
| int | udc_ep_buf_free (const struct device *dev, struct net_buf *const buf) |
| Free UDC request buffer. | |
| static void | udc_ep_buf_set_zlp (struct net_buf *const buf) |
| Set ZLP flag in requests metadata. | |
| static struct udc_buf_info * | udc_get_buf_info (const struct net_buf *const buf) |
| Get requests metadata. | |
| static const void * | udc_get_event_ctx (const struct device *dev) |
| Get pointer to higher layer context. | |
| static uint16_t | udc_mps_ep_size (const struct udc_ep_config *const cfg) |
| Get endpoint size from UDC endpoint configuration. | |
New USB device controller (UDC) driver API.
| #define UDC_STATUS_ENABLED 1 |
Controller is enabled and all API functions are available, controller is recognizable by host.
| #define UDC_STATUS_INITIALIZED 0 |
Controller is initialized by udc_init() and can generate the VBUS events, if capable, but shall not be recognizable by host.
| #define UDC_STATUS_SUSPENDED 2 |
Controller is suspended by the host.
| udc_event_cb_t |
Callback to submit UDC event to higher layer.
At the higher level, the event is to be inserted into a message queue. (TBD) Maybe it is better to provide a pointer to k_msgq passed during initialization.
| [in] | dev | Pointer to device struct of the driver instance |
| [in] | event | Point to event structure |
| enum udc_bus_speed |
| enum udc_event_type |
USB device controller event types.
| enum udc_mps0 |