ehci: refactor pci quirk to use standard dmi_check_system method
authorAnisse Astier <anisse@astier.eu>
Tue, 5 Jul 2011 14:38:45 +0000 (16:38 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 8 Jul 2011 21:55:07 +0000 (14:55 -0700)
In commit 3610ea5397b80822e417aaa0e706fd803fb05680 (ehci: workaround for pci
quirk timeout on ExoPC), a workaround was added to skip the negociation for
the handoff of the EHCI controller.

Refactor the DMI detection code to use standard dmi_check_system function.

Signed-off-by: Anisse Astier <anisse@astier.eu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/pci-quirks.c

index fd93061..04600a9 100644 (file)
@@ -507,20 +507,27 @@ static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev)
        iounmap(base);
 }
 
+static const struct dmi_system_id __initconst ehci_dmi_nohandoff_table[] = {
+       {
+               /*  Pegatron Lucid (ExoPC) */
+               .matches = {
+                       DMI_MATCH(DMI_BOARD_NAME, "EXOPG06411"),
+                       DMI_MATCH(DMI_BIOS_VERSION, "Lucid-CE-133"),
+               },
+       },
+       { }
+};
+
 static void __devinit ehci_bios_handoff(struct pci_dev *pdev,
                                        void __iomem *op_reg_base,
                                        u32 cap, u8 offset)
 {
        int try_handoff = 1, tried_handoff = 0;
 
-       /* The Pegatron Lucid (ExoPC) tablet sporadically waits for 90
-        * seconds trying the handoff on its unused controller.  Skip
-        * it. */
+       /* The Pegatron Lucid tablet sporadically waits for 98 seconds trying
+        * the handoff on its unused controller.  Skip it. */
        if (pdev->vendor == 0x8086 && pdev->device == 0x283a) {
-               const char *dmi_bn = dmi_get_system_info(DMI_BOARD_NAME);
-               const char *dmi_bv = dmi_get_system_info(DMI_BIOS_VERSION);
-               if (dmi_bn && !strcmp(dmi_bn, "EXOPG06411") &&
-                   dmi_bv && !strcmp(dmi_bv, "Lucid-CE-133"))
+               if (dmi_check_system(ehci_dmi_nohandoff_table))
                        try_handoff = 0;
        }