aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian J. Tarricone <brian@tarricone.org>2010-11-22 00:15:52 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2010-11-30 13:27:36 -0500
commita85b4e7f4481c5a1ca89fa63c9c871151965075e (patch)
treed1fe4dfa047f584ea13a526ced58d05802da68f5
parent6fdbad8021151a9e93af8159a6232c8f26415c09 (diff)
USB: ehci: disable LPM and PPCD for nVidia MCP89 chips
Tested on MacBookAir3,1. Without this, we get EPROTO errors when fetching device config descriptors. Signed-off-by: Brian Tarricone <brian@tarricone.org> Reported-by: Benoit Gschwind <gschwind@gnu-log.net> Tested-by: Edgar Hucek <gimli@dark-green.com> Cc: stable <stable@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/usb/host/ehci-pci.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index 01bb72b71832..655f3c9f88bf 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -161,6 +161,18 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
161 if (pdev->revision < 0xa4) 161 if (pdev->revision < 0xa4)
162 ehci->no_selective_suspend = 1; 162 ehci->no_selective_suspend = 1;
163 break; 163 break;
164
165 /* MCP89 chips on the MacBookAir3,1 give EPROTO when
166 * fetching device descriptors unless LPM is disabled.
167 * There are also intermittent problems enumerating
168 * devices with PPCD enabled.
169 */
170 case 0x0d9d:
171 ehci_info(ehci, "disable lpm/ppcd for nvidia mcp89");
172 ehci->has_lpm = 0;
173 ehci->has_ppcd = 0;
174 ehci->command &= ~CMD_PPCEE;
175 break;
164 } 176 }
165 break; 177 break;
166 case PCI_VENDOR_ID_VIA: 178 case PCI_VENDOR_ID_VIA: