summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgab-k <[email protected]>2026-03-28 15:45:16 +0100
committergab-k <[email protected]>2026-03-28 15:45:16 +0100
commitd9b122668b71dcd94974377486e6110345cc753b (patch)
treec5724e978a8b97bcf9895699f5d57e4f6ca40fd1 /src
parent7d87926dc608208ce034001c43978acc424415bf (diff)
Minimize changes in ISO OUT reset fix
Diffstat (limited to 'src')
-rw-r--r--src/portable/synopsys/dwc2/dcd_dwc2.c19
1 files changed, 2 insertions, 17 deletions
diff --git a/src/portable/synopsys/dwc2/dcd_dwc2.c b/src/portable/synopsys/dwc2/dcd_dwc2.c
index 203077ffa..fe0b2492c 100644
--- a/src/portable/synopsys/dwc2/dcd_dwc2.c
+++ b/src/portable/synopsys/dwc2/dcd_dwc2.c
@@ -347,25 +347,10 @@ static void edpt_disable(uint8_t rhport, uint8_t ep_addr, bool stall) {
}
}
-// Reset stale ISO OUT endpoint state before re-activation with a different MPS.
-// Unlike edpt_disable(), this does not perform disable handshakes — the endpoint
-// is being immediately re-activated by the caller.
+// Force ISO OUT EP into NAK before re-activating it with a changed MPS.
static void edpt_iso_out_reset(uint8_t rhport, uint8_t epnum) {
- dwc2_regs_t* dwc2 = DWC2_REG(rhport);
- dwc2_dep_t* epout = &dwc2->epout[epnum];
-
- dwc2->daintmsk &= ~TU_BIT(epnum + DAINT_SHIFT(TUSB_DIR_OUT));
- // Full register write (not |=) to clear all bits including active/enabled state
+ dwc2_dep_t* epout = &DWC2_REG(rhport)->epout[epnum];
epout->doepctl = DOEPCTL_SNAK;
- epout->doepint = 0xFFFFFFFFu;
- epout->doeptsiz = 0;
- epout->doepdma = 0;
-
- xfer_ctl_t* xfer = XFER_CTL_BASE(epnum, TUSB_DIR_OUT);
- xfer->buffer = NULL;
- xfer->ff = NULL;
- xfer->total_len = 0;
- xfer->iso_retry = 0;
}
// Since this function returns void, it is not possible to return a boolean success message