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.

Cc: Darren Hart <[email protected]>
Cc: Andy Shevchenko <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
 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

Reply via email to