aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2008-10-10 10:24:45 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2008-10-17 17:41:04 -0400
commitfd7c519dd40a0d561280bb797386143fb2026949 (patch)
tree2ccb79aceee02dc862060e67046cc50c0767a423
parent49e7cc84a86784ef2ab4e651f1824093be8f5b2b (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.txt19
-rw-r--r--drivers/usb/core/hub.c11
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);
101MODULE_PARM_DESC (blinkenlights, "true to cycle leds on hubs"); 101MODULE_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 */
108static int initial_descriptor_timeout = USB_CTRL_GET_TIMEOUT;
109module_param(initial_descriptor_timeout, int, S_IRUGO|S_IWUSR);
110MODULE_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 ==