diff options
Diffstat (limited to 'drivers/usb/host/ohci-hcd.c')
| -rw-r--r-- | drivers/usb/host/ohci-hcd.c | 15 | 
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index 34efd479e06..b2639191549 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c @@ -389,17 +389,14 @@ ohci_shutdown (struct usb_hcd *hcd)  	struct ohci_hcd *ohci;  	ohci = hcd_to_ohci (hcd); -	ohci_writel (ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable); -	ohci->hc_control = ohci_readl(ohci, &ohci->regs->control); +	ohci_writel(ohci, (u32) ~0, &ohci->regs->intrdisable); -	/* If the SHUTDOWN quirk is set, don't put the controller in RESET */ -	ohci->hc_control &= (ohci->flags & OHCI_QUIRK_SHUTDOWN ? -			OHCI_CTRL_RWC | OHCI_CTRL_HCFS : -			OHCI_CTRL_RWC); -	ohci_writel(ohci, ohci->hc_control, &ohci->regs->control); +	/* Software reset, after which the controller goes into SUSPEND */ +	ohci_writel(ohci, OHCI_HCR, &ohci->regs->cmdstatus); +	ohci_readl(ohci, &ohci->regs->cmdstatus);	/* flush the writes */ +	udelay(10); -	/* flush the writes */ -	(void) ohci_readl (ohci, &ohci->regs->control); +	ohci_writel(ohci, ohci->fminterval, &ohci->regs->fminterval);  }  static int check_ed(struct ohci_hcd *ohci, struct ed *ed)  |