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