2 USB host instances on am33xx

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux