pch_uart: Use DMI interface for board detection

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>
This commit is contained in:
Darren Hart 2013-07-12 17:58:05 -07:00 committed by Greg Kroah-Hartman
parent 7d12b9769f
commit 4e3234897f
1 changed files with 49 additions and 22 deletions

View File

@ -373,35 +373,62 @@ static const struct file_operations port_regs_ops = {
}; };
#endif /* CONFIG_DEBUG_FS */ #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. */ /* Return UART clock, checking for board specific clocks. */
static int pch_uart_get_uartclk(void) static int pch_uart_get_uartclk(void)
{ {
const char *cmp; const struct dmi_system_id *d;
if (user_uartclk) if (user_uartclk)
return user_uartclk; return user_uartclk;
cmp = dmi_get_system_info(DMI_BOARD_NAME); d = dmi_first_match(pch_uart_dmi_table);
if (cmp && strstr(cmp, "CM-iTC")) if (d)
return CMITC_UARTCLK; return (int)d->driver_data;
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;
return DEFAULT_UARTCLK; return DEFAULT_UARTCLK;
} }