Hi Minas, On Wed, Jan 30, 2019 at 9:02 AM Minas Harutyunyan <minas.harutyunyan@xxxxxxxxxxxx> wrote: > Root cause of data messing between IN EP's because all IN EP's use same > TXFIFO. TxFIFO number 7. See DIEPCTL's, bits 22-25 txfnum, from debug logs: > > EP1IN DIEPCTL = 0x11ca8200 > EP2IN DIEPCTL = 0x11ca8200 > EP5IN DIEPCTL = 0x11ce8008 > > Please apply below temporary patch for testing, in > dwc2_hsotg_ep_enable() function add follow row to reset previous value > of TxFIFO num: > > @@ -4005,6 +4016,7 @@ static int dwc2_hsotg_ep_enable(struct usb_ep *ep, > ret = -ENOMEM; > goto error1; > } > + epctrl &= ~(DXEPCTL_TXFNUM_LIMIT << DXEPCTL_TXFNUM_SHIFT); > hsotg->fifo_map |= 1 << fifo_index; > epctrl |= DXEPCTL_TXFNUM(fifo_index); > hs_ep->fifo_index = fifo_index; > Wow! That actually fixes the issue. That's awesome that you found the culprit. Many thanks! I'm assuming that since you mentioned temporary patch that this is not the final patch that we should use. Is this assumption right? > One more note. > We have one patch after 4.14.44: > "usb: dwc2: Fix TxFIFOn sizes and total TxFIFO size issues" > commit ID 9273083a1530891360e9fe4fad26ae96810db499 > > This patch fixes issue with TxFIFO allocations. Actually, based on your > setup regdump, TxFIFO's allocations are NOT wrong (DPTXFSIZN(1-15)) even > without mentioned patch, but issue can popup in some scenarios. > Any case I suggest you apply above patch. > Thanks for pointing this patch. I have applied it on our code base and it does not seem to have adverse effect on our system. So, we'll keep it then as per your suggestion. Regards, Maynard