pch_uart: Use DMI interface for board detection
authorDarren Hart <dvhart@linux.intel.com>
Sat, 13 Jul 2013 00:58:05 +0000 (17:58 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 26 Jul 2013 23:04:50 +0000 (16:04 -0700)
Use the DMI interface rather than manually matching DMI strings.

Signed-off-by: Darren Hart <dvhart@linux.intel.com>
Cc: Michael Brunner <mibru@gmx.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/pch_uart.c

index 572d48189de910c632ed12e93b4f603bceb55172..271cc733573cdbf5b031f4f3a7dba0e7af1a3011 100644 (file)
@@ -373,35 +373,62 @@ static const struct file_operations port_regs_ops = {
 };
 #endif /* CONFIG_DEBUG_FS */
 
+static struct dmi_system_id __initdata pch_uart_dmi_table[] = {
+       {
+               .ident = "CM-iTC",
+               {
+                       DMI_MATCH(DMI_BOARD_NAME, "CM-iTC"),
+               },
+               (void *)CMITC_UARTCLK,
+       },
+       {
+               .ident = "FRI2",
+               {
+                       DMI_MATCH(DMI_BIOS_VERSION, "FRI2"),
+               },
+               (void *)FRI2_64_UARTCLK,
+       },
+       {
+               .ident = "Fish River Island II",
+               {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Fish River Island II"),
+               },
+               (void *)FRI2_48_UARTCLK,
+       },
+       {
+               .ident = "COMe-mTT",
+               {
+                       DMI_MATCH(DMI_BOARD_NAME, "COMe-mTT"),
+               },
+               (void *)NTC1_UARTCLK,
+       },
+       {
+               .ident = "nanoETXexpress-TT",
+               {
+                       DMI_MATCH(DMI_BOARD_NAME, "nanoETXexpress-TT"),
+               },
+               (void *)NTC1_UARTCLK,
+       },
+       {
+               .ident = "MinnowBoard",
+               {
+                       DMI_MATCH(DMI_BOARD_NAME, "MinnowBoard"),
+               },
+               (void *)MINNOW_UARTCLK,
+       },
+};
+
 /* Return UART clock, checking for board specific clocks. */
 static int pch_uart_get_uartclk(void)
 {
-       const char *cmp;
+       const struct dmi_system_id *d;
 
        if (user_uartclk)
                return user_uartclk;
 
-       cmp = dmi_get_system_info(DMI_BOARD_NAME);
-       if (cmp && strstr(cmp, "CM-iTC"))
-               return CMITC_UARTCLK;
-
-       cmp = dmi_get_system_info(DMI_BIOS_VERSION);
-       if (cmp && strnstr(cmp, "FRI2", 4))
-               return FRI2_64_UARTCLK;
-
-       cmp = dmi_get_system_info(DMI_PRODUCT_NAME);
-       if (cmp && strstr(cmp, "Fish River Island II"))
-               return FRI2_48_UARTCLK;
-
-       /* Kontron COMe-mTT10 (nanoETXexpress-TT) */
-       cmp = dmi_get_system_info(DMI_BOARD_NAME);
-       if (cmp && (strstr(cmp, "COMe-mTT") ||
-                   strstr(cmp, "nanoETXexpress-TT")))
-               return NTC1_UARTCLK;
-
-       cmp = dmi_get_system_info(DMI_BOARD_NAME);
-       if (cmp && strstr(cmp, "MinnowBoard"))
-               return MINNOW_UARTCLK;
+       d = dmi_first_match(pch_uart_dmi_table);
+       if (d)
+               return (int)d->driver_data;
 
        return DEFAULT_UARTCLK;
 }