Hi, I'm working on am33xx based board with 2 USB hosts. I'm using 3.9 kernel + patches from Daniel Mack (http://www.mail-archive.com/linux-usb@xxxxxxxxxxxxxxx/msg19509.html). With patch below I can have both USB ports working on am33xx board with one small problem. When connect 2 usb keys to both ports all of them are correctly enumerated and mounted. But when disconnect both of them then first one disconnected properly but second one fails with warning: [ 103.685497] musb_stage0_irq 791: unhandled DISCONNECT transition a_wait_bcon) I was looking at /sys to check what is current mode and when unplug first usb then mode for both is changed to a_wait_bcon and this is the reason why device isn't disconnected. Any ideas what to check or is there any existing fix for that? Thanks, Marek diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c index 6bb8971..a37f526 100644 --- a/drivers/usb/musb/musb_dsps.c +++ b/drivers/usb/musb/musb_dsps.c @@ -749,6 +749,37 @@ static const struct dsps_musb_wrapper ti81xx_driver_data = { .instances = 1, }; +static const struct dsps_musb_wrapper am33xx_driver_data = { + .revision = 0x00, + .control = 0x14, + .status = 0x18, + .eoi = 0x24, + .epintr_set = 0x38, + .epintr_clear = 0x40, + .epintr_status = 0x30, + .coreintr_set = 0x3c, + .coreintr_clear = 0x44, + .coreintr_status = 0x34, + .phy_utmi = 0xe0, + .mode = 0xe8, + .reset = 0, + .otg_disable = 21, + .iddig = 8, + .usb_shift = 0, + .usb_mask = 0x1ff, + .usb_bitmap = (0x1ff << 0), + .drvvbus = 8, + .txep_shift = 0, + .txep_mask = 0xffff, + .txep_bitmap = (0xffff << 0), + .rxep_shift = 16, + .rxep_mask = 0xfffe, + .rxep_bitmap = (0xfffe << 16), + .musb_core_offset = 0x400, + .poll_seconds = 2, + .instances = 2, +}; + static const struct platform_device_id musb_dsps_id_table[] = { { .name = "musb-ti81xx", @@ -761,7 +792,7 @@ MODULE_DEVICE_TABLE(platform, musb_dsps_id_table); #ifdef CONFIG_OF static const struct of_device_id musb_dsps_of_match[] = { { .compatible = "ti,musb-am33xx", - .data = (void *) &ti81xx_driver_data, }, + .data = (void *) &am33xx_driver_data, }, { }, }; MODULE_DEVICE_TABLE(of, musb_dsps_of_match); -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html