diff options
Diffstat (limited to 'drivers/usb/host/ohci-hcd.c')
-rw-r--r-- | drivers/usb/host/ohci-hcd.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index 26bc47941d01..89901962cbfd 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c | |||
@@ -86,6 +86,21 @@ static void ohci_stop (struct usb_hcd *hcd); | |||
86 | static int ohci_restart (struct ohci_hcd *ohci); | 86 | static int ohci_restart (struct ohci_hcd *ohci); |
87 | #endif | 87 | #endif |
88 | 88 | ||
89 | #ifdef CONFIG_PCI | ||
90 | static void quirk_amd_pll(int state); | ||
91 | static void amd_iso_dev_put(void); | ||
92 | #else | ||
93 | static inline void quirk_amd_pll(int state) | ||
94 | { | ||
95 | return; | ||
96 | } | ||
97 | static inline void amd_iso_dev_put(void) | ||
98 | { | ||
99 | return; | ||
100 | } | ||
101 | #endif | ||
102 | |||
103 | |||
89 | #include "ohci-hub.c" | 104 | #include "ohci-hub.c" |
90 | #include "ohci-dbg.c" | 105 | #include "ohci-dbg.c" |
91 | #include "ohci-mem.c" | 106 | #include "ohci-mem.c" |
@@ -483,6 +498,9 @@ static int ohci_init (struct ohci_hcd *ohci) | |||
483 | int ret; | 498 | int ret; |
484 | struct usb_hcd *hcd = ohci_to_hcd(ohci); | 499 | struct usb_hcd *hcd = ohci_to_hcd(ohci); |
485 | 500 | ||
501 | if (distrust_firmware) | ||
502 | ohci->flags |= OHCI_QUIRK_HUB_POWER; | ||
503 | |||
486 | disable (ohci); | 504 | disable (ohci); |
487 | ohci->regs = hcd->regs; | 505 | ohci->regs = hcd->regs; |
488 | 506 | ||
@@ -689,7 +707,8 @@ retry: | |||
689 | temp |= RH_A_NOCP; | 707 | temp |= RH_A_NOCP; |
690 | temp &= ~(RH_A_POTPGT | RH_A_NPS); | 708 | temp &= ~(RH_A_POTPGT | RH_A_NPS); |
691 | ohci_writel (ohci, temp, &ohci->regs->roothub.a); | 709 | ohci_writel (ohci, temp, &ohci->regs->roothub.a); |
692 | } else if ((ohci->flags & OHCI_QUIRK_AMD756) || distrust_firmware) { | 710 | } else if ((ohci->flags & OHCI_QUIRK_AMD756) || |
711 | (ohci->flags & OHCI_QUIRK_HUB_POWER)) { | ||
693 | /* hub power always on; required for AMD-756 and some | 712 | /* hub power always on; required for AMD-756 and some |
694 | * Mac platforms. ganged overcurrent reporting, if any. | 713 | * Mac platforms. ganged overcurrent reporting, if any. |
695 | */ | 714 | */ |
@@ -882,6 +901,8 @@ static void ohci_stop (struct usb_hcd *hcd) | |||
882 | 901 | ||
883 | if (quirk_zfmicro(ohci)) | 902 | if (quirk_zfmicro(ohci)) |
884 | del_timer(&ohci->unlink_watchdog); | 903 | del_timer(&ohci->unlink_watchdog); |
904 | if (quirk_amdiso(ohci)) | ||
905 | amd_iso_dev_put(); | ||
885 | 906 | ||
886 | remove_debug_files (ohci); | 907 | remove_debug_files (ohci); |
887 | ohci_mem_cleanup (ohci); | 908 | ohci_mem_cleanup (ohci); |