Hi, On Wed, Oct 30, 2013 at 12:32:29PM -0400, Alan Stern wrote: > On Wed, 30 Oct 2013, Alan Stern wrote: > > > I think you have found a bug in the dwc3 driver. > > > At this point, because the IGNORE_BULK_OUT bit is set, g_mass_storage > > issues a usb_ep_clear_halt() call for the bulk-in (CSW) endpoint. > > This tells the dwc3 driver to change the endpoint's status back to 0: > > > > if (test_and_clear_bit(IGNORE_BULK_OUT, > > &common->fsg->atomic_bitflags)) > > usb_ep_clear_halt(common->fsg->bulk_in); > > > > > INFO Retrieving status on CBW endpoint > > > INFO CBW endpoint status = 0x0 > > > INFO Retrieving status on CSW endpoint > > > INFO CSW endpoint status = 0x1 > > > > But the status is still set to 1. Clearly this is a bug in dwc3. > > And indeed it is. The dwc3 driver does not implement the wedge method > correctly. This patch should fix it. Let me know how it works. now that I reread documentation on set_wedge() I see that Alan's patch is correct. dwc3 should ignore CLEAR_FEATURE(HALT_ENDPOINT) from the host, but if the gadget driver directly calls clear_halt() is should succeed. I guess I didn't see this before because I was running mass storage with stall=0... Alan, if you can send as a proper patch after Pratyush gives his Tested-by, that'd be great. -- balbi
Attachment:
signature.asc
Description: Digital signature