kernel: update 3.18 to 3.18.1
[openwrt.git] / target / linux / generic / patches-3.3 / 801-usb-ehci-multiple-platform-driver-fix.patch
1 --- a/drivers/usb/host/ehci-hcd.c
2 +++ b/drivers/usb/host/ehci-hcd.c
3 @@ -1383,12 +1383,12 @@ MODULE_LICENSE ("GPL");
4  
5  #ifdef CONFIG_USB_EHCI_HCD_PLATFORM
6  #include "ehci-platform.c"
7 -#define PLATFORM_DRIVER                ehci_platform_driver
8 +#define EHCI_PLATFORM_DRIVER   ehci_platform_driver
9  #endif
10  
11  #if !defined(PCI_DRIVER) && !defined(PLATFORM_DRIVER) && \
12      !defined(PS3_SYSTEM_BUS_DRIVER) && !defined(OF_PLATFORM_DRIVER) && \
13 -    !defined(XILINX_OF_PLATFORM_DRIVER)
14 +    !defined(XILINX_OF_PLATFORM_DRIVER) && !defined(EHCI_PLATFORM_DRIVER)
15  #error "missing bus glue for ehci-hcd"
16  #endif
17  
18 @@ -1448,8 +1448,19 @@ static int __init ehci_hcd_init(void)
19         if (retval < 0)
20                 goto clean4;
21  #endif
22 +
23 +#ifdef EHCI_PLATFORM_DRIVER
24 +       retval = platform_driver_register(&EHCI_PLATFORM_DRIVER);
25 +       if (retval < 0)
26 +               goto clean5;
27 +#endif
28 +
29         return retval;
30  
31 +#ifdef EHCI_PLATFORM_DRIVER
32 +       platform_driver_unregister(&EHCI_PLATFORM_DRIVER);
33 +clean5:
34 +#endif
35  #ifdef XILINX_OF_PLATFORM_DRIVER
36         /* platform_driver_unregister(&XILINX_OF_PLATFORM_DRIVER); */
37  clean4:
38 @@ -1482,6 +1493,9 @@ module_init(ehci_hcd_init);
39  
40  static void __exit ehci_hcd_cleanup(void)
41  {
42 +#ifdef EHCI_PLATFORM_DRIVER
43 +       platform_driver_unregister(&EHCI_PLATFORM_DRIVER);
44 +#endif
45  #ifdef XILINX_OF_PLATFORM_DRIVER
46         platform_driver_unregister(&XILINX_OF_PLATFORM_DRIVER);
47  #endif