Alistair John Strachan wrote: > 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> Looks good, Acked-by: Hans de Goede <hdegoede at redhat.com> Regards, Hans > --- > 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; > } >