Skip to content

Commit ee1cead

Browse files
author
Josuah Demangeon
committed
flatten/simplify completion event logic
Signed-off-by: Josuah Demangeon <[email protected]>
1 parent c10544e commit ee1cead

File tree

1 file changed

+3
-7
lines changed

1 file changed

+3
-7
lines changed

drivers/usb/uhc/uhc_dwc2.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -819,8 +819,10 @@ static void uhc_dwc2_isr_chan_handler(const struct device *dev, struct uhc_dwc2_
819819
if (chan->halt_requested) {
820820
chan->halt_requested = 0;
821821
chan_event |= BIT(DWC2_CHAN_EVENT_HALT_REQ);
822-
} else {
822+
} else if (uhc_dwc2_buffer_is_done(chan)) {
823823
chan_event |= BIT(DWC2_CHAN_EVENT_CPLT);
824+
} else {
825+
uhc_dwc2_buffer_exec_proceed(dev, chan);
824826
}
825827

826828
} else if (hcint & USB_DWC2_HCINT_XFERCOMPL) {
@@ -840,12 +842,6 @@ static void uhc_dwc2_isr_chan_handler(const struct device *dev, struct uhc_dwc2_
840842
__ASSERT(false, "Unknown channel interrupt, HCINT=%08Xh", hcint);
841843
}
842844

843-
if ((chan_event & BIT(DWC2_CHAN_EVENT_CPLT)) && !uhc_dwc2_buffer_is_done(chan)) {
844-
/* No completion event until the buffer is complete software-side too */
845-
chan_event &= ~BIT(DWC2_CHAN_EVENT_CPLT);
846-
uhc_dwc2_buffer_exec_proceed(dev, chan);
847-
}
848-
849845
if (chan_event != 0) {
850846
atomic_or(&chan->event, chan_event);
851847
k_event_set(&priv->event, BIT(UHC_DWC2_EVENT_CHAN0 + chan->chan_idx));

0 commit comments

Comments
 (0)