linux: update 3.1 to 3.1.1
[openwrt.git] / target / linux / omap24xx / patches-3.1 / 850-musb-tusb-modular-fixes.patch
1 --- a/drivers/usb/musb/tusb6010.c
2 +++ b/drivers/usb/musb/tusb6010.c
3 @@ -56,6 +56,7 @@ u8 tusb_get_revision(struct musb *musb)
4  
5         return rev;
6  }
7 +EXPORT_SYMBOL(tusb_get_revision);
8  
9  static int tusb_print_revision(struct musb *musb)
10  {
11 @@ -220,6 +221,7 @@ void musb_write_fifo(struct musb_hw_ep *
12         if (len > 0)
13                 tusb_fifo_write_unaligned(fifo, buf, len);
14  }
15 +EXPORT_SYMBOL(musb_write_fifo);
16  
17  void musb_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *buf)
18  {
19 @@ -267,6 +269,7 @@ void musb_read_fifo(struct musb_hw_ep *h
20         if (len > 0)
21                 tusb_fifo_read_unaligned(fifo, buf, len);
22  }
23 +EXPORT_SYMBOL(musb_read_fifo);
24  
25  static struct musb *the_musb;
26  
27 @@ -1244,18 +1247,18 @@ static struct platform_driver tusb_drive
28         },
29  };
30  
31 -MODULE_DESCRIPTION("TUSB6010 MUSB Glue Layer");
32 -MODULE_AUTHOR("Felipe Balbi <balbi@ti.com>");
33 -MODULE_LICENSE("GPL v2");
34 +//MODULE_DESCRIPTION("TUSB6010 MUSB Glue Layer");
35 +//MODULE_AUTHOR("Felipe Balbi <balbi@ti.com>");
36 +//MODULE_LICENSE("GPL v2");
37  
38 -static int __init tusb_init(void)
39 +int musb_hdrc_glue_init(void)
40  {
41         return platform_driver_probe(&tusb_driver, tusb_probe);
42  }
43 -subsys_initcall(tusb_init);
44 +EXPORT_SYMBOL(musb_hdrc_glue_init);
45  
46 -static void __exit tusb_exit(void)
47 +void musb_hdrc_glue_exit(void)
48  {
49         platform_driver_unregister(&tusb_driver);
50  }
51 -module_exit(tusb_exit);
52 +EXPORT_SYMBOL(musb_hdrc_glue_exit);
53 --- a/drivers/usb/musb/musb_core.c
54 +++ b/drivers/usb/musb/musb_core.c
55 @@ -207,7 +207,7 @@ static struct otg_io_access_ops musb_ulp
56  
57  /*-------------------------------------------------------------------------*/
58  
59 -#if !defined(CONFIG_USB_MUSB_TUSB6010) && !defined(CONFIG_USB_MUSB_BLACKFIN)
60 +#if !defined(CONFIG_USB_MUSB_TUSB6010) && !defined(CONFIG_USB_MUSB_TUSB6010_MODULE) && !defined(CONFIG_USB_MUSB_BLACKFIN)
61  
62  /*
63   * Load an endpoint's FIFO
64 @@ -250,7 +250,7 @@ void musb_write_fifo(struct musb_hw_ep *
65         }
66  }
67  
68 -#if !defined(CONFIG_USB_MUSB_AM35X)
69 +#if !defined(CONFIG_USB_MUSB_AM35X) && !defined(CONFIG_USB_MUSB_TUSB6010) && !defined(CONFIG_USB_MUSB_TUSB6010_MODULE)
70  /*
71   * Unload an endpoint's FIFO
72   */
73 @@ -1432,7 +1432,7 @@ static int __init musb_core_init(u16 mus
74                 struct musb_hw_ep       *hw_ep = musb->endpoints + i;
75  
76                 hw_ep->fifo = MUSB_FIFO_OFFSET(i) + mbase;
77 -#ifdef CONFIG_USB_MUSB_TUSB6010
78 +#if defined(CONFIG_USB_MUSB_TUSB6010) || defined(CONFIG_USB_MUSB_TUSB6010_MODULE)
79                 hw_ep->fifo_async = musb->async + 0x400 + MUSB_FIFO_OFFSET(i);
80                 hw_ep->fifo_sync = musb->sync + 0x400 + MUSB_FIFO_OFFSET(i);
81                 hw_ep->fifo_sync_va =
82 @@ -2376,8 +2376,13 @@ static struct platform_driver musb_drive
83  
84  /*-------------------------------------------------------------------------*/
85  
86 +extern int musb_hdrc_glue_init(void);
87 +extern void musb_hdrc_glue_exit(void);
88 +
89  static int __init musb_init(void)
90  {
91 +       int err;
92 +
93         if (usb_disabled())
94                 return 0;
95  
96 @@ -2386,7 +2391,17 @@ static int __init musb_init(void)
97                 ", "
98                 "otg (peripheral+host)",
99                 musb_driver_name);
100 -       return platform_driver_probe(&musb_driver, musb_probe);
101 +
102 +       err = musb_hdrc_glue_init();
103 +       if (err)
104 +               return err;
105 +       err = platform_driver_probe(&musb_driver, musb_probe);
106 +       if (err) {
107 +               musb_hdrc_glue_exit();
108 +               return err;
109 +       }
110 +
111 +       return 0;
112  }
113  
114  /* make us init after usbcore and i2c (transceivers, regulators, etc)
115 @@ -2397,5 +2412,6 @@ fs_initcall(musb_init);
116  static void __exit musb_cleanup(void)
117  {
118         platform_driver_unregister(&musb_driver);
119 +       musb_hdrc_glue_exit();
120  }
121  module_exit(musb_cleanup);
122 --- a/drivers/usb/Makefile
123 +++ b/drivers/usb/Makefile
124 @@ -47,7 +47,7 @@ obj-$(CONFIG_EARLY_PRINTK_DBGP)       += early
125  obj-$(CONFIG_USB_ATM)          += atm/
126  obj-$(CONFIG_USB_SPEEDTOUCH)   += atm/
127  
128 -obj-$(CONFIG_USB_MUSB_HDRC)    += musb/
129 +obj-y                          += musb/
130  obj-$(CONFIG_USB_RENESAS_USBHS)        += renesas_usbhs/
131  obj-$(CONFIG_USB_OTG_UTILS)    += otg/
132  obj-$(CONFIG_USB_GADGET)       += gadget/
133 --- a/drivers/usb/musb/Makefile
134 +++ b/drivers/usb/musb/Makefile
135 @@ -13,7 +13,7 @@ musb_hdrc-$(CONFIG_DEBUG_FS)                  += musb_d
136  # Hardware Glue Layer
137  obj-$(CONFIG_USB_MUSB_OMAP2PLUS)               += omap2430.o
138  obj-$(CONFIG_USB_MUSB_AM35X)                   += am35x.o
139 -obj-$(CONFIG_USB_MUSB_TUSB6010)                        += tusb6010.o
140 +musb_hdrc-$(subst m,y,$(CONFIG_USB_MUSB_TUSB6010))     += tusb6010.o
141  obj-$(CONFIG_USB_MUSB_DAVINCI)                 += davinci.o
142  obj-$(CONFIG_USB_MUSB_DA8XX)                   += da8xx.o
143  obj-$(CONFIG_USB_MUSB_BLACKFIN)                        += blackfin.o