On 05/09/2011 04:50 PM, Alan Stern wrote: > On Mon, 9 May 2011, Jan Andersson wrote: > >> This patch changes the uhci_{read,write}* functions into using function >> pointers from the uhci_hcd struct when accessing registers. This is done in >> order to reduce the amount of code that need to be ifdef:ed around >> uhci_{read,write}* when later adding (dynamic) support for big endian mmio. >> >> This change leads to a bit more work for the processor when running with >> a PCI-only UHCI kernel. Considering how relatively slow PCI accesses are >> it should not matter much, and it saves us the trouble of having a special >> case for PCI-only configurations in uhci-hcd.h. >> >> Also added 'const' to uhci_hcd argument. >> >> Signed-off-by: Jan Andersson <jan@xxxxxxxxxxx> >> --- >> >> My guess is that the change in this patch may not be to everyones (anyones?) >> liking. Another solution would be to use someting more similar to the previous >> version, like: >> ... >> ... or more similar to the solution in used for the EHCI HCD (leads to the >> largest amount of special case ifdefs, at least in my attempts, but no extra >> function call): >> >> #if !defined(CONFIG_USB_UHCI_SUPPORT_NON_PCI_HC) >> static inline u32 uhci_readl(struct uhci_hcd *uhci, int reg) >> { >> return inl(uhci->io_addr + reg); >> } >> #else >> #define uhci_has_pci_registers(u) ((u)->io_addr != 0) >> static inline u32 uhci_readl(struct uhci_hcd *uhci, int reg) >> { >> if (uhci_has_pci_registers(uhci)) >> return inl(uhci->io_addr + reg); >> #if defined(CONFIG_USB_UHCI_BIG_ENDIAN_MMIO) >> elsif uhci_big_endian_mmio(uhci) >> return readl_be(uhci->regs, reg); >> #endif >> else >> return readl(uhci->regs, reg); >> } >> #endif > > I would really like to see no change to the object code in the PCI-only > case. > > For the various non-PCI cases, imitating EHCI may be messy but it has > the advantage of following a well-established precedent. > I was expecting that but had to try with the solution I thought was easiest on the eyes :-). For V2 I will change to a solution like the last one described. Thanks, Jan -- 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