Here Rogério, try this patch. It adds a few more diagnostic messages. I think the problem occurs at the point where the system tries to reset one of the ports belonging to the internal hub. This should help make sure of that.
Alan Stern --- 2.6/drivers/usb/core/hub.c.orig Tue Jan 20 16:10:29 2004 +++ 2.6/drivers/usb/core/hub.c Tue Jan 20 16:25:53 2004 @@ -741,6 +741,8 @@ /* read and decode port status */ ret = hub_port_status(hub, port, &portstatus, &portchange); + dev_dbg(hubdev(hub), "wait_reset %d, port %d, status %x, change %x\n", + ret, port+1, portstatus, portchange); if (ret < 0) { return -1; } @@ -785,7 +787,8 @@ /* Reset the port */ for (i = 0; i < HUB_RESET_TRIES; i++) { - set_port_feature(hub, port + 1, USB_PORT_FEAT_RESET); + status = set_port_feature(hub, port + 1, USB_PORT_FEAT_RESET); + dev_dbg(hubdev(hub), "port reset = %d\n", status); /* return on disconnect or reset */ status = hub_port_wait_reset(hub, port, dev, delay); @@ -855,6 +858,8 @@ wait_ms(HUB_DEBOUNCE_STEP); ret = hub_port_status(hub, port, &portstatus, &portchange); + dev_dbg(hubdev(hub), "port_status= %d, port %d status %x change %x\n", + ret, port+1, portstatus, portchange); if (ret < 0) return -1; @@ -869,7 +874,8 @@ connection = portstatus & USB_PORT_STAT_CONNECTION; if ((portchange & USB_PORT_STAT_C_CONNECTION)) { - clear_port_feature(hub, port+1, USB_PORT_FEAT_C_CONNECTION); + ret = clear_port_feature(hub, port+1, USB_PORT_FEAT_C_CONNECTION); + dev_dbg(hubdev(hub), "clear C_CONNECTION2 = %d\n", ret); } } @@ -893,7 +899,8 @@ port + 1, portstatus, portchange, portspeed (portstatus)); /* Clear the connection change status */ - clear_port_feature(hub, port + 1, USB_PORT_FEAT_C_CONNECTION); + i = clear_port_feature(hub, port + 1, USB_PORT_FEAT_C_CONNECTION); + dev_dbg(&hubstate->intf->dev, "clear C_CONNECTION1 = %d\n", i); /* Disconnect any existing devices under this port */ if (hub->children[port]) @@ -1064,6 +1071,8 @@ for (i = 0; i < hub->descriptor->bNbrPorts; i++) { ret = hub_port_status(dev, i, &portstatus, &portchange); + dev_dbg(hubdev(dev), + "initial port %d status: ret = %d\n", i+1, ret); if (ret < 0) { continue; } ------------------------------------------------------- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel