diff --git a/package/kernel/modules/usb.mk b/package/kernel/modules/usb.mk
index d5b58ffb35fe15970235b5fb8238fd6204bd5f0e..ef05e51cc1b80e7998a4b8dc78d7e49d77ed318b 100644
--- a/package/kernel/modules/usb.mk
+++ b/package/kernel/modules/usb.mk
@@ -145,6 +145,7 @@ $(eval $(call KernelPackage,nop-usb-xceiv))
 define KernelPackage/tusb6010
   TITLE:=Support for TUSB 6010
   KCONFIG:= \
+	CONFIG_USB_MUSB_TUSB6010 \
 	CONFIG_USB_TUSB6010=y
   DEPENDS:=+kmod-musb-hdrc +kmod-nop-usb-xceiv
   $(call AddDepends/usb)
diff --git a/target/linux/omap24xx/patches-3.1/850-musb-tusb-modular-fixes.patch b/target/linux/omap24xx/patches-3.1/850-musb-tusb-modular-fixes.patch
index d09540d981daa4a5f52ae3a3f23419e1ab04a8fc..3c7b4629a5e846d7c80e8613bb39eda8a7721759 100644
--- a/target/linux/omap24xx/patches-3.1/850-musb-tusb-modular-fixes.patch
+++ b/target/linux/omap24xx/patches-3.1/850-musb-tusb-modular-fixes.patch
@@ -1,7 +1,19 @@
+Index: linux-3.1-rc4/drivers/Makefile
+===================================================================
+--- linux-3.1-rc4.orig/drivers/Makefile	2011-10-30 00:12:03.959808922 +0200
++++ linux-3.1-rc4/drivers/Makefile	2011-10-30 00:12:06.543770526 +0200
+@@ -71,6 +71,7 @@ obj-$(CONFIG_USB_OTG_UTILS)	+= usb/
+ obj-$(CONFIG_USB)		+= usb/
+ obj-$(CONFIG_PCI)		+= usb/
+ obj-$(CONFIG_USB_GADGET)	+= usb/
++obj-y				+= usb/
+ obj-$(CONFIG_SERIO)		+= input/serio/
+ obj-$(CONFIG_GAMEPORT)		+= input/gameport/
+ obj-$(CONFIG_INPUT)		+= input/
 Index: linux-3.1-rc4/drivers/usb/musb/tusb6010.c
 ===================================================================
---- linux-3.1-rc4.orig/drivers/usb/musb/tusb6010.c	2011-08-29 06:16:01.000000000 +0200
-+++ linux-3.1-rc4/drivers/usb/musb/tusb6010.c	2011-10-27 17:04:58.637191966 +0200
+--- linux-3.1-rc4.orig/drivers/usb/musb/tusb6010.c	2011-10-30 00:12:03.951809040 +0200
++++ linux-3.1-rc4/drivers/usb/musb/tusb6010.c	2011-10-30 00:12:06.543770526 +0200
 @@ -56,6 +56,7 @@ u8 tusb_get_revision(struct musb *musb)
  
  	return rev;
@@ -26,7 +38,7 @@ Index: linux-3.1-rc4/drivers/usb/musb/tusb6010.c
  
  static struct musb *the_musb;
  
-@@ -1244,18 +1247,16 @@ static struct platform_driver tusb_drive
+@@ -1244,18 +1247,18 @@ static struct platform_driver tusb_drive
  	},
  };
  
@@ -43,6 +55,7 @@ Index: linux-3.1-rc4/drivers/usb/musb/tusb6010.c
  	return platform_driver_probe(&tusb_driver, tusb_probe);
  }
 -subsys_initcall(tusb_init);
++EXPORT_SYMBOL(musb_hdrc_glue_init);
  
 -static void __exit tusb_exit(void)
 +void musb_hdrc_glue_exit(void)
@@ -50,35 +63,38 @@ Index: linux-3.1-rc4/drivers/usb/musb/tusb6010.c
  	platform_driver_unregister(&tusb_driver);
  }
 -module_exit(tusb_exit);
-Index: linux-3.1-rc4/drivers/usb/musb/Makefile
-===================================================================
---- linux-3.1-rc4.orig/drivers/usb/musb/Makefile	2011-08-29 06:16:01.000000000 +0200
-+++ linux-3.1-rc4/drivers/usb/musb/Makefile	2011-10-27 17:04:58.637191966 +0200
-@@ -11,13 +11,13 @@ musb_hdrc-y					+= musb_virthub.o musb_h
- musb_hdrc-$(CONFIG_DEBUG_FS)			+= musb_debugfs.o
- 
- # Hardware Glue Layer
--obj-$(CONFIG_USB_MUSB_OMAP2PLUS)		+= omap2430.o
--obj-$(CONFIG_USB_MUSB_AM35X)			+= am35x.o
--obj-$(CONFIG_USB_MUSB_TUSB6010)			+= tusb6010.o
--obj-$(CONFIG_USB_MUSB_DAVINCI)			+= davinci.o
--obj-$(CONFIG_USB_MUSB_DA8XX)			+= da8xx.o
--obj-$(CONFIG_USB_MUSB_BLACKFIN)			+= blackfin.o
--obj-$(CONFIG_USB_MUSB_UX500)			+= ux500.o
-+musb_hdrc-$(CONFIG_USB_MUSB_OMAP2PLUS)		+= omap2430.o
-+musb_hdrc-$(CONFIG_USB_MUSB_AM35X)		+= am35x.o
-+musb_hdrc-$(CONFIG_USB_MUSB_TUSB6010)		+= tusb6010.o
-+musb_hdrc-$(CONFIG_USB_MUSB_DAVINCI)		+= davinci.o
-+musb_hdrc-$(CONFIG_USB_MUSB_DA8XX)		+= da8xx.o
-+musb_hdrc-$(CONFIG_USB_MUSB_BLACKFIN)		+= blackfin.o
-+musb_hdrc-$(CONFIG_USB_MUSB_UX500)		+= ux500.o
- 
- # the kconfig must guarantee that only one of the
- # possible I/O schemes will be enabled at a time ...
++EXPORT_SYMBOL(musb_hdrc_glue_exit);
 Index: linux-3.1-rc4/drivers/usb/musb/musb_core.c
 ===================================================================
