[U-Boot] [PATCH] usb: dwc2: Enhance interrupt handling for CONTROL transaction

Chin Liang See clsee at altera.com
Tue Jan 5 16:51:47 CET 2016


On Tue, 2016-01-05 at 15:36 +0100, Marek Vasut wrote:
> On Tuesday, January 05, 2016 at 06:00:04 AM, Chin Liang See wrote:
> > Per DesignWare USB OTG databook, driver should retry up to
> > 3 times when transaction error (hcint.xacterr) happen. But
> > the 3 times doesn't count when the response is nack
> > (hcint.nak) or frame overrun (hcint.frmoverun)
> > 
> > This patch solved the enumeration error as spotted at socfpga
> > cyclone5_socdk when plugging in certain pendrive.
> > 
> > Signed-off-by: Chin Liang See <clsee at altera.com>
> > Cc: Marek Vasut <marex at denx.de>
> > Cc: Dinh Nguyen <dinguyen at opensource.altera.com>
> > Cc: Dinh Nguyen <dinh.linux at gmail.com>
> > Cc: Pavel Machek <pavel at denx.de>
> > Cc: Oleksandr Tymoshenko <gonzo at bluezbox.com>
> > Cc: Stephen Warren <swarren at wwwdotorg.org>
> > Cc: Alexander Stein <alexanders83 at web.de>
> > Cc: Peter Griffin <peter.griffin at linaro.org>
> 
> I applied this change on top of u-boot-socfpga/master and tested it
> on
> SoCFPGA CycloneV SoCDK with "Sandisk cruzer force" stick. The board
> gets 
> completely stuck if I have dcache ENABLED and perform 'usb reset'.
> This
> patch is:
> 

Thanks Marek for testing. I managed to find a SanDisk Cruzer Blade and
notice the same fail behaviours as yours. FYI, note that this patch
works well with other 3 pendrive that I have.

With SanDisk, the dwc2 driver was timed out as hcint.xfercomp and
chhltd never get set even after 1s. It keep retrying endlessly due to
miss handling for the ETIMEDOUT within this patch. 

In short, the retry doesn't work for SanDisk but the dcache disable
works. Need to figure out more what cause the failure.

Thanks
Chin Liang


More information about the U-Boot mailing list