From 21bf2b41d50cf0442212a7a018efa5a001c8d6ca Mon Sep 17 00:00:00 2001 From: Alan Stern Date: Mon, 21 Jul 2008 09:56:26 -0400 Subject: [PATCH] --- yaml --- r: 108422 b: refs/heads/master c: 38b375d9610e2467cb793a84d17c6f65e44cdb39 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/usb/host/ohci-hub.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index f632067834aa..e5c22ba1102e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fa41019c7aa172fde075849834409d23eb49f582 +refs/heads/master: 38b375d9610e2467cb793a84d17c6f65e44cdb39 diff --git a/trunk/drivers/usb/host/ohci-hub.c b/trunk/drivers/usb/host/ohci-hub.c index b56739221d11..d54183f1d701 100644 --- a/trunk/drivers/usb/host/ohci-hub.c +++ b/trunk/drivers/usb/host/ohci-hub.c @@ -483,6 +483,13 @@ ohci_hub_status_data (struct usb_hcd *hcd, char *buf) length++; } + /* Some broken controllers never turn off RHCS in the interrupt + * status register. For their sake we won't re-enable RHSC + * interrupts if the flag is already set. + */ + if (ohci_readl(ohci, &ohci->regs->intrstatus) & OHCI_INTR_RHSC) + changed = 1; + /* look at each port */ for (i = 0; i < ohci->num_ports; i++) { u32 status = roothub_portstatus (ohci, i);