diff options
author | Jaroslav Kysela <perex@perex.cz> | 2008-10-10 10:24:45 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-10-17 17:41:04 -0400 |
commit | fd7c519dd40a0d561280bb797386143fb2026949 (patch) | |
tree | 2ccb79aceee02dc862060e67046cc50c0767a423 | |
parent | 49e7cc84a86784ef2ab4e651f1824093be8f5b2b (diff) |
USB: hub.c: Add initial_descriptor_timeout module parameter for usbcore
This patch adds initial_descriptor_timeout module parameter for usbcore.ko
to allow modify initial 64-byte USB_REQ_GET_DESCRIPTOR timeout for
non-standard devices.
For example, the SATA8000 device from DATAST0R Technology Corp
requires about 10 seconds to send reply (probably it waits until
inserted disk is ready for operation).
Also, this patch adds missing usbcore parameters to
Documentation/kernel-parameters.txt.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | Documentation/kernel-parameters.txt | 19 | ||||
-rw-r--r-- | drivers/usb/core/hub.c | 11 |
2 files changed, 29 insertions, 1 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index dd28a0d56981..d4f4875fc7c6 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -2253,6 +2253,25 @@ and is between 256 and 4096 characters. It is defined in the file | |||
2253 | autosuspended. Devices for which the delay is set | 2253 | autosuspended. Devices for which the delay is set |
2254 | to a negative value won't be autosuspended at all. | 2254 | to a negative value won't be autosuspended at all. |
2255 | 2255 | ||
2256 | usbcore.usbfs_snoop= | ||
2257 | [USB] Set to log all usbfs traffic (default 0 = off). | ||
2258 | |||
2259 | usbcore.blinkenlights= | ||
2260 | [USB] Set to cycle leds on hubs (default 0 = off). | ||
2261 | |||
2262 | usbcore.old_scheme_first= | ||
2263 | [USB] Start with the old device initialization | ||
2264 | scheme (default 0 = off). | ||
2265 | |||
2266 | usbcore.use_both_schemes= | ||
2267 | [USB] Try the other device initialization scheme | ||
2268 | if the first one fails (default 1 = enabled). | ||
2269 | |||
2270 | usbcore.initial_descriptor_timeout= | ||
2271 | [USB] Specifies timeout for the initial 64-byte | ||
2272 | USB_REQ_GET_DESCRIPTOR request in milliseconds | ||
2273 | (default 5000 = 5.0 seconds). | ||
2274 | |||
2256 | usbhid.mousepoll= | 2275 | usbhid.mousepoll= |
2257 | [USBHID] The interval which mice are to be polled at. | 2276 | [USBHID] The interval which mice are to be polled at. |
2258 | 2277 | ||
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index b97110ca352d..d73ce262c365 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
@@ -101,6 +101,15 @@ module_param (blinkenlights, bool, S_IRUGO); | |||
101 | MODULE_PARM_DESC (blinkenlights, "true to cycle leds on hubs"); | 101 | MODULE_PARM_DESC (blinkenlights, "true to cycle leds on hubs"); |
102 | 102 | ||
103 | /* | 103 | /* |
104 | * Device SATA8000 FW1.0 from DATAST0R Technology Corp requires about | ||
105 | * 10 seconds to send reply for the initial 64-byte descriptor request. | ||
106 | */ | ||
107 | /* define initial 64-byte descriptor request timeout in milliseconds */ | ||
108 | static int initial_descriptor_timeout = USB_CTRL_GET_TIMEOUT; | ||
109 | module_param(initial_descriptor_timeout, int, S_IRUGO|S_IWUSR); | ||
110 | MODULE_PARM_DESC(initial_descriptor_timeout, "initial 64-byte descriptor request timeout in milliseconds (default 5000 - 5.0 seconds)"); | ||
111 | |||
112 | /* | ||
104 | * As of 2.6.10 we introduce a new USB device initialization scheme which | 113 | * As of 2.6.10 we introduce a new USB device initialization scheme which |
105 | * closely resembles the way Windows works. Hopefully it will be compatible | 114 | * closely resembles the way Windows works. Hopefully it will be compatible |
106 | * with a wider range of devices than the old scheme. However some previously | 115 | * with a wider range of devices than the old scheme. However some previously |
@@ -2538,7 +2547,7 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1, | |||
2538 | USB_REQ_GET_DESCRIPTOR, USB_DIR_IN, | 2547 | USB_REQ_GET_DESCRIPTOR, USB_DIR_IN, |
2539 | USB_DT_DEVICE << 8, 0, | 2548 | USB_DT_DEVICE << 8, 0, |
2540 | buf, GET_DESCRIPTOR_BUFSIZE, | 2549 | buf, GET_DESCRIPTOR_BUFSIZE, |
2541 | USB_CTRL_GET_TIMEOUT); | 2550 | initial_descriptor_timeout); |
2542 | switch (buf->bMaxPacketSize0) { | 2551 | switch (buf->bMaxPacketSize0) { |
2543 | case 8: case 16: case 32: case 64: case 255: | 2552 | case 8: case 16: case 32: case 64: case 255: |
2544 | if (buf->bDescriptorType == | 2553 | if (buf->bDescriptorType == |