Abit DMI product name strings are composed of the product branding and the north/south bridge chipset names, respectively. Unfortunately, these components are inconsistently separated by a variable number of spaces. On some boards, there is no space, and on others, there are many spaces. Since we don't care about matching bridge chipset names, update the DMI probe routine to only match the first N characters of the DMI product name, and update the motherboard table to include only the product branding. This change preemptively works around potential variances in the DMI product string between different BIOS revisions for the same board. Signed-off-by: Alistair John Strachan <alistair at devzero.co.uk> Tested-by: Justin Piszcz <jpiszcz at lucidpixels.com> Cc: Hans de Goede <hdegoede at redhat.com> Cc: Jean Delvare <khali at linux-fr.org> --- drivers/hwmon/abituguru3.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/hwmon/abituguru3.c b/drivers/hwmon/abituguru3.c index ff6aad8..59b3d02 100644 --- a/drivers/hwmon/abituguru3.c +++ b/drivers/hwmon/abituguru3.c @@ -279,7 +279,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = { { "OTES1 Fan", 36, 2, 60, 1, 0 }, { NULL, 0, 0, 0, 0, 0 } } }, - { 0x0011, "AT8 32X(ATI RD580-ULI M1575)", { + { 0x0011, "AT8 32X", { { "CPU Core", 0, 0, 10, 1, 0 }, { "DDR", 1, 0, 20, 1, 0 }, { "DDR VTT", 2, 0, 10, 1, 0 }, @@ -402,7 +402,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = { { "AUX3 Fan", 36, 2, 60, 1, 0 }, { NULL, 0, 0, 0, 0, 0 } } }, - { 0x0016, "AW9D-MAX (Intel i975-ICH7)", { + { 0x0016, "AW9D-MAX", { { "CPU Core", 0, 0, 10, 1, 0 }, { "DDR2", 1, 0, 20, 1, 0 }, { "DDR2 VTT", 2, 0, 10, 1, 0 }, @@ -509,7 +509,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = { { "AUX3 FAN", 36, 2, 60, 1, 0 }, { NULL, 0, 0, 0, 0, 0 } } }, - { 0x001A, "IP35 Pro(Intel P35-ICH9R)", { + { 0x001A, "IP35 Pro", { { "CPU Core", 0, 0, 10, 1, 0 }, { "DDR2", 1, 0, 20, 1, 0 }, { "DDR2 VTT", 2, 0, 10, 1, 0 }, @@ -1139,7 +1139,17 @@ static int __init abituguru3_dmi_detect(void) for (i = 0; abituguru3_motherboards[i].id; i++) { const char *dmi_name = abituguru3_motherboards[i].dmi_name; - if (dmi_name && !strcmp(dmi_name, board_name)) + + /* + * Some of the vendor DMI strings are formatted inconsistently + * e.g. "Board Name(Chipset)" vs "Board Name (Chipset)" + * + * Work around this ambiguity by only matching partial DMI + * board name strings, in an effort to avoid potential + * variances between vendor BIOS revisions. + */ + if (dmi_name && + !strncmp(dmi_name, board_name, strlen(dmi_name))) break; }