mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-04-09 07:54:00 +00:00
Input: let driver core create class device attribute groups
Rely on device core to create attribute groups for input devices instead of open-coding it. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
15e03ae811
commit
cb9def4dff
1 changed files with 8 additions and 21 deletions
|
@ -754,6 +754,13 @@ static struct attribute_group input_dev_caps_attr_group = {
|
||||||
.attrs = input_dev_caps_attrs,
|
.attrs = input_dev_caps_attrs,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct attribute_group *input_dev_attr_groups[] = {
|
||||||
|
&input_dev_attr_group,
|
||||||
|
&input_dev_id_attr_group,
|
||||||
|
&input_dev_caps_attr_group,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
static void input_dev_release(struct class_device *class_dev)
|
static void input_dev_release(struct class_device *class_dev)
|
||||||
{
|
{
|
||||||
struct input_dev *dev = to_input_dev(class_dev);
|
struct input_dev *dev = to_input_dev(class_dev);
|
||||||
|
@ -907,6 +914,7 @@ struct input_dev *input_allocate_device(void)
|
||||||
dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL);
|
dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL);
|
||||||
if (dev) {
|
if (dev) {
|
||||||
dev->cdev.class = &input_class;
|
dev->cdev.class = &input_class;
|
||||||
|
dev->cdev.groups = input_dev_attr_groups;
|
||||||
class_device_initialize(&dev->cdev);
|
class_device_initialize(&dev->cdev);
|
||||||
mutex_init(&dev->mutex);
|
mutex_init(&dev->mutex);
|
||||||
INIT_LIST_HEAD(&dev->h_list);
|
INIT_LIST_HEAD(&dev->h_list);
|
||||||
|
@ -979,18 +987,6 @@ int input_register_device(struct input_dev *dev)
|
||||||
if (error)
|
if (error)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
error = sysfs_create_group(&dev->cdev.kobj, &input_dev_attr_group);
|
|
||||||
if (error)
|
|
||||||
goto fail1;
|
|
||||||
|
|
||||||
error = sysfs_create_group(&dev->cdev.kobj, &input_dev_id_attr_group);
|
|
||||||
if (error)
|
|
||||||
goto fail2;
|
|
||||||
|
|
||||||
error = sysfs_create_group(&dev->cdev.kobj, &input_dev_caps_attr_group);
|
|
||||||
if (error)
|
|
||||||
goto fail3;
|
|
||||||
|
|
||||||
path = kobject_get_path(&dev->cdev.kobj, GFP_KERNEL);
|
path = kobject_get_path(&dev->cdev.kobj, GFP_KERNEL);
|
||||||
printk(KERN_INFO "input: %s as %s\n",
|
printk(KERN_INFO "input: %s as %s\n",
|
||||||
dev->name ? dev->name : "Unspecified device", path ? path : "N/A");
|
dev->name ? dev->name : "Unspecified device", path ? path : "N/A");
|
||||||
|
@ -1008,11 +1004,6 @@ int input_register_device(struct input_dev *dev)
|
||||||
input_wakeup_procfs_readers();
|
input_wakeup_procfs_readers();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fail3: sysfs_remove_group(&dev->cdev.kobj, &input_dev_id_attr_group);
|
|
||||||
fail2: sysfs_remove_group(&dev->cdev.kobj, &input_dev_attr_group);
|
|
||||||
fail1: class_device_del(&dev->cdev);
|
|
||||||
return error;
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(input_register_device);
|
EXPORT_SYMBOL(input_register_device);
|
||||||
|
|
||||||
|
@ -1037,10 +1028,6 @@ void input_unregister_device(struct input_dev *dev)
|
||||||
|
|
||||||
list_del_init(&dev->node);
|
list_del_init(&dev->node);
|
||||||
|
|
||||||
sysfs_remove_group(&dev->cdev.kobj, &input_dev_caps_attr_group);
|
|
||||||
sysfs_remove_group(&dev->cdev.kobj, &input_dev_id_attr_group);
|
|
||||||
sysfs_remove_group(&dev->cdev.kobj, &input_dev_attr_group);
|
|
||||||
|
|
||||||
class_device_unregister(&dev->cdev);
|
class_device_unregister(&dev->cdev);
|
||||||
|
|
||||||
input_wakeup_procfs_readers();
|
input_wakeup_procfs_readers();
|
||||||
|
|
Loading…
Add table
Reference in a new issue