> ... assuming you fix the OHCI_BIG_ENDIAN_MMIO typo and #ifdef, > and other stuff as noted below. And that you sanity checked it > on some x86 PC, since I didn't make time for that and since we'd > all be unhappy if there were some goof in this area. ;)
I'll try to find an x86 box to boot it on later today and will re-send. > ... those two lines were wrong, as I guess testing on CELL woud show ... I actually don't have access to that "mixed" endian hardware just yet (it should be on the way...). > > + ohci_dbg (ohci, "enabled big endian Toshiba quirk\n"); > > +#else > > + ohci_err (ohci, "unsupported big endian Toshiba quirk\n"); > > I think you should just "ohci_dbg" here and "return -ENXIO"; after > all, the point of having a failure case here is ... to allow failure! Yes, I actually added the failure case on purpose (se we can do blacklists etc...) and forgot to use it, how lame :-) Fixed. > > }; > > @@ -444,112 +445,126 @@ > > * of checking a flag bit. > > */ > > > > -#ifdef CONFIG_USB_OHCI_BIG_ENDIAN > > +#ifdef CONFIG_USB_OHCI_BIG_ENDIAN_DESC > > Since it's kind of bizarre, please update the comments (just the tail end > shown above) to explain that not only did some vendors not stick to little > endian, but they went overboard and mixed both conventions in the same chip. > (What you're calling "split" endian.) Yes. In fact, I though the macro trick would be enough to cover all cases, but that isn't entirely true... If you build in the kernel both a "mixed" endian and big endian, but not little endian, then mixed endian will not work as the LE case will not be defined. Ouch... I need to rework the macro logic a little bit. > > /* > > * Big-endian read/write functions are arch-specific. > > * Other arches can be added if/when they're needed. > > + * Note that arch/powerpc now has readl/writel_be, so the > > That's the kind of note I'd rather see flagged as REVISIT ... since > a "note" is usually a "remember this" but a REVISIT is just a milder > form of a FIXME. Ok. > > + * definition below can die once the STB04xxx support is > > + * finally ported over. > > */ > > -#if defined(CONFIG_PPC) > > +#if defined(CONFIG_PPC) && !defined(CONFIG_PPC_MERGE) > > #define readl_be(addr) in_be32((__force unsigned *)addr) > > #define writel_be(val, addr) out_be32((__force unsigned *)addr, val) > > #endif > > > > -static inline unsigned int ohci_readl (const struct ohci_hcd *ohci, > > - __hc32 __iomem * regs) > > +static inline unsigned int _ohci_readl (const struct ohci_hcd *ohci, > > + __hc32 __iomem * regs) > > Hmm, didn't Jeff Garzik queue a patch to change how some of this readl() > magic works? Check Greg's patch queue; there may be a conflict. I haven't seen it, I'll take a peek at greg's tree Ben. ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel