On Sun, Jun 05, 2022 at 12:02:00AM +0200, Armin Wolf wrote: > Some devices like the Fujitsu Celsius W380 do contain > a working sch56xx hardware monitoring device, but do > not contain the necessary DMI onboard device. > > Do not check for the presence of an suitable onboard device > on these machines. The list of affected machines was created > using data collected by the Linux Hardware Project. > > Tested on a Fujitsu Esprimo P720, but sadly not on a affected > machine. > > Fixes: 393935baa45e (hwmon: (sch56xx-common) Add automatic module loading on supported devices) > Signed-off-by: Armin Wolf <W_Armin@xxxxxx> > Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx> Applied to hwmon-next. Thanks, Guenter > --- > drivers/hwmon/sch56xx-common.c | 44 ++++++++++++++++++++++++++-------- > 1 file changed, 34 insertions(+), 10 deletions(-) > > -- > 2.30.2 > > diff --git a/drivers/hwmon/sch56xx-common.c b/drivers/hwmon/sch56xx-common.c > index 3ece53adabd6..de3a0886c2f7 100644 > --- a/drivers/hwmon/sch56xx-common.c > +++ b/drivers/hwmon/sch56xx-common.c > @@ -523,6 +523,28 @@ static int __init sch56xx_device_add(int address, const char *name) > return PTR_ERR_OR_ZERO(sch56xx_pdev); > } > > +static const struct dmi_system_id sch56xx_dmi_override_table[] __initconst = { > + { > + .matches = { > + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), > + DMI_MATCH(DMI_PRODUCT_NAME, "CELSIUS W380"), > + }, > + }, > + { > + .matches = { > + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), > + DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO P710"), > + }, > + }, > + { > + .matches = { > + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), > + DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO E9900"), > + }, > + }, > + { } > +}; > + > /* For autoloading only */ > static const struct dmi_system_id sch56xx_dmi_table[] __initconst = { > { > @@ -543,16 +565,18 @@ static int __init sch56xx_init(void) > if (!dmi_check_system(sch56xx_dmi_table)) > return -ENODEV; > > - /* > - * Some machines like the Esprimo P720 and Esprimo C700 have > - * onboard devices named " Antiope"/" Theseus" instead of > - * "Antiope"/"Theseus", so we need to check for both. > - */ > - if (!dmi_find_device(DMI_DEV_TYPE_OTHER, "Antiope", NULL) && > - !dmi_find_device(DMI_DEV_TYPE_OTHER, " Antiope", NULL) && > - !dmi_find_device(DMI_DEV_TYPE_OTHER, "Theseus", NULL) && > - !dmi_find_device(DMI_DEV_TYPE_OTHER, " Theseus", NULL)) > - return -ENODEV; > + if (!dmi_check_system(sch56xx_dmi_override_table)) { > + /* > + * Some machines like the Esprimo P720 and Esprimo C700 have > + * onboard devices named " Antiope"/" Theseus" instead of > + * "Antiope"/"Theseus", so we need to check for both. > + */ > + if (!dmi_find_device(DMI_DEV_TYPE_OTHER, "Antiope", NULL) && > + !dmi_find_device(DMI_DEV_TYPE_OTHER, " Antiope", NULL) && > + !dmi_find_device(DMI_DEV_TYPE_OTHER, "Theseus", NULL) && > + !dmi_find_device(DMI_DEV_TYPE_OTHER, " Theseus", NULL)) > + return -ENODEV; > + } > } > > /*