From 0c7732bf5693d040772f78f1e504327700b79171 Mon Sep 17 00:00:00 2001 From: qi duan Date: Tue, 6 Mar 2018 18:06:15 +0800 Subject: [PATCH] USB: PCD: fix setup packet count issue PD#161573: USB: PCD: fix setup packet count issue. merge from dwc_otg version3.30a Change-Id: I636129dfadc0b28e04d09df771aa062ee73670fa Signed-off-by: qi duan --- drivers/amlogic/usb/dwc_otg/310/dwc_otg_pcd_intr.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/amlogic/usb/dwc_otg/310/dwc_otg_pcd_intr.c b/drivers/amlogic/usb/dwc_otg/310/dwc_otg_pcd_intr.c index 092bc835e0ee..264749be0dc2 100644 --- a/drivers/amlogic/usb/dwc_otg/310/dwc_otg_pcd_intr.c +++ b/drivers/amlogic/usb/dwc_otg/310/dwc_otg_pcd_intr.c @@ -1815,12 +1815,16 @@ static inline void pcd_setup(dwc_otg_pcd_t *pcd) ("\n\n----------- CANNOT handle > 1 setup packet in DMA mode\n\n"); if ((core_if->snpsid >= OTG_CORE_REV_3_00a) - && (core_if->dma_enable == 1) && (core_if->dma_desc_enable == 0)) + && (core_if->dma_enable == 1) && (core_if->dma_desc_enable == 0)) { + if (doeptsize0.b.supcnt == 3 && ep0->dwc_ep.stp_rollover == 0) { + DWC_ERROR(" !!! Setup packet count\n"); + return; + } ctrl = (pcd->setup_pkt + (3 - doeptsize0.b.supcnt - 1 + ep0->dwc_ep.stp_rollover))->req; - + } #ifdef DEBUG_EP0 DWC_DEBUGPL(DBG_PCD, "SETUP %02x.%02x v%04x i%04x l%04x\n", ctrl.bmRequestType, ctrl.bRequest,