platform/x86: dell-wmi-sysman: Use firmware_attributes_class helper
authorMark Pearson <markpearson@lenovo.com>
Sun, 30 May 2021 22:31:10 +0000 (18:31 -0400)
committerHans de Goede <hdegoede@redhat.com>
Wed, 16 Jun 2021 15:47:52 +0000 (17:47 +0200)
Update Dell WMI sysman driver to use newly implemented helper module.

Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mark Pearson <markpearson@lenovo.com>
Link: https://lore.kernel.org/r/20210530223111.25929-2-markpearson@lenovo.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/dell/Kconfig
drivers/platform/x86/dell/dell-wmi-sysman/sysman.c

index b5c6a6a..9b0a4d0 100644 (file)
@@ -206,6 +206,7 @@ config DELL_WMI_SYSMAN
        depends on ACPI_WMI
        depends on DMI
        select NLS
+       select FW_ATTR_CLASS
        help
          This driver allows changing BIOS settings on many Dell machines from
          2018 and newer without the use of any additional software.
index d21e84c..1378c18 100644 (file)
 #include <linux/kernel.h>
 #include <linux/wmi.h>
 #include "dell-wmi-sysman.h"
+#include "../../firmware_attributes_class.h"
 
 #define MAX_TYPES  4
 #include <linux/nls.h>
 
-static struct class firmware_attributes_class = {
-       .name = "firmware-attributes",
-};
-
 struct wmi_sysman_priv wmi_priv = {
        .mutex = __MUTEX_INITIALIZER(wmi_priv.mutex),
 };
@@ -28,6 +25,7 @@ struct wmi_sysman_priv wmi_priv = {
 /* reset bios to defaults */
 static const char * const reset_types[] = {"builtinsafe", "lastknowngood", "factory", "custom"};
 static int reset_option = -1;
+struct class *fw_attr_class;
 
 
 /**
@@ -542,11 +540,11 @@ static int __init sysman_init(void)
                goto err_exit_bios_attr_pass_interface;
        }
 
-       ret = class_register(&firmware_attributes_class);
+       ret = fw_attributes_class_get(&fw_attr_class);
        if (ret)
                goto err_exit_bios_attr_pass_interface;
 
-       wmi_priv.class_dev = device_create(&firmware_attributes_class, NULL, MKDEV(0, 0),
+       wmi_priv.class_dev = device_create(fw_attr_class, NULL, MKDEV(0, 0),
                                  NULL, "%s", DRIVER_NAME);
        if (IS_ERR(wmi_priv.class_dev)) {
                ret = PTR_ERR(wmi_priv.class_dev);
@@ -603,10 +601,10 @@ err_release_attributes_data:
        release_attributes_data();
 
 err_destroy_classdev:
-       device_destroy(&firmware_attributes_class, MKDEV(0, 0));
+       device_destroy(fw_attr_class, MKDEV(0, 0));
 
 err_unregister_class:
-       class_unregister(&firmware_attributes_class);
+       fw_attributes_class_put();
 
 err_exit_bios_attr_pass_interface:
        exit_bios_attr_pass_interface();
@@ -620,8 +618,8 @@ err_exit_bios_attr_set_interface:
 static void __exit sysman_exit(void)
 {
        release_attributes_data();
-       device_destroy(&firmware_attributes_class, MKDEV(0, 0));
-       class_unregister(&firmware_attributes_class);
+       device_destroy(fw_attr_class, MKDEV(0, 0));
+       fw_attributes_class_put();
        exit_bios_attr_set_interface();
        exit_bios_attr_pass_interface();
 }