On Fri, Feb 10, 2012 at 12:36:30PM +0200, Felipe Balbi wrote: > From: Gerard Cauvy <g-cauvy1@xxxxxx> > > When host requests us to enter a test mode, > we cannot directly enter the test mode before > Status Phase is completed, otherwise the core > will never be able to deliver the Status ZLP > to host, because it has already entered the > requested Test Mode. > > In order to fix the error, we move the actual > start of Test Mode right after we receive > Transfer Complete event of the status phase. > > Signed-off-by: Gerard Cauvy <g-cauvy1@xxxxxx> > Signed-off-by: Felipe Balbi <balbi@xxxxxx> > --- > drivers/usb/dwc3/core.h | 3 +++ > drivers/usb/dwc3/ep0.c | 20 ++++++++++++-------- > drivers/usb/dwc3/gadget.c | 1 + > 3 files changed, 16 insertions(+), 8 deletions(-) > > diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h > index 71d958a..4dac982 100644 > --- a/drivers/usb/dwc3/core.h > +++ b/drivers/usb/dwc3/core.h > @@ -684,6 +684,9 @@ struct dwc3 { > > struct dwc3_hwparams hwparams; > struct dentry *root; > + > + u8 test_mode; > + u8 test_mode_nr; > }; > > /* -------------------------------------------------------------------------- */ > diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c > index 5104dbf..e336f2a 100644 > --- a/drivers/usb/dwc3/ep0.c > +++ b/drivers/usb/dwc3/ep0.c > @@ -316,7 +316,6 @@ static int dwc3_ep0_handle_feature(struct dwc3 *dwc, > u32 wValue; > u32 wIndex; > int ret; > - u32 mode; > > wValue = le16_to_cpu(ctrl->wValue); > wIndex = le16_to_cpu(ctrl->wIndex); > @@ -355,13 +354,8 @@ static int dwc3_ep0_handle_feature(struct dwc3 *dwc, > if (!set) > return -EINVAL; > > - mode = wIndex >> 8; > - ret = dwc3_gadget_set_test_mode(dwc, mode); > - if (ret < 0) { > - dev_dbg(dwc->dev, "Invalid Test #%d\n", > - mode); > - return ret; > - } > + dwc->test_mode_nr = wIndex >> 8; > + dwc->test_mode = true; > } > break; > > @@ -604,6 +598,15 @@ static void dwc3_ep0_complete_req(struct dwc3 *dwc, > dwc3_gadget_giveback(dep, r, 0); > } > > + if (dwc->test_mode) { I forgot to declare ret here. This was my fault not Gerard's... will fix. -- balbi
Attachment:
signature.asc
Description: Digital signature