Эх сурвалжийг харах

usb: dwc3: gadget: clear events in top-half handler

Now that all the infrastructure is in place, we can
clear events in the top-half handler in order to
bring IRQ line low ASAP.

This is also a necessary step in order to implement
workaround for known erratum in follow-up patches.

Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
John Youn 8 жил өмнө
parent
commit
65aca32050

+ 2 - 2
drivers/usb/dwc3/gadget.c

@@ -2836,8 +2836,6 @@ static irqreturn_t dwc3_process_event_buf(struct dwc3_event_buffer *evt)
 		 */
 		 */
 		evt->lpos = (evt->lpos + 4) % evt->length;
 		evt->lpos = (evt->lpos + 4) % evt->length;
 		left -= 4;
 		left -= 4;
-
-		dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), 4);
 	}
 	}
 
 
 	evt->count = 0;
 	evt->count = 0;
@@ -2899,6 +2897,8 @@ static irqreturn_t dwc3_check_event_buf(struct dwc3_event_buffer *evt)
 	if (amount < count)
 	if (amount < count)
 		memcpy(evt->cache, evt->buf, count - amount);
 		memcpy(evt->cache, evt->buf, count - amount);
 
 
+	dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), count);
+
 	return IRQ_WAKE_THREAD;
 	return IRQ_WAKE_THREAD;
 }
 }