Zephyr Project API 4.0.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
usbh.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2022 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
14#ifndef ZEPHYR_INCLUDE_USBH_H_
15#define ZEPHYR_INCLUDE_USBH_H_
16
17#include <stdint.h>
18#include <zephyr/device.h>
19#include <zephyr/net_buf.h>
20#include <zephyr/sys/dlist.h>
21#include <zephyr/sys/bitarray.h>
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
41 const char *name;
43 struct k_mutex mutex;
45 const struct device *dev;
51 struct sys_bitarray *addr_ba;
52};
53
54#define USBH_CONTROLLER_DEFINE(device_name, uhc_dev) \
55 SYS_BITARRAY_DEFINE_STATIC(ba_##device_name, 128); \
56 static STRUCT_SECTION_ITERABLE(usbh_contex, device_name) = { \
57 .name = STRINGIFY(device_name), \
58 .mutex = Z_MUTEX_INITIALIZER(device_name.mutex), \
59 .dev = uhc_dev, \
60 .addr_ba = &ba_##device_name, \
61 }
62
74
81
83 /* int (*init)(struct usbh_contex *const uhs_ctx); */
85 int (*request)(struct usbh_contex *const uhs_ctx,
86 struct uhc_transfer *const xfer, int err);
88 int (*connected)(struct usbh_contex *const uhs_ctx);
90 int (*removed)(struct usbh_contex *const uhs_ctx);
92 int (*rwup)(struct usbh_contex *const uhs_ctx);
94 int (*suspended)(struct usbh_contex *const uhs_ctx);
96 int (*resumed)(struct usbh_contex *const uhs_ctx);
97};
98
101#define USBH_DEFINE_CLASS(name) \
102 static STRUCT_SECTION_ITERABLE(usbh_class_data, name)
103
104
112int usbh_init(struct usbh_contex *uhs_ctx);
113
123int usbh_enable(struct usbh_contex *uhs_ctx);
124
134int usbh_disable(struct usbh_contex *uhs_ctx);
135
145int usbh_shutdown(struct usbh_contex *const uhs_ctx);
146
151#ifdef __cplusplus
152}
153#endif
154
155#endif /* ZEPHYR_INCLUDE_USBH_H_ */
struct _dnode sys_dlist_t
Doubly-linked list structure.
Definition dlist.h:50
int usbh_shutdown(struct usbh_contex *const uhs_ctx)
Shutdown the USB host support.
int usbh_disable(struct usbh_contex *uhs_ctx)
Disable the USB host support.
int usbh_init(struct usbh_contex *uhs_ctx)
Initialize the USB host support;.
int usbh_enable(struct usbh_contex *uhs_ctx)
Enable the USB host support and class instances.
Buffer management.
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Runtime device structure (in ROM) per driver instance.
Definition device.h:453
Mutex Structure.
Definition kernel.h:3025
UHC endpoint buffer info.
Definition uhc.h:114
Host representation of a USB device.
Definition uhc.h:68
USB host class data and class instance API.
Definition usbh.h:78
int(* request)(struct usbh_contex *const uhs_ctx, struct uhc_transfer *const xfer, int err)
Initialization of the class implementation.
Definition usbh.h:85
int(* rwup)(struct usbh_contex *const uhs_ctx)
Bus remote wakeup handler
Definition usbh.h:92
struct usbh_code_triple code
Class code supported by this instance.
Definition usbh.h:80
int(* connected)(struct usbh_contex *const uhs_ctx)
Device connected handler
Definition usbh.h:88
int(* resumed)(struct usbh_contex *const uhs_ctx)
Bus resumed handler
Definition usbh.h:96
int(* suspended)(struct usbh_contex *const uhs_ctx)
Bus suspended handler
Definition usbh.h:94
int(* removed)(struct usbh_contex *const uhs_ctx)
Device removed handler
Definition usbh.h:90
USB Class Code triple.
Definition usbh.h:66
uint8_t proto
Class Protocol Code.
Definition usbh.h:72
uint8_t dclass
Device Class Code.
Definition usbh.h:68
uint8_t sub
Class Subclass Code.
Definition usbh.h:70
USB host support runtime context.
Definition usbh.h:39
const struct device * dev
Pointer to UHC device struct.
Definition usbh.h:45
sys_dlist_t udevs
USB device list.
Definition usbh.h:47
struct usb_device * root
USB root device.
Definition usbh.h:49
const char * name
Name of the USB device.
Definition usbh.h:41
struct k_mutex mutex
Access mutex.
Definition usbh.h:43
struct sys_bitarray * addr_ba
Allocated device addresses bit array.
Definition usbh.h:51
USB host controller (UHC) driver API.