From e16d5416540ca2105e7c429cccc91d587abdc808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mo=C5=84?= Date: Thu, 20 Mar 2025 11:00:12 +0100 Subject: [PATCH] drivers: udc_dwc2: Optimize endpoint event clear MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no point in calling k_event_test() to determine what events are posted and then passing that value to k_event_clear(). Simply pass UINT32_MAX to k_event_clear() and use the return value to slightly reduce overhead. Signed-off-by: Tomasz Moń --- drivers/usb/udc/udc_dwc2.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/usb/udc/udc_dwc2.c b/drivers/usb/udc/udc_dwc2.c index 0b014d13cb0e..d6c97ed75cf4 100644 --- a/drivers/usb/udc/udc_dwc2.c +++ b/drivers/usb/udc/udc_dwc2.c @@ -2970,8 +2970,7 @@ static ALWAYS_INLINE void dwc2_thread_handler(void *const arg) if (!priv->hibernated) { LOG_DBG("New transfer(s) in the queue"); - eps = k_event_test(&priv->xfer_new, UINT32_MAX); - k_event_clear(&priv->xfer_new, eps); + eps = k_event_clear(&priv->xfer_new, UINT32_MAX); } else { /* Events will be handled after hibernation exit */ eps = 0; @@ -2993,8 +2992,7 @@ static ALWAYS_INLINE void dwc2_thread_handler(void *const arg) k_event_clear(&priv->drv_evt, BIT(DWC2_DRV_EVT_EP_FINISHED)); if (!priv->hibernated) { - eps = k_event_test(&priv->xfer_finished, UINT32_MAX); - k_event_clear(&priv->xfer_finished, eps); + eps = k_event_clear(&priv->xfer_finished, UINT32_MAX); } else { /* Events will be handled after hibernation exit */ eps = 0;