Sorry, my original posting had a missing '}'.  Here's the corrected 
version.

Alan Stern


===== hub.c 1.112 vs edited =====
--- 1.112/drivers/usb/core/hub.c        Fri Jun 20 13:12:57 2003
+++ edited/drivers/usb/core/hub.c       Mon Jul 21 11:35:07 2003
@@ -876,13 +876,6 @@
        unsigned int delay = HUB_SHORT_RESET_TIME;
        int i;
 
-       dev_dbg (&hubstate->intf->dev,
-               "port %d, status %x, change %x, %s\n",
-               port + 1, portstatus, portchange, portspeed (portstatus));
-
-       /* Clear the connection change status */
-       clear_port_feature(hub, port + 1, USB_PORT_FEAT_C_CONNECTION);
-
        /* Disconnect any existing devices under this port */
        if (hub->children[port])
                usb_disconnect(&hub->children[port]);
@@ -1051,31 +1044,20 @@
                        }
 
                        if (portchange & USB_PORT_STAT_C_CONNECTION) {
-                               hub_port_connect_change(hub, i, portstatus, 
portchange);
-                       } else if (portchange & USB_PORT_STAT_C_ENABLE) {
+                               dev_dbg (&hub->intf->dev,
+                                       "port %d, status %x, change %x, %s\n",
+                                       i + 1, portstatus, portchange,
+                                       portspeed (portstatus));
+                               clear_port_feature(dev,
+                                       i + 1, USB_PORT_FEAT_C_CONNECTION);
+                       }
+
+                       if (portchange & USB_PORT_STAT_C_ENABLE) {
                                dev_dbg (hubdev (dev),
                                        "port %d enable change, status %x\n",
                                        i + 1, portstatus);
                                clear_port_feature(dev,
                                        i + 1, USB_PORT_FEAT_C_ENABLE);
-
-                               /*
-                                * EM interference sometimes causes badly
-                                * shielded USB devices to be shutdown by
-                                * the hub, this hack enables them again.
-                                * Works at least with mouse driver. 
-                                */
-                               if (!(portstatus & USB_PORT_STAT_ENABLE)
-                                   && (portstatus & USB_PORT_STAT_CONNECTION)
-                                   && (dev->children[i])) {
-                                       dev_err (&hub->intf->dev,
-                                           "port %i "
-                                           "disabled by hub (EMI?), "
-                                           "re-enabling...",
-                                               i + 1);
-                                       hub_port_connect_change(hub,
-                                               i, portstatus, portchange);
-                               }
                        }
 
                        if (portchange & USB_PORT_STAT_C_SUSPEND) {
@@ -1101,6 +1083,32 @@
                                        i + 1);
                                clear_port_feature(dev,
                                        i + 1, USB_PORT_FEAT_C_RESET);
+                       }
+
+                       if (portchange & USB_PORT_STAT_C_CONNECTION) {
+                               hub_port_connect_change(hub, i, portstatus,
+                                       portchange);
+                       }
+
+                       if (portchange & USB_PORT_STAT_C_ENABLE) {
+
+                               /*
+                                * EM interference sometimes causes badly
+                                * shielded USB devices to be shutdown by
+                                * the hub, this hack enables them again.
+                                * Works at least with mouse driver. 
+                                */
+                               if (!(portstatus & USB_PORT_STAT_ENABLE)
+                                   && (portstatus & USB_PORT_STAT_CONNECTION)
+                                   && (dev->children[i])) {
+                                       dev_err (&hub->intf->dev,
+                                           "port %i "
+                                           "disabled by hub (EMI?), "
+                                           "re-enabling...",
+                                               i + 1);
+                                       hub_port_connect_change(hub,
+                                               i, portstatus, portchange);
+                               }
                        }
                } /* end for i */
 




-------------------------------------------------------
This SF.net email is sponsored by: VM Ware
With VMware you can run multiple operating systems on a single machine.
WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the
same time. Free trial click here: http://www.vmware.com/wl/offer/345/0
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to