Zephyr Project API  3.4.0
A Scalable Open Source RTOS
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>
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
40 const char *name;
42 struct k_mutex mutex;
44 const struct device *dev;
47};
48
49#define USBH_CONTROLLER_DEFINE(device_name, uhc_dev) \
50 static STRUCT_SECTION_ITERABLE(usbh_contex, device_name) = { \
51 .name = STRINGIFY(device_name), \
52 .mutex = Z_MUTEX_INITIALIZER(device_name.mutex), \
53 .dev = uhc_dev, \
54 }
55
66};
67
80};
81
88
90 /* int (*init)(struct usbh_contex *const uhs_ctx); */
92 int (*request)(struct usbh_contex *const uhs_ctx,
93 struct uhc_transfer *const xfer, int err);
95 int (*connected)(struct usbh_contex *const uhs_ctx);
97 int (*removed)(struct usbh_contex *const uhs_ctx);
99 int (*rwup)(struct usbh_contex *const uhs_ctx);
101 int (*suspended)(struct usbh_contex *const uhs_ctx);
103 int (*resumed)(struct usbh_contex *const uhs_ctx);
104};
105
108#define USBH_DEFINE_CLASS(name) \
109 static STRUCT_SECTION_ITERABLE(usbh_class_data, name)
110
111
119int usbh_init(struct usbh_contex *uhs_ctx);
120
130int usbh_enable(struct usbh_contex *uhs_ctx);
131
141int usbh_disable(struct usbh_contex *uhs_ctx);
142
152int usbh_shutdown(struct usbh_contex *const uhs_ctx);
153
158#ifdef __cplusplus
159}
160#endif
161
162#endif /* ZEPHYR_INCLUDE_USBH_H_ */
Doubly-linked list implementation.
struct _dnode sys_dnode_t
Definition: dlist.h:49
struct _dnode sys_dlist_t
Definition: dlist.h:48
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:380
Definition: kernel.h:2822
Definition: uhc.h:38
Class Code.
Definition: usbh.h:71
uint8_t sub
Definition: usbh.h:75
uint8_t dclass
Definition: usbh.h:73
uint8_t reserved
Definition: usbh.h:79
uint8_t proto
Definition: usbh.h:77
USB host class data and class instance API.
Definition: usbh.h:85
int(* request)(struct usbh_contex *const uhs_ctx, struct uhc_transfer *const xfer, int err)
Definition: usbh.h:92
struct usbh_class_code code
Definition: usbh.h:87
int(* rwup)(struct usbh_contex *const uhs_ctx)
Definition: usbh.h:99
int(* connected)(struct usbh_contex *const uhs_ctx)
Definition: usbh.h:95
int(* resumed)(struct usbh_contex *const uhs_ctx)
Definition: usbh.h:103
int(* suspended)(struct usbh_contex *const uhs_ctx)
Definition: usbh.h:101
int(* removed)(struct usbh_contex *const uhs_ctx)
Definition: usbh.h:97
Definition: usbh.h:38
const struct device * dev
Definition: usbh.h:44
sys_dlist_t peripherals
Definition: usbh.h:46
const char * name
Definition: usbh.h:40
struct k_mutex mutex
Definition: usbh.h:42
USB host peripheral structure.
Definition: usbh.h:59
uint8_t speed
Definition: usbh.h:65
sys_dnode_t node
Definition: usbh.h:61
uint8_t addr
Definition: usbh.h:63
USB host controller (UHC) driver API.