summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-07-31 08:43:46 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-08-02 07:23:14 -0400
commit5bd08a4ae3d06cf598b91444c2d727aa25045bf0 (patch)
treec17ee26d0f1669b8a55130e21755134dffe1ce0d
parentde3dacf0347e3dc6f63cd5abe944bc60077c5abf (diff)
platform: x86: hp-wmi: convert platform driver to use dev_groups
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 <dvhart@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: x86@kernel.org Cc: platform-driver-x86@vger.kernel.org Acked-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Link: https://lore.kernel.org/r/20190731124349.4474-8-gregkh@linuxfoundation.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/platform/x86/hp-wmi.c47
1 files changed, 12 insertions, 35 deletions
diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c
index 2521e45280b8..6bcbbb375401 100644
--- a/drivers/platform/x86/hp-wmi.c
+++ b/drivers/platform/x86/hp-wmi.c
@@ -502,6 +502,17 @@ static DEVICE_ATTR_RO(dock);
502static DEVICE_ATTR_RO(tablet); 502static DEVICE_ATTR_RO(tablet);
503static DEVICE_ATTR_RW(postcode); 503static DEVICE_ATTR_RW(postcode);
504 504
505static struct attribute *hp_wmi_attrs[] = {
506 &dev_attr_display.attr,
507 &dev_attr_hddtemp.attr,
508 &dev_attr_als.attr,
509 &dev_attr_dock.attr,
510 &dev_attr_tablet.attr,
511 &dev_attr_postcode.attr,
512 NULL,
513};
514ATTRIBUTE_GROUPS(hp_wmi);
515
505static void hp_wmi_notify(u32 value, void *context) 516static void hp_wmi_notify(u32 value, void *context)
506{ 517{
507 struct acpi_buffer response = { ACPI_ALLOCATE_BUFFER, NULL }; 518 struct acpi_buffer response = { ACPI_ALLOCATE_BUFFER, NULL };
@@ -678,16 +689,6 @@ static void hp_wmi_input_destroy(void)
678 input_unregister_device(hp_wmi_input_dev); 689 input_unregister_device(hp_wmi_input_dev);
679} 690}
680 691
681static void cleanup_sysfs(struct platform_device *device)
682{
683 device_remove_file(&device->dev, &dev_attr_display);
684 device_remove_file(&device->dev, &dev_attr_hddtemp);
685 device_remove_file(&device->dev, &dev_attr_als);
686 device_remove_file(&device->dev, &dev_attr_dock);
687 device_remove_file(&device->dev, &dev_attr_tablet);
688 device_remove_file(&device->dev, &dev_attr_postcode);
689}
690
691static int __init hp_wmi_rfkill_setup(struct platform_device *device) 692static int __init hp_wmi_rfkill_setup(struct platform_device *device)
692{ 693{
693 int err, wireless; 694 int err, wireless;
@@ -858,8 +859,6 @@ fail:
858 859
859static int __init hp_wmi_bios_setup(struct platform_device *device) 860static int __init hp_wmi_bios_setup(struct platform_device *device)
860{ 861{
861 int err;
862
863 /* clear detected rfkill devices */ 862 /* clear detected rfkill devices */
864 wifi_rfkill = NULL; 863 wifi_rfkill = NULL;
865 bluetooth_rfkill = NULL; 864 bluetooth_rfkill = NULL;
@@ -869,35 +868,12 @@ static int __init hp_wmi_bios_setup(struct platform_device *device)
869 if (hp_wmi_rfkill_setup(device)) 868 if (hp_wmi_rfkill_setup(device))
870 hp_wmi_rfkill2_setup(device); 869 hp_wmi_rfkill2_setup(device);
871 870
872 err = device_create_file(&device->dev, &dev_attr_display);
873 if (err)
874 goto add_sysfs_error;
875 err = device_create_file(&device->dev, &dev_attr_hddtemp);
876 if (err)
877 goto add_sysfs_error;
878 err = device_create_file(&device->dev, &dev_attr_als);
879 if (err)
880 goto add_sysfs_error;
881 err = device_create_file(&device->dev, &dev_attr_dock);
882 if (err)
883 goto add_sysfs_error;
884 err = device_create_file(&device->dev, &dev_attr_tablet);
885 if (err)
886 goto add_sysfs_error;
887 err = device_create_file(&device->dev, &dev_attr_postcode);
888 if (err)
889 goto add_sysfs_error;
890 return 0; 871 return 0;
891
892add_sysfs_error:
893 cleanup_sysfs(device);
894 return err;
895} 872}
896 873
897static int __exit hp_wmi_bios_remove(struct platform_device *device) 874static int __exit hp_wmi_bios_remove(struct platform_device *device)
898{ 875{
899 int i; 876 int i;
900 cleanup_sysfs(device);
901 877
902 for (i = 0; i < rfkill2_count; i++) { 878 for (i = 0; i < rfkill2_count; i++) {
903 rfkill_unregister(rfkill2[i].rfkill); 879 rfkill_unregister(rfkill2[i].rfkill);
@@ -966,6 +942,7 @@ static struct platform_driver hp_wmi_driver = {
966 .driver = { 942 .driver = {
967 .name = "hp-wmi", 943 .name = "hp-wmi",
968 .pm = &hp_wmi_pm_ops, 944 .pm = &hp_wmi_pm_ops,
945 .dev_groups = hp_wmi_groups,
969 }, 946 },
970 .remove = __exit_p(hp_wmi_bios_remove), 947 .remove = __exit_p(hp_wmi_bios_remove),
971}; 948};