Skip to contentSkip to conversation

usbcore, kernel 2.6.18.1

PATCH In review Gerd Luyten 2 participants 2 messages Apr 3, 2008 – Apr 4, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 usbcore, kernel 2.6.18.1

This patch is to eventually detect a Velleman K8055 USB device. Without the patch it will fail detection with following errors:
usb 1-2: can't read configurations, error -110
=> probably because of usb non-conformance reason of the K8055 card. (timing issues...)

With this patch, detection will keep on trying until usb card gets recognized.
This patch adds a device reset in the "fail:" sequence instead of just marking the device state as NOTATTACHED.

[gluyten@workstation pup214]$ diff -u
linux-2.6.18.1/drivers/usb/core/hub.c hub.c
--- linux-2.6.18.1/drivers/usb/core/hub.c 2006-10-14
05:34:03.000000000 +0200
+++ hub.c 2008-04-03 14:47:49.000000000 +0200
@@ -1450,7 +1450,9 @@

        return 0;

fail:

-       usb_set_device_state(udev, USB_STATE_NOTATTACHED);
+//     usb_set_device_state(udev, USB_STATE_NOTATTACHED);
+       usb_lock_device_for_reset(udev, NULL);
+       usb_reset_composite_device(udev, NULL);
        return err;

}

Signature · 1 line
Gerd Luyten <[email protected]>
#1 lore raw
Quoted 17 lines · On Thu, 03 Apr 2008 15:14:54 +0200 Gerd Luyten <[email protected]> wrote:

This patch is to eventually detect a Velleman K8055 USB device. Without the patch it will fail detection with following errors:
usb 1-2: can't read configurations, error -110
=> probably because of usb non-conformance reason of the K8055 card. (timing issues...)

With this patch, detection will keep on trying until usb card gets recognized.
This patch adds a device reset in the "fail:" sequence instead of just marking the device state as NOTATTACHED.

[gluyten@workstation pup214]$ diff -u
linux-2.6.18.1/drivers/usb/core/hub.c hub.c
--- linux-2.6.18.1/drivers/usb/core/hub.c 2006-10-14
05:34:03.000000000 +0200
+++ hub.c 2008-04-03 14:47:49.000000000 +0200

Review line 1458

Quoted 10 lines
(quoted diff) +3 -1
@@ -1450,7 +1450,9 @@
        return 0;
 
 fail:
-       usb_set_device_state(udev, USB_STATE_NOTATTACHED);
+//     usb_set_device_state(udev, USB_STATE_NOTATTACHED);
+       usb_lock_device_for_reset(udev, NULL);
+       usb_reset_composite_device(udev, NULL);
        return err;
 }
 

2.6.18 is very old. Does 2.6.24 (or later) also need fixing?

Thanks.