1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
--- linux/drivers/usb/host/usb-ohci.c.orig 2006-03-30 11:38:08.972225500 +0200
+++ linux/drivers/usb/host/usb-ohci.c 2006-03-30 11:39:46.858343000 +0200
@@ -104,6 +104,10 @@
#define OHCI_UNLINK_TIMEOUT (HZ / 10)
+static int ohci_delay = 3000;
+MODULE_PARM(ohci_delay, "i");
+MODULE_PARM_DESC(ohci_delay, "Wait time [ms] for OHCI to come up");
+
/*-------------------------------------------------------------------------*/
/* AMD-756 (D2 rev) reports corrupt register contents in some cases.
@@ -147,7 +151,7 @@
ohci->complete_head = urb;
ohci->complete_tail = urb;
} else {
- ohci->complete_head->hcpriv = urb;
+ ohci->complete_tail->hcpriv = urb;
ohci->complete_tail = urb;
}
}
@@ -2587,12 +2591,12 @@
hc_release_ohci (ohci);
return -ENODEV;
}
-
+#if 0
/* FIXME this is a second HC reset; why?? */
writel (ohci->hc_control = OHCI_USB_RESET, &ohci->regs->control);
(void)readl (&ohci->regs->intrdisable); /* PCI posting flush */
wait_ms (10);
-
+#endif
usb_register_bus (ohci->bus);
if (request_irq (irq, hc_interrupt, SA_SHIRQ,
@@ -2668,6 +2672,13 @@
void *mem_base;
int status;
+ printk ("waiting for ohci to come up\n");
+ mdelay(ohci_delay);
+ /* We have to wait for about four seconds for some devices to be available.
+ * This may only be a matter of the Option Globetrotter Fusion,
+ * that may need to much time to start up correctly. */
+ printk ("ohci should be up\n");
+
if (pci_enable_device(dev) < 0)
return -ENODEV;
|