On Thu, Jul 4, 2019 at 11:47 AM Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > Platform drivers now have the option to have the platform core create > and remove any needed sysfs attribute files. So take advantage of that > and do not register "by hand" a bunch of sysfs files. > Acked-by: Andy Shevchenko <andy.shevchenko@xxxxxxxxx> > Cc: Darren Hart <dvhart@xxxxxxxxxxxxx> > Cc: Andy Shevchenko <andy@xxxxxxxxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: Ingo Molnar <mingo@xxxxxxxxxx> > Cc: Borislav Petkov <bp@xxxxxxxxx> > Cc: "H. Peter Anvin" <hpa@xxxxxxxxx> > Cc: x86@xxxxxxxxxx > Cc: platform-driver-x86@xxxxxxxxxxxxxxx > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > --- > drivers/platform/x86/hp-wmi.c | 47 +++++++++-------------------------- > 1 file changed, 12 insertions(+), 35 deletions(-) > > diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c > index 2521e45280b8..b4ed5902737a 100644 > --- a/drivers/platform/x86/hp-wmi.c > +++ b/drivers/platform/x86/hp-wmi.c > @@ -502,6 +502,17 @@ static DEVICE_ATTR_RO(dock); > static DEVICE_ATTR_RO(tablet); > static DEVICE_ATTR_RW(postcode); > > +static struct attribute *hp_wmi_attrs[] = { > + &dev_attr_display.attr, > + &dev_attr_hddtemp.attr, > + &dev_attr_als.attr, > + &dev_attr_dock.attr, > + &dev_attr_tablet.attr, > + &dev_attr_postcode.attr, > + NULL, > +}; > +ATTRIBUTE_GROUPS(hp_wmi); > + > static void hp_wmi_notify(u32 value, void *context) > { > struct acpi_buffer response = { ACPI_ALLOCATE_BUFFER, NULL }; > @@ -678,16 +689,6 @@ static void hp_wmi_input_destroy(void) > input_unregister_device(hp_wmi_input_dev); > } > > -static void cleanup_sysfs(struct platform_device *device) > -{ > - device_remove_file(&device->dev, &dev_attr_display); > - device_remove_file(&device->dev, &dev_attr_hddtemp); > - device_remove_file(&device->dev, &dev_attr_als); > - device_remove_file(&device->dev, &dev_attr_dock); > - device_remove_file(&device->dev, &dev_attr_tablet); > - device_remove_file(&device->dev, &dev_attr_postcode); > -} > - > static int __init hp_wmi_rfkill_setup(struct platform_device *device) > { > int err, wireless; > @@ -858,8 +859,6 @@ static int __init hp_wmi_rfkill2_setup(struct platform_device *device) > > static int __init hp_wmi_bios_setup(struct platform_device *device) > { > - int err; > - > /* clear detected rfkill devices */ > wifi_rfkill = NULL; > bluetooth_rfkill = NULL; > @@ -869,35 +868,12 @@ static int __init hp_wmi_bios_setup(struct platform_device *device) > if (hp_wmi_rfkill_setup(device)) > hp_wmi_rfkill2_setup(device); > > - err = device_create_file(&device->dev, &dev_attr_display); > - if (err) > - goto add_sysfs_error; > - err = device_create_file(&device->dev, &dev_attr_hddtemp); > - if (err) > - goto add_sysfs_error; > - err = device_create_file(&device->dev, &dev_attr_als); > - if (err) > - goto add_sysfs_error; > - err = device_create_file(&device->dev, &dev_attr_dock); > - if (err) > - goto add_sysfs_error; > - err = device_create_file(&device->dev, &dev_attr_tablet); > - if (err) > - goto add_sysfs_error; > - err = device_create_file(&device->dev, &dev_attr_postcode); > - if (err) > - goto add_sysfs_error; > return 0; > - > -add_sysfs_error: > - cleanup_sysfs(device); > - return err; > } > > static int __exit hp_wmi_bios_remove(struct platform_device *device) > { > int i; > - cleanup_sysfs(device); > > for (i = 0; i < rfkill2_count; i++) { > rfkill_unregister(rfkill2[i].rfkill); > @@ -968,6 +944,7 @@ static struct platform_driver hp_wmi_driver = { > .pm = &hp_wmi_pm_ops, > }, > .remove = __exit_p(hp_wmi_bios_remove), > + .dev_groups = hp_wmi_groups, > }; > > static int __init hp_wmi_init(void) > -- > 2.22.0 > -- With Best Regards, Andy Shevchenko