diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-21 12:25:47 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-21 12:25:47 -0500 |
commit | 2bf2154c6bb5599e3ec3f73c34861a0b12aa839e (patch) | |
tree | 62691bd915e2e3c2e6648306d3fb893f7a1dc57e /drivers/usb/host/uhci-hub.c | |
parent | 08a4ecee986dd98e86090ff5faac4782b6765aed (diff) | |
parent | 71a8924bee63d891f6256d560e32416a458440b3 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6: (81 commits)
[PATCH] USB: omninet: fix up debugging comments
[PATCH] USB serial: add navman driver
[PATCH] USB: Fix irda-usb use after use
[PATCH] USB: rtl8150 small fix
[PATCH] USB: ftdi_sio: add Icom ID1 USB product and vendor ids
[PATCH] USB: cp2101: add new device IDs
[PATCH] USB: fix check_ctrlrecip to allow control transfers in state ADDRESS
[PATCH] USB: vicam.c: fix a NULL pointer dereference
[PATCH] USB: ZC0301 driver bugfix
[PATCH] USB: add support for Creativelabs Silvercrest USB keyboard
[PATCH] USB: storage: new unusual_devs.h entry: Mitsumi 7in1 Card Reader
[PATCH] USB: storage: unusual_devs.h entry 0420:0001
[PATCH] USB: storage: another unusual_devs.h entry
[PATCH] USB: storage: sandisk unusual_devices entry
[PATCH] USB: fix initdata issue in isp116x-hcd
[PATCH] USB: usbcore: usb_set_configuration oops (NULL ptr dereference)
[PATCH] USB: usbcore: Don't assume a USB configuration includes any interfaces
[PATCH] USB: ub 03 drop stall clearing
[PATCH] USB: ub 02 remove diag
[PATCH] USB: ub 01 remove first_open
...
Diffstat (limited to 'drivers/usb/host/uhci-hub.c')
-rw-r--r-- | drivers/usb/host/uhci-hub.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/usb/host/uhci-hub.c b/drivers/usb/host/uhci-hub.c index a71e48a66805..152971d16769 100644 --- a/drivers/usb/host/uhci-hub.c +++ b/drivers/usb/host/uhci-hub.c | |||
@@ -99,6 +99,21 @@ static void uhci_finish_suspend(struct uhci_hcd *uhci, int port, | |||
99 | } | 99 | } |
100 | } | 100 | } |
101 | 101 | ||
102 | /* Wait for the UHCI controller in HP's iLO2 server management chip. | ||
103 | * It can take up to 250 us to finish a reset and set the CSC bit. | ||
104 | */ | ||
105 | static void wait_for_HP(unsigned long port_addr) | ||
106 | { | ||
107 | int i; | ||
108 | |||
109 | for (i = 10; i < 250; i += 10) { | ||
110 | if (inw(port_addr) & USBPORTSC_CSC) | ||
111 | return; | ||
112 | udelay(10); | ||
113 | } | ||
114 | /* Log a warning? */ | ||
115 | } | ||
116 | |||
102 | static void uhci_check_ports(struct uhci_hcd *uhci) | 117 | static void uhci_check_ports(struct uhci_hcd *uhci) |
103 | { | 118 | { |
104 | unsigned int port; | 119 | unsigned int port; |
@@ -113,6 +128,12 @@ static void uhci_check_ports(struct uhci_hcd *uhci) | |||
113 | CLR_RH_PORTSTAT(USBPORTSC_PR); | 128 | CLR_RH_PORTSTAT(USBPORTSC_PR); |
114 | udelay(10); | 129 | udelay(10); |
115 | 130 | ||
131 | /* HP's server management chip requires | ||
132 | * a longer delay. */ | ||
133 | if (to_pci_dev(uhci_dev(uhci))->vendor == | ||
134 | PCI_VENDOR_ID_HP) | ||
135 | wait_for_HP(port_addr); | ||
136 | |||
116 | /* If the port was enabled before, turning | 137 | /* If the port was enabled before, turning |
117 | * reset on caused a port enable change. | 138 | * reset on caused a port enable change. |
118 | * Turning reset off causes a port connect | 139 | * Turning reset off causes a port connect |