kernel: update 3.18 to 3.18.1
[openwrt.git] / target / linux / generic / patches-3.3 / 800-usb-ohci-multiple-platform-driver-fix.patch
1 --- a/drivers/usb/host/ohci-hcd.c
2 +++ b/drivers/usb/host/ohci-hcd.c
3 @@ -1123,7 +1123,7 @@ MODULE_LICENSE ("GPL");
4  
5  #ifdef CONFIG_USB_OHCI_HCD_PLATFORM
6  #include "ohci-platform.c"
7 -#define PLATFORM_DRIVER                ohci_platform_driver
8 +#define OHCI_PLATFORM_DRIVER           ohci_platform_driver
9  #endif
10  
11  #if    !defined(PCI_DRIVER) &&         \
12 @@ -1135,7 +1135,8 @@ MODULE_LICENSE ("GPL");
13         !defined(PS3_SYSTEM_BUS_DRIVER) && \
14         !defined(SM501_OHCI_DRIVER) && \
15         !defined(TMIO_OHCI_DRIVER) && \
16 -       !defined(SSB_OHCI_DRIVER)
17 +       !defined(SSB_OHCI_DRIVER) && \
18 +       !defined(OHCI_PLATFORM_DRIVER)
19  #error "missing bus glue for ohci-hcd"
20  #endif
21  
22 @@ -1219,9 +1220,19 @@ static int __init ohci_hcd_mod_init(void
23                 goto error_tmio;
24  #endif
25  
26 +#ifdef OHCI_PLATFORM_DRIVER
27 +       retval = platform_driver_register(&OHCI_PLATFORM_DRIVER);
28 +       if (retval < 0)
29 +               goto error_ohci;
30 +#endif
31 +
32         return retval;
33  
34         /* Error path */
35 +#ifdef OHCI_PLATFORM_DRIVER
36 +       platform_driver_unregister(&OHCI_PLATFORM_DRIVER);
37 + error_ohci:
38 +#endif
39  #ifdef TMIO_OHCI_DRIVER
40         platform_driver_unregister(&TMIO_OHCI_DRIVER);
41   error_tmio:
42 @@ -1275,6 +1286,9 @@ module_init(ohci_hcd_mod_init);
43  
44  static void __exit ohci_hcd_mod_exit(void)
45  {
46 +#ifdef OHCI_PLATFORM_DRIVER
47 +       platform_driver_unregister(&OHCI_PLATFORM_DRIVER);
48 +#endif
49  #ifdef TMIO_OHCI_DRIVER
50         platform_driver_unregister(&TMIO_OHCI_DRIVER);
51  #endif