Skip to content

Commit dedc29a

Browse files
author
Josuah Demangeon
committed
usb: host: wrap the mutex lock with a helper
Hide the mutex lock details inside a wrapper call, like done for the device stack API. This is not used for the per-device lock of the host stack which use a different mutex lock. Signed-off-by: Josuah Demangeon <[email protected]>
1 parent 4202f6e commit dedc29a

File tree

2 files changed

+29
-8
lines changed

2 files changed

+29
-8
lines changed

subsys/usb/host/usbh_api.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include <errno.h>
88
#include <zephyr/sys/util.h>
9+
#include "usbh_host.h"
910
#include "usbh_internal.h"
1011

1112
#include <zephyr/logging/log.h>
@@ -15,7 +16,7 @@ int usbh_init(struct usbh_context *uhs_ctx)
1516
{
1617
int ret;
1718

18-
k_mutex_lock(&uhs_ctx->mutex, K_FOREVER);
19+
usbh_host_lock(uhs_ctx);
1920

2021
if (!device_is_ready(uhs_ctx->dev)) {
2122
LOG_ERR("USB host controller is not ready");
@@ -32,15 +33,15 @@ int usbh_init(struct usbh_context *uhs_ctx)
3233
ret = usbh_init_device_intl(uhs_ctx);
3334

3435
init_exit:
35-
k_mutex_unlock(&uhs_ctx->mutex);
36+
usbh_host_unlock(uhs_ctx);
3637
return ret;
3738
}
3839

3940
int usbh_enable(struct usbh_context *uhs_ctx)
4041
{
4142
int ret;
4243

43-
k_mutex_lock(&uhs_ctx->mutex, K_FOREVER);
44+
usbh_host_lock(uhs_ctx);
4445

4546
if (!uhc_is_initialized(uhs_ctx->dev)) {
4647
LOG_WRN("USB host controller is not initialized");
@@ -61,7 +62,7 @@ int usbh_enable(struct usbh_context *uhs_ctx)
6162
}
6263

6364
enable_exit:
64-
k_mutex_unlock(&uhs_ctx->mutex);
65+
usbh_host_unlock(uhs_ctx);
6566
return ret;
6667
}
6768

@@ -74,14 +75,14 @@ int usbh_disable(struct usbh_context *uhs_ctx)
7475
return 0;
7576
}
7677

77-
k_mutex_lock(&uhs_ctx->mutex, K_FOREVER);
78+
usbh_host_lock(uhs_ctx);
7879

7980
ret = uhc_disable(uhs_ctx->dev);
8081
if (ret) {
8182
LOG_ERR("Failed to disable USB controller");
8283
}
8384

84-
k_mutex_unlock(&uhs_ctx->mutex);
85+
usbh_host_unlock(uhs_ctx);
8586

8687
return 0;
8788
}
@@ -90,14 +91,14 @@ int usbh_shutdown(struct usbh_context *const uhs_ctx)
9091
{
9192
int ret;
9293

93-
k_mutex_lock(&uhs_ctx->mutex, K_FOREVER);
94+
usbh_host_lock(uhs_ctx);
9495

9596
ret = uhc_shutdown(uhs_ctx->dev);
9697
if (ret) {
9798
LOG_ERR("Failed to shutdown USB device");
9899
}
99100

100-
k_mutex_unlock(&uhs_ctx->mutex);
101+
usbh_host_unlock(uhs_ctx);
101102

102103
return ret;
103104
}

subsys/usb/host/usbh_host.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,24 @@ static inline bool usbd_is_initialized(const struct usbh_context *const uhs_ctx)
3434
return uhs_ctx->status.initialized;
3535
}
3636

37+
/**
38+
* @brief Lock the USB host stack context
39+
*
40+
* @param[in] uhs_ctx Pointer to a host context
41+
*/
42+
static inline void usbh_host_lock(struct usbh_context *const uhs_ctx)
43+
{
44+
k_mutex_lock(&uhs_ctx->mutex, K_FOREVER);
45+
}
46+
47+
/**
48+
* @brief Unlock the USB host stack context
49+
*
50+
* @param[in] uhs_ctx Pointer to a host context
51+
*/
52+
static inline void usbh_host_unlock(struct usbh_context *const uhs_ctx)
53+
{
54+
k_mutex_unlock(&uhs_ctx->mutex);
55+
}
56+
3757
#endif /* ZEPHYR_INCLUDE_USBH_HOST_H */

0 commit comments

Comments
 (0)