Adding Peter and Marek. On Mon, Sep 23, 2013 at 4:58 PM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > On Mon, 23 Sep 2013, Robert Hodaszi wrote: > >> Hi, >> >> I had a lot of USB errors on i.mx28. I could reproduce it most easily >> with USB-serial adapters, and USB modems (CDC and WWAN drivers). If I >> sent some data to the TTY port with the echo command in a loop (so >> basically open the port, send data, and close the port), all of the >> devices were dropped down from the root hub. (Later I found, it is >> enough to just periodically open and close the TTY port.) >> >> The reason was an mx28 errata: "ENGR119653 USB: ARM to USB register >> error issue" Peter, does this erratum only affect mx28? >> >> Freescale issued a patch for 2.6.35 to workaround this problem last >> year. I ported this patch. However, it is not totally "device tree >> compatible". I mean, this patch is only needed for mx28, not for the >> other SOCs using chipidea, and I used ifdefs. So you can't compile a >> kernel both for mx28 and e.g. for mx23. If you check the patch, you see, >> that it is modifying the lowest layer, the writel() function; it is >> changing it to an SWP instruction. According the errata, I need to use >> SWP instructions to write USB registers. > > Presumably you _could_ use the SWP instructions for other SOCs, but > they would slow down the driver. Right? > >> So I'm curious, what other possibilities do I have to make this patch >> device tree compatible? I mean, I can't check the machine's type on each >> USB register writing. > > Actually you can. See the definition of ehci_writel for an example. > >> Then I could use function pointers for register >> writing function, or weak aliases somehow. But that would causes an >> overhead because of the additional function calling, instead of simple >> inline assembly codes. >> >> What's the standard way in this case? Or should I just leave the patch >> as it is? > > Let's see what the Freescale and ChipIdea maintainers suggest. > > Alan Stern -- 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