Re: [PATCH] usb: dwc2: wa for isoc packet tx fifo flush at periodic frame boundary
From: Thinh Nguyen
Date: Tue Nov 03 2026 - 20:31:50 EST
On Wed, Oct 14, 2026, Fabrice Gasnier wrote:
> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> index 102169b40419..9f02075ba15b 100644
> --- a/drivers/usb/dwc2/gadget.c
> +++ b/drivers/usb/dwc2/gadget.c
> @@ -3449,6 +3449,19 @@ void dwc2_hsotg_core_init_disconnected(struct dwc2_hsotg *hsotg,
> if (hsotg->params.ipg_isoc_en)
> dcfg |= DCFG_IPG_ISOC_SUPPORDED;
>
> + /*
> + * WA for Device Flushes Ongoing ISOC IN Packet at End-of-Periodic-Frame Boundary.
> + * Once passed the end of periodic frame, and the controller is transmitting an
> + * ISOC IN packet, the device fulshes the transmit FIFO. Tune periodic frame
s/fulshes/flushes/
> + * interval to 95% instead of 80% to avoid it.
> + */
> + if (using_desc_dma(hsotg) &&
> + (hsotg->hw_params.snpsid >= DWC2_CORE_REV_2_70a &&
> + hsotg->hw_params.snpsid <= DWC2_CORE_REV_4_00a)) {
This also affects the HS and FS IOT cores 1.00a. Please add
DWC2_HS_IOT_REV_1_00a and DWC2_FS_IOT_REV_1_00a here.
> + dcfg &= ~DCFG_PERFRINT_MASK;
> + dcfg |= ((DCFG_PERFRINT_LIMIT << DCFG_PERFRINT_SHIFT) & DCFG_PERFRINT_MASK);
This can just be:
dcfg |= DCFG_PERFRINT(DCFG_PERFRINT_LIMIT);
This conflicts with your "[PATH] dwc2: fix fifo reinit in
dwc2_hsotg_core_init_disconnected". Please send both as a series and add
Cc stable.
Thanks,
Thinh