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.h | |
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.h')
-rw-r--r-- | drivers/usb/host/ohci.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h index df5a8037dbaf..faf622eafce7 100644 --- a/drivers/usb/host/ohci.h +++ b/drivers/usb/host/ohci.h | |||
@@ -401,6 +401,7 @@ struct ohci_hcd { | |||
401 | #define OHCI_QUIRK_NEC 0x40 /* lost interrupts */ | 401 | #define OHCI_QUIRK_NEC 0x40 /* lost interrupts */ |
402 | #define OHCI_QUIRK_FRAME_NO 0x80 /* no big endian frame_no shift */ | 402 | #define OHCI_QUIRK_FRAME_NO 0x80 /* no big endian frame_no shift */ |
403 | #define OHCI_QUIRK_HUB_POWER 0x100 /* distrust firmware power/oc setup */ | 403 | #define OHCI_QUIRK_HUB_POWER 0x100 /* distrust firmware power/oc setup */ |
404 | #define OHCI_QUIRK_AMD_ISO 0x200 /* ISO transfers*/ | ||
404 | // there are also chip quirks/bugs in init logic | 405 | // there are also chip quirks/bugs in init logic |
405 | 406 | ||
406 | struct work_struct nec_work; /* Worker for NEC quirk */ | 407 | struct work_struct nec_work; /* Worker for NEC quirk */ |
@@ -428,6 +429,10 @@ static inline int quirk_zfmicro(struct ohci_hcd *ohci) | |||
428 | { | 429 | { |
429 | return ohci->flags & OHCI_QUIRK_ZFMICRO; | 430 | return ohci->flags & OHCI_QUIRK_ZFMICRO; |
430 | } | 431 | } |
432 | static inline int quirk_amdiso(struct ohci_hcd *ohci) | ||
433 | { | ||
434 | return ohci->flags & OHCI_QUIRK_AMD_ISO; | ||
435 | } | ||
431 | #else | 436 | #else |
432 | static inline int quirk_nec(struct ohci_hcd *ohci) | 437 | static inline int quirk_nec(struct ohci_hcd *ohci) |
433 | { | 438 | { |
@@ -437,6 +442,10 @@ static inline int quirk_zfmicro(struct ohci_hcd *ohci) | |||
437 | { | 442 | { |
438 | return 0; | 443 | return 0; |
439 | } | 444 | } |
445 | static inline int quirk_amdiso(struct ohci_hcd *ohci) | ||
446 | { | ||
447 | return 0; | ||
448 | } | ||
440 | #endif | 449 | #endif |
441 | 450 | ||
442 | /* convert between an hcd pointer and the corresponding ohci_hcd */ | 451 | /* convert between an hcd pointer and the corresponding ohci_hcd */ |