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 <dvh...@infradead.org>
Cc: Andy Shevchenko <a...@infradead.org>
Cc: Thomas Gleixner <t...@linutronix.de>
Cc: Ingo Molnar <mi...@redhat.com>
Cc: Borislav Petkov <b...@alien8.de>
Cc: "H. Peter Anvin" <h...@zytor.com>
Cc: x...@kernel.org
Cc: platform-driver-...@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
---
 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