> >> The reason was an mx28 errata: "ENGR119653 USB: ARM to USB register > >> error issue" > > Peter, does this erratum only affect mx28? Yes > >> > >> 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. I will try to submit patches for both ehci and chipidea driver. Best regards, Peter ��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