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/[email protected]/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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html