12#ifndef ZEPHYR_INCLUDE_UHC_H
13#define ZEPHYR_INCLUDE_UHC_H
146#define UHC_STATUS_INITIALIZED 0
150#define UHC_STATUS_ENABLED 1
208 int (*unlock)(
const struct device *dev);
210 int (*init)(
const struct device *dev);
211 int (*enable)(
const struct device *dev);
212 int (*disable)(
const struct device *dev);
215 int (*bus_reset)(
const struct device *dev);
216 int (*sof_enable)(
const struct device *dev);
217 int (*bus_suspend)(
const struct device *dev);
218 int (*bus_resume)(
const struct device *dev);
220 int (*ep_enqueue)(
const struct device *dev,
222 int (*ep_dequeue)(
const struct device *dev,
242 const struct uhc_api *api = dev->
api;
246 ret = api->bus_reset(dev);
264 const struct uhc_api *api = dev->
api;
268 ret = api->sof_enable(dev);
287 const struct uhc_api *api = dev->
api;
291 ret = api->bus_suspend(dev);
310 const struct uhc_api *api = dev->
api;
314 ret = api->bus_resume(dev);
long atomic_t
Definition: atomic.h:22
ZTEST_BMEM int timeout
Definition: main.c:31
Doubly-linked list implementation.
static bool atomic_test_bit(const atomic_t *target, int bit)
Atomically test a bit.
Definition: atomic.h:131
static int shutdown(int sock, int how)
Definition: socket.h:707
struct _dnode sys_dnode_t
Definition: dlist.h:49
struct _dnode sys_dlist_t
Definition: dlist.h:48
#define UHC_STATUS_INITIALIZED
Definition: uhc.h:146
static bool uhc_is_enabled(const struct device *dev)
Checks whether the controller is enabled.
Definition: uhc.h:196
#define UHC_STATUS_ENABLED
Definition: uhc.h:150
static bool uhc_is_initialized(const struct device *dev)
Checks whether the controller is initialized.
Definition: uhc.h:182
struct uhc_transfer * uhc_xfer_alloc(const struct device *dev, const uint8_t addr, const uint8_t ep, const uint8_t attrib, const uint16_t mps, const uint16_t timeout, void *const owner)
Allocate UHC transfer.
static int uhc_bus_reset(const struct device *dev)
Reset USB bus.
Definition: uhc.h:240
int(* uhc_event_cb_t)(const struct device *dev, const struct uhc_event *const event)
Callback to submit UHC event to higher layer.
Definition: uhc.h:130
static int uhc_bus_resume(const struct device *dev)
Resume USB bus.
Definition: uhc.h:308
int uhc_xfer_buf_free(const struct device *dev, struct net_buf *const buf)
Free UHC request buffer.
int uhc_ep_enqueue(const struct device *dev, struct uhc_transfer *const xfer)
Queue USB host controller transfer.
int uhc_ep_dequeue(const struct device *dev, struct uhc_transfer *const xfer)
Remove a USB host controller transfers from queue.
static struct uhc_device_caps uhc_caps(const struct device *dev)
Get USB host controller capabilities.
Definition: uhc.h:476
static int uhc_bus_suspend(const struct device *dev)
Suspend USB bus.
Definition: uhc.h:285
int uhc_disable(const struct device *dev)
Disable USB host controller.
int uhc_xfer_free(const struct device *dev, struct uhc_transfer *const xfer)
Free UHC transfer and any buffers.
uhc_event_type
USB host controller event types.
Definition: uhc.h:68
struct net_buf * uhc_xfer_buf_alloc(const struct device *dev, struct uhc_transfer *const xfer, const size_t size)
Allocate UHC transfer buffer.
int uhc_init(const struct device *dev, uhc_event_cb_t event_cb)
Initialize USB host controller.
int uhc_shutdown(const struct device *dev)
Poweroff USB host controller.
static int uhc_sof_enable(const struct device *dev)
Enable Start of Frame generator.
Definition: uhc.h:262
int uhc_enable(const struct device *dev)
Enable USB host controller.
@ UHC_EVT_EP_REQUEST
Definition: uhc.h:86
@ UHC_EVT_DEV_CONNECTED_HS
Definition: uhc.h:74
@ UHC_EVT_DEV_CONNECTED_FS
Definition: uhc.h:72
@ UHC_EVT_RWUP
Definition: uhc.h:84
@ UHC_EVT_SUSPENDED
Definition: uhc.h:80
@ UHC_EVT_DEV_REMOVED
Definition: uhc.h:76
@ UHC_EVT_RESUMED
Definition: uhc.h:82
@ UHC_EVT_DEV_CONNECTED_LS
Definition: uhc.h:70
@ UHC_EVT_ERROR
Definition: uhc.h:91
@ UHC_EVT_RESETED
Definition: uhc.h:78
static ZTEST_BMEM volatile int ret
Definition: k_float_disable.c:28
struct _snode sys_snode_t
Definition: slist.h:33
static struct k_spinlock lock
Definition: spinlock_error_case.c:13
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__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:378
void * data
Definition: device.h:388
const void * api
Definition: device.h:384
Definition: kernel.h:2252
Definition: kernel.h:2764
Network buffer representation.
Definition: buf.h:905
uint16_t size
Definition: buf.h:937
struct k_mutex mutex
Definition: uhc.h:162
atomic_t status
Definition: uhc.h:170
void * priv
Definition: uhc.h:172
sys_dlist_t ctrl_xfers
Definition: uhc.h:164
struct uhc_device_caps caps
Definition: uhc.h:160
sys_dlist_t bulk_xfers
Definition: uhc.h:166
uhc_event_cb_t event_cb
Definition: uhc.h:168
uint32_t hs
Definition: uhc.h:140
struct uhc_transfer * xfer
Definition: uhc.h:111
const struct device * dev
Definition: uhc.h:116
uint32_t value
Definition: uhc.h:109
enum uhc_event_type type
Definition: uhc.h:106
int status
Definition: uhc.h:114
sys_snode_t node
Definition: uhc.h:104
unsigned int claimed
Definition: uhc.h:56
void * owner
Definition: uhc.h:62
uint8_t addr
Definition: uhc.h:46
uint16_t mps
Definition: uhc.h:52
uint16_t timeout
Definition: uhc.h:54
unsigned int setup
Definition: uhc.h:60
uint8_t ep
Definition: uhc.h:48
struct k_fifo done
Definition: uhc.h:44
struct k_fifo queue
Definition: uhc.h:42
unsigned int queued
Definition: uhc.h:58
uint8_t attrib
Definition: uhc.h:50
sys_dnode_t node
Definition: uhc.h:40
static fdata_t data[2]
Definition: test_fifo_contexts.c:15
USB Chapter 9 structures and definitions.