diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2006-12-15 16:06:25 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-01-05 15:19:08 -0500 |
commit | c80a70d53fa0ca47ad122cd75fe32b6f41c04eb1 (patch) | |
tree | 4989a16d0f1f0a4a1f4bfa44706e1912306de661 /drivers/usb/host | |
parent | 05a8057bb38bc803682f3e0af305c258b4566285 (diff) |
UHCI: make test for ASUS motherboard more specific
Instead of matching all motherboards whose name contains "A7V8X" for a
remote-wakeup hardware bug, this patch (as829) matches only those
boards whose name is exactly equal to "A7V8X". Later motherboards
don't seem to have the bug.
(In fact, it's possible that only one motherboard in the world has the
bug. With only one user reporting problems, it's hard to tell.)
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host')
-rw-r--r-- | drivers/usb/host/uhci-hcd.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c index acd101caeeeb..fecc8c971c17 100644 --- a/drivers/usb/host/uhci-hcd.c +++ b/drivers/usb/host/uhci-hcd.c | |||
@@ -209,24 +209,16 @@ static int resume_detect_interrupts_are_broken(struct uhci_hcd *uhci) | |||
209 | 209 | ||
210 | static int remote_wakeup_is_broken(struct uhci_hcd *uhci) | 210 | static int remote_wakeup_is_broken(struct uhci_hcd *uhci) |
211 | { | 211 | { |
212 | static struct dmi_system_id broken_wakeup_table[] = { | ||
213 | { | ||
214 | .ident = "Asus A7V8X", | ||
215 | .matches = { | ||
216 | DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK"), | ||
217 | DMI_MATCH(DMI_BOARD_NAME, "A7V8X"), | ||
218 | DMI_MATCH(DMI_BOARD_VERSION, "REV 1.xx"), | ||
219 | } | ||
220 | }, | ||
221 | { } | ||
222 | }; | ||
223 | int port; | 212 | int port; |
213 | char *sys_info; | ||
214 | static char bad_Asus_board[] = "A7V8X"; | ||
224 | 215 | ||
225 | /* One of Asus's motherboards has a bug which causes it to | 216 | /* One of Asus's motherboards has a bug which causes it to |
226 | * wake up immediately from suspend-to-RAM if any of the ports | 217 | * wake up immediately from suspend-to-RAM if any of the ports |
227 | * are connected. In such cases we will not set EGSM. | 218 | * are connected. In such cases we will not set EGSM. |
228 | */ | 219 | */ |
229 | if (dmi_check_system(broken_wakeup_table)) { | 220 | sys_info = dmi_get_system_info(DMI_BOARD_NAME); |
221 | if (sys_info && !strcmp(sys_info, bad_Asus_board)) { | ||
230 | for (port = 0; port < uhci->rh_numports; ++port) { | 222 | for (port = 0; port < uhci->rh_numports; ++port) { |
231 | if (inw(uhci->io_addr + USBPORTSC1 + port * 2) & | 223 | if (inw(uhci->io_addr + USBPORTSC1 + port * 2) & |
232 | USBPORTSC_CCS) | 224 | USBPORTSC_CCS) |