[TLMI_LEVEL_MASTER] = "master",
 };
 static struct think_lmi tlmi_priv;
-static const struct class *fw_attr_class;
 static DEFINE_MUTEX(tlmi_mutex);
 
 static inline struct tlmi_pwd_setting *to_tlmi_pwd_setting(struct kobject *kobj)
 {
        int i, ret;
 
-       ret = fw_attributes_class_get(&fw_attr_class);
-       if (ret)
-               return ret;
-
-       tlmi_priv.class_dev = device_create(fw_attr_class, NULL, MKDEV(0, 0),
+       tlmi_priv.class_dev = device_create(&firmware_attributes_class, NULL, MKDEV(0, 0),
                        NULL, "%s", "thinklmi");
        if (IS_ERR(tlmi_priv.class_dev)) {
                ret = PTR_ERR(tlmi_priv.class_dev);
 fail_create_attr:
        tlmi_release_attr();
 fail_device_created:
-       device_destroy(fw_attr_class, MKDEV(0, 0));
+       device_destroy(&firmware_attributes_class, MKDEV(0, 0));
 fail_class_created:
-       fw_attributes_class_put();
        return ret;
 }
 
 static void tlmi_remove(struct wmi_device *wdev)
 {
        tlmi_release_attr();
-       device_destroy(fw_attr_class, MKDEV(0, 0));
-       fw_attributes_class_put();
+       device_destroy(&firmware_attributes_class, MKDEV(0, 0));
 }
 
 static int tlmi_probe(struct wmi_device *wdev, const void *context)