forked from Minki/linux
usb: dwc2: Add safety check for STSPHSERCVD intr
STSPHSERCVD (status phase received) interrupt should be handled when EP0 is in DWC2_EP0_DATA_OUT state. Sometimes STSPHSERCVD interrupt asserted , when EP0 is not in DATA_OUT state. Spurios interrupt. Acked-by: John Youn <johnyoun@synopsys.com> Signed-off-by: Minas Harutyunyan <hminas@synopsys.com> Signed-off-by: Grigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
201ec568c5
commit
9e95a66cce
@ -2976,9 +2976,13 @@ static void dwc2_hsotg_epint(struct dwc2_hsotg *hsotg, unsigned int idx,
|
||||
if (ints & DXEPINT_STSPHSERCVD) {
|
||||
dev_dbg(hsotg->dev, "%s: StsPhseRcvd\n", __func__);
|
||||
|
||||
/* Move to STATUS IN for DDMA */
|
||||
if (using_desc_dma(hsotg))
|
||||
dwc2_hsotg_ep0_zlp(hsotg, true);
|
||||
/* Safety check EP0 state when STSPHSERCVD asserted */
|
||||
if (hsotg->ep0_state == DWC2_EP0_DATA_OUT) {
|
||||
/* Move to STATUS IN for DDMA */
|
||||
if (using_desc_dma(hsotg))
|
||||
dwc2_hsotg_ep0_zlp(hsotg, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (ints & DXEPINT_BACK2BACKSETUP)
|
||||
|
Loading…
Reference in New Issue
Block a user