Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 22079
b: refs/heads/master
c: ae55717
h: refs/heads/master
i:
  22077: b07e8ff
  22075: 28f033c
  22071: f5d8e9c
  22063: a0b49ba
  22047: 53d5c54
  22015: 0b2d1d1
v: v3
  • Loading branch information
Alan Stern authored and Greg Kroah-Hartman committed Mar 20, 2006
1 parent 08d7eb5 commit 7df66fb
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 491b04ce1c9adfa0cd73f095086f3c37da81b667
refs/heads/master: ae55717584431761b70215d3d574c13fe97093f2
21 changes: 21 additions & 0 deletions trunk/drivers/usb/host/uhci-hub.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,21 @@ static void uhci_finish_suspend(struct uhci_hcd *uhci, int port,
}
}

/* Wait for the UHCI controller in HP's iLO2 server management chip.
* It can take up to 250 us to finish a reset and set the CSC bit.
*/
static void wait_for_HP(unsigned long port_addr)
{
int i;

for (i = 10; i < 250; i += 10) {
if (inw(port_addr) & USBPORTSC_CSC)
return;
udelay(10);
}
/* Log a warning? */
}

static void uhci_check_ports(struct uhci_hcd *uhci)
{
unsigned int port;
Expand All @@ -113,6 +128,12 @@ static void uhci_check_ports(struct uhci_hcd *uhci)
CLR_RH_PORTSTAT(USBPORTSC_PR);
udelay(10);

/* HP's server management chip requires
* a longer delay. */
if (to_pci_dev(uhci_dev(uhci))->vendor ==
PCI_VENDOR_ID_HP)
wait_for_HP(port_addr);

/* If the port was enabled before, turning
* reset on caused a port enable change.
* Turning reset off causes a port connect
Expand Down

0 comments on commit 7df66fb

Please sign in to comment.