---- linux-3.1-rc4.orig/drivers/usb/musb/musb_core.c	2011-08-29 06:16:01.000000000 +0200
-+++ linux-3.1-rc4/drivers/usb/musb/musb_core.c	2011-10-27 17:09:45.216071368 +0200
+--- linux-3.1-rc4.orig/drivers/usb/musb/musb_core.c	2011-10-30 00:12:03.943809160 +0200
++++ linux-3.1-rc4/drivers/usb/musb/musb_core.c	2011-10-30 00:20:44.156218000 +0200
+@@ -207,7 +207,7 @@ static struct otg_io_access_ops musb_ulp
+ 
+ /*-------------------------------------------------------------------------*/
+ 
+-#if !defined(CONFIG_USB_MUSB_TUSB6010) && !defined(CONFIG_USB_MUSB_BLACKFIN)
++#if !defined(CONFIG_USB_MUSB_TUSB6010) && !defined(CONFIG_USB_MUSB_TUSB6010_MODULE) && !defined(CONFIG_USB_MUSB_BLACKFIN)
+ 
+ /*
+  * Load an endpoint's FIFO
+@@ -250,7 +250,7 @@ void musb_write_fifo(struct musb_hw_ep *
+ 	}
+ }
+ 
+-#if !defined(CONFIG_USB_MUSB_AM35X)
++#if !defined(CONFIG_USB_MUSB_AM35X) && !defined(CONFIG_USB_MUSB_TUSB6010) && !defined(CONFIG_USB_MUSB_TUSB6010_MODULE)
+ /*
+  * Unload an endpoint's FIFO
+  */
+@@ -1432,7 +1432,7 @@ static int __init musb_core_init(u16 mus
+ 		struct musb_hw_ep	*hw_ep = musb->endpoints + i;
+ 
+ 		hw_ep->fifo = MUSB_FIFO_OFFSET(i) + mbase;
+-#ifdef CONFIG_USB_MUSB_TUSB6010
++#if defined(CONFIG_USB_MUSB_TUSB6010) || defined(CONFIG_USB_MUSB_TUSB6010_MODULE)
+ 		hw_ep->fifo_async = musb->async + 0x400 + MUSB_FIFO_OFFSET(i);
+ 		hw_ep->fifo_sync = musb->sync + 0x400 + MUSB_FIFO_OFFSET(i);
+ 		hw_ep->fifo_sync_va =
 @@ -2376,8 +2376,13 @@ static struct platform_driver musb_drive
  
  /*-------------------------------------------------------------------------*/
@@ -121,8 +137,8 @@ Index: linux-3.1-rc4/drivers/usb/musb/musb_core.c
  module_exit(musb_cleanup);
 Index: linux-3.1-rc4/drivers/usb/Makefile
 ===================================================================
---- linux-3.1-rc4.orig/drivers/usb/Makefile	2011-08-29 06:16:01.000000000 +0200
-+++ linux-3.1-rc4/drivers/usb/Makefile	2011-10-27 17:07:22.608628530 +0200
+--- linux-3.1-rc4.orig/drivers/usb/Makefile	2011-10-30 00:12:03.939809220 +0200
++++ linux-3.1-rc4/drivers/usb/Makefile	2011-10-30 00:12:06.543770526 +0200
 @@ -47,7 +47,7 @@ obj-$(CONFIG_EARLY_PRINTK_DBGP)	+= early
  obj-$(CONFIG_USB_ATM)		+= atm/
  obj-$(CONFIG_USB_SPEEDTOUCH)	+= atm/
@@ -132,3 +148,16 @@ Index: linux-3.1-rc4/drivers/usb/Makefile
  obj-$(CONFIG_USB_RENESAS_USBHS)	+= renesas_usbhs/
  obj-$(CONFIG_USB_OTG_UTILS)	+= otg/
  obj-$(CONFIG_USB_GADGET)	+= gadget/
+Index: linux-3.1-rc4/drivers/usb/musb/Makefile
+===================================================================
+--- linux-3.1-rc4.orig/drivers/usb/musb/Makefile	2011-10-30 00:11:34.852241963 +0200
++++ linux-3.1-rc4/drivers/usb/musb/Makefile	2011-10-30 00:14:52.945312862 +0200
+@@ -13,7 +13,7 @@ musb_hdrc-$(CONFIG_DEBUG_FS)			+= musb_d
+ # Hardware Glue Layer
+ obj-$(CONFIG_USB_MUSB_OMAP2PLUS)		+= omap2430.o
+ obj-$(CONFIG_USB_MUSB_AM35X)			+= am35x.o
+-obj-$(CONFIG_USB_MUSB_TUSB6010)			+= tusb6010.o
++musb_hdrc-$(subst m,y,$(CONFIG_USB_MUSB_TUSB6010))	+= tusb6010.o
+ obj-$(CONFIG_USB_MUSB_DAVINCI)			+= davinci.o
+ obj-$(CONFIG_USB_MUSB_DA8XX)			+= da8xx.o
+ obj-$(CONFIG_USB_MUSB_BLACKFIN)			+= blackfin.o