diff options
author | Libin Yang <Libin.Yang@amd.com> | 2008-08-08 03:03:31 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-08-13 20:32:58 -0400 |
commit | ab1666c1364a209e6141d7c14e47a42b5f00eca2 (patch) | |
tree | e71ab24f20b36762d9b6b2fc9565bdd848cbdd97 /drivers/usb/host/ohci-hcd.c | |
parent | e12cc34527dcd945597c860c25aba92883a4a6a4 (diff) |
USB: quirk PLL power down mode
On some AMD 700 series southbridges, ISO OUT transfers (such as audio
playback through speakers) on the USB OHCI controller may be corrupted
when an A-Link express power saving feature is active.
PLL power down mode in conjunction with link power management feature
L1 being enabled is the bad combination ... this patch prevents them
from being enabled when ISO transfers are pending.
Signed-off-by: Crane Cai <crane.cai@amd.com>
Signed-off-by: Libin Yang <libin.yang@amd.com>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/ohci-hcd.c')
-rw-r--r-- | drivers/usb/host/ohci-hcd.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index 96fe76e9a6c..89901962cbf 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" |
@@ -886,6 +901,8 @@ static void ohci_stop (struct usb_hcd *hcd) | |||
886 | 901 | ||
887 | if (quirk_zfmicro(ohci)) | 902 | if (quirk_zfmicro(ohci)) |
888 | del_timer(&ohci->unlink_watchdog); | 903 | del_timer(&ohci->unlink_watchdog); |
904 | if (quirk_amdiso(ohci)) | ||
905 | amd_iso_dev_put(); | ||
889 | 906 | ||
890 | remove_debug_files (ohci); | 907 | remove_debug_files (ohci); |
891 | ohci_mem_cleanup (ohci); | 908 | ohci_mem_cleanup (ohci); |