Zephyr Project API  3.3.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
39 const char *name;
41 struct k_mutex mutex;
43 const struct device *dev;
46};
47
48#define USBH_CONTROLLER_DEFINE(device_name, uhc_dev) \
49 static STRUCT_SECTION_ITERABLE(usbh_contex, device_name) = { \
50 .name = STRINGIFY(device_name), \
51 .mutex = Z_MUTEX_INITIALIZER(device_name.mutex), \
52 .dev = uhc_dev, \
53 }
54
65};
66
79};
80
87
89 /* int (*init)(struct usbh_contex *const uhs_ctx); */
91 int (*request)(struct usbh_contex *const uhs_ctx,
92 struct uhc_transfer *const xfer, int err);
94 int (*connected)(struct usbh_contex *const uhs_ctx);
96 int (*removed)(struct usbh_contex *const uhs_ctx);
98 int (*rwup)(struct usbh_contex *const uhs_ctx);
100 int (*suspended)(struct usbh_contex *const uhs_ctx);
102 int (*resumed)(struct usbh_contex *const uhs_ctx);
103};
104
107#define USBH_DEFINE_CLASS(name) \
108 static STRUCT_SECTION_ITERABLE(usbh_class_data, name)
109
110
118int usbh_init(struct usbh_contex *uhs_ctx);
119
129int usbh_enable(struct usbh_contex *uhs_ctx);
130
140int usbh_disable(struct usbh_contex *uhs_ctx);
141
151int usbh_shutdown(struct usbh_contex *const uhs_ctx);
152
157#ifdef __cplusplus
158}
159#endif
160
161#endif /* ZEPHYR_INCLUDE_USBH_H_ */
Doubly-linked list implementation.
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.
struct _dnode sys_dnode_t
Definition: dlist.h:49
struct _dnode sys_dlist_t
Definition: dlist.h:48
Buffer management.
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
Runtime device structure (in ROM) per driver instance.
Definition: device.h:378
Definition: kernel.h:2764
Definition: uhc.h:38
Class Code.
Definition: usbh.h:70
uint8_t sub
Definition: usbh.h:74
uint8_t dclass
Definition: usbh.h:72
uint8_t reserved
Definition: usbh.h:78
uint8_t proto
Definition: usbh.h:76
USB host class data and class instance API.
Definition: usbh.h:84
int(* request)(struct usbh_contex *const uhs_ctx, struct uhc_transfer *const xfer, int err)
Definition: usbh.h:91
struct usbh_class_code code
Definition: usbh.h:86
int(* rwup)(struct usbh_contex *const uhs_ctx)
Definition: usbh.h:98
int(* connected)(struct usbh_contex *const uhs_ctx)
Definition: usbh.h:94
int(* resumed)(struct usbh_contex *const uhs_ctx)
Definition: usbh.h:102
int(* suspended)(struct usbh_contex *const uhs_ctx)
Definition: usbh.h:100
int(* removed)(struct usbh_contex *const uhs_ctx)
Definition: usbh.h:96
Definition: usbh.h:37
const struct device * dev
Definition: usbh.h:43
sys_dlist_t peripherals
Definition: usbh.h:45
const char * name
Definition: usbh.h:39
struct k_mutex mutex
Definition: usbh.h:41
USB host peripheral structure.
Definition: usbh.h:58
uint8_t speed
Definition: usbh.h:64
sys_dnode_t node
Definition: usbh.h:60
uint8_t addr
Definition: usbh.h:62
USB host controller (UHC) driver API.