--- a/drivers/usb/musb/tusb6010.c +++ b/drivers/usb/musb/tusb6010.c @@ -56,6 +56,7 @@ u8 tusb_get_revision(struct musb *musb) return rev; } +EXPORT_SYMBOL(tusb_get_revision); static int tusb_print_revision(struct musb *musb) { @@ -220,6 +221,7 @@ void musb_write_fifo(struct musb_hw_ep * if (len > 0) tusb_fifo_write_unaligned(fifo, buf, len); } +EXPORT_SYMBOL(musb_write_fifo); void musb_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *buf) { @@ -267,6 +269,7 @@ void musb_read_fifo(struct musb_hw_ep *h if (len > 0) tusb_fifo_read_unaligned(fifo, buf, len); } +EXPORT_SYMBOL(musb_read_fifo); static struct musb *the_musb; @@ -1244,18 +1247,18 @@ static struct platform_driver tusb_drive }, }; -MODULE_DESCRIPTION("TUSB6010 MUSB Glue Layer"); -MODULE_AUTHOR("Felipe Balbi "); -MODULE_LICENSE("GPL v2"); +//MODULE_DESCRIPTION("TUSB6010 MUSB Glue Layer"); +//MODULE_AUTHOR("Felipe Balbi "); +//MODULE_LICENSE("GPL v2"); -static int __init tusb_init(void) +int musb_hdrc_glue_init(void) { 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) { platform_driver_unregister(&tusb_driver); } -module_exit(tusb_exit); +EXPORT_SYMBOL(musb_hdrc_glue_exit); --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -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 = @@ -2368,8 +2368,13 @@ static struct platform_driver musb_drive /*-------------------------------------------------------------------------*/ +extern int musb_hdrc_glue_init(void); +extern void musb_hdrc_glue_exit(void); + static int __init musb_init(void) { + int err; + if (usb_disabled()) return 0; @@ -2378,7 +2383,17 @@ static int __init musb_init(void) ", " "otg (peripheral+host)", musb_driver_name); - return platform_driver_probe(&musb_driver, musb_probe); + + err = musb_hdrc_glue_init(); + if (err) + return err; + err = platform_driver_probe(&musb_driver, musb_probe); + if (err) { + musb_hdrc_glue_exit(); + return err; + } + + return 0; } /* make us init after usbcore and i2c (transceivers, regulators, etc) @@ -2389,5 +2404,6 @@ fs_initcall(musb_init); static void __exit musb_cleanup(void) { platform_driver_unregister(&musb_driver); + musb_hdrc_glue_exit(); } module_exit(musb_cleanup); --- a/drivers/usb/Makefile +++ b/drivers/usb/Makefile @@ -47,7 +47,7 @@ obj-$(CONFIG_EARLY_PRINTK_DBGP) += early obj-$(CONFIG_USB_ATM) += atm/ obj-$(CONFIG_USB_SPEEDTOUCH) += atm/ -obj-$(CONFIG_USB_MUSB_HDRC) += musb/ +obj-y += musb/ obj-$(CONFIG_USB_RENESAS_USBHS) += renesas_usbhs/ obj-$(CONFIG_USB_OTG_UTILS) += otg/ obj-$(CONFIG_USB_GADGET) += gadget/ --- a/drivers/usb/musb/Makefile +++ b/drivers/usb/musb/Makefile @@ -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