diff options
author | Geoff Levand <geoff@infradead.org> | 2011-11-22 21:04:45 -0500 |
---|---|---|
committer | Geoff Levand <geoff@infradead.org> | 2011-12-08 12:38:53 -0500 |
commit | 876e0df902c726408c84b75dab673a90fd492e1d (patch) | |
tree | 9af8a84b8bedb6e727067e57355be5996d4bcabd /drivers/usb/host/ehci-hcd.c | |
parent | 5611cc4572e889b62a7b4c72a413536bf6a9c416 (diff) |
usb: Remove ehci_reset call from ehci_run
Remove the ehci_reset() call done in the ehci_run() routine of the
USB EHCI host controller driver and add an ehci_reset() call to the
probe processing of all EHCI platform drivers that do not already call
ehci_reset().
The call to ehci_reset() from ehci_run() was problematic for several
platform drivers, and unnecessary for others. This change moves the
decision to call ehci_reset() at driver startup to the platform
driver code.
Signed-off-by: Geoff Levand <geoff@infradead.org>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Diffstat (limited to 'drivers/usb/host/ehci-hcd.c')
-rw-r--r-- | drivers/usb/host/ehci-hcd.c | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index 3ff9f82f7263..46dccbf85c1a 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c | |||
@@ -677,22 +677,13 @@ static int ehci_init(struct usb_hcd *hcd) | |||
677 | static int ehci_run (struct usb_hcd *hcd) | 677 | static int ehci_run (struct usb_hcd *hcd) |
678 | { | 678 | { |
679 | struct ehci_hcd *ehci = hcd_to_ehci (hcd); | 679 | struct ehci_hcd *ehci = hcd_to_ehci (hcd); |
680 | int retval; | ||
681 | u32 temp; | 680 | u32 temp; |
682 | u32 hcc_params; | 681 | u32 hcc_params; |
683 | 682 | ||
684 | hcd->uses_new_polling = 1; | 683 | hcd->uses_new_polling = 1; |
685 | 684 | ||
686 | /* EHCI spec section 4.1 */ | 685 | /* EHCI spec section 4.1 */ |
687 | /* | 686 | |
688 | * TDI driver does the ehci_reset in their reset callback. | ||
689 | * Don't reset here, because configuration settings will | ||
690 | * vanish. | ||
691 | */ | ||
692 | if (!ehci_is_TDI(ehci) && (retval = ehci_reset(ehci)) != 0) { | ||
693 | ehci_mem_cleanup(ehci); | ||
694 | return retval; | ||
695 | } | ||
696 | ehci_writel(ehci, ehci->periodic_dma, &ehci->regs->frame_list); | 687 | ehci_writel(ehci, ehci->periodic_dma, &ehci->regs->frame_list); |
697 | ehci_writel(ehci, (u32)ehci->async->qh_dma, &ehci->regs->async_next); | 688 | ehci_writel(ehci, (u32)ehci->async->qh_dma, &ehci->regs->async_next); |
698 | 689 | ||