Here goes V2 of the Alchemy USB rework. Changes since V1: - fixed a few mistakes in patch #1 and made it a bit smaller. Patch overview: #1 moves the fiddling with the various USB control bits out of the host drivers into a separate file. The host drivers simply call a function to enable/disable a USB block (OHCI/EHCI/UDC/OTG,..), and the core file takes care of the details. This file mainly exists for the Au1200 and Au1300 which have a bunch of separate registers which control various aspects of the USB subsystem. I don't want the USB host glues to know about the implementation details of each chip variant. #2 rewrites USB setup to detect chip variant at runtime and register the appropriate platform devices. #3 does some more header cleanups. Run and PM tested on DB1200. Manuel Lauss (3): MIPS: Alchemy: abstract USB block control register access MIPS: Alchemy: rewrite USB platform setup. MIPS: Alchemy: more base address cleanup arch/mips/alchemy/common/Makefile | 2 +- arch/mips/alchemy/common/dma.c | 12 +- arch/mips/alchemy/common/platform.c | 195 ++++++-------- arch/mips/alchemy/common/power.c | 42 --- arch/mips/alchemy/common/usb.c | 331 ++++++++++++++++++++++++ arch/mips/alchemy/devboards/db1200/platform.c | 52 ++-- arch/mips/alchemy/devboards/db1x00/platform.c | 40 ++-- arch/mips/alchemy/devboards/pb1100/platform.c | 20 +- arch/mips/alchemy/devboards/pb1200/platform.c | 42 ++-- arch/mips/alchemy/devboards/pb1500/platform.c | 22 +- arch/mips/alchemy/devboards/pb1550/platform.c | 40 ++-- arch/mips/alchemy/xxs1500/platform.c | 12 +- arch/mips/include/asm/mach-au1x00/au1000.h | 242 +++-------------- arch/mips/include/asm/mach-au1x00/au1xxx_psc.h | 26 -- arch/mips/include/asm/mach-db1x00/db1x00.h | 8 +- arch/mips/include/asm/mach-pb1x00/pb1200.h | 8 +- arch/mips/include/asm/mach-pb1x00/pb1550.h | 8 +- drivers/usb/host/ehci-au1xxx.c | 77 +----- drivers/usb/host/ohci-au1xxx.c | 110 +------- 19 files changed, 597 insertions(+), 692 deletions(-) create mode 100644 arch/mips/alchemy/common/usb.c -- 1.7.5.3