RE: dwc2: Transaction errors with device connected at boot

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> From: Paul Zimmerman
> Sent: Monday, May 13, 2013 11:58 AM
> 
> > From: Matthijs Kooijman [mailto:matthijs@xxxxxxxx]
> > Sent: Wednesday, May 08, 2013 2:02 PM
> >
> > I'm running into an issue with the dwc2 driver. When I power on my board
> > with an usb device (mass storage in this case) connected, the hardware
> > is returning transaction errors (e.g., triggering channel halted +
> > xacterr interrupts) for every transfer scheduled, starting with the
> > first ones.
> >
> > This condition stays even through a reboot, though a power cycle cures
> > the condition (provided I remove the USB device for the boot). If I
> > insert the USB device after the board has booted and the driver has
> > loaded, everything works as expected, also after a reboot (with the
> > device still plugged in).
> >
> > This leads me to suspect there is some issue when the time between the
> > first hardware initialization and the first host channel start is too
> > small or something like that? Any ideas?
> >
> > Also, is there any fixed list of what could cause a transaction error,
> > or is this just a catchall meaning "Something went wrong"?

Hi Matthijs,

I did see a different issue when booting/rebooting the system.
I discovered that the DMA_BIT_MASK(31)'s in dwc2_hcd_init() were
randomly preventing the controller from working after boot. When
I changed both of them to DMA_BIT_MASK(32) the problem went away.
I am going to submit a patch with that change shortly, maybe you
could try that and see if it makes a difference for you?

After making that change, I am unable to reproduce any boot problem
on my platform (PC with the dwc2 controller on a PCIe bus). I wonder
if this could be some issue with the Phy on your platform? Maybe you
could play around with the Phy initialization/resets in the driver
and see if that makes a difference.

I remember when bringing up the driver, that the sleep at the end of
dwc2_core_reset() was very critical to making host mode work. Maybe
you could experiment with that also.

-- 
Paul

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux