Skip to content
  • Arnd Bergmann's avatar
    USB: OHCI: avoid conflicting platform drivers · 8097804e
    Arnd Bergmann authored
    
    
    Like the EHCI driver, OHCI supports a large number of different platform
    glue drivers by directly including them, which causes problems with
    conflicting macro definitions in some cases. As more ARM architecture
    specific back-ends are required to coexist in a single build, we should
    split those out into separate drivers. Unfortunately, the infrastructure
    for that is still under development, so to give us more time, this uses
    a separate *_PLATFORM_DRIVER macro for each ARM specific OHCI backend,
    just like we already do on PowerPC and some of the other ARM platforms.
    
    In linux-3.10, only the SPEAr and CNS3xxx back-ends would actually conflict
    without this patch, but over time we would get more of them, so this
    is a way to avoid having to patch the driver every time it breaks. We
    should still split out all back-ends into separate loadable modules,
    but that work is only needed to improve code size and cleanliness after
    this patch, not for correctness.
    
    While we're here, this fixes the incorrectly sorted error path
    for the OMAP1 and OMAP3 backends to ensure we always unregister
    the exact set of drivers that were registered before erroring out.
    
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    8097804e