|
@@ -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;
|
|
|
}
|