Input: psmouse - switch to using dev_groups for driver-specific attributes
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 3 Sep 2022 05:11:18 +0000 (22:11 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 3 Sep 2022 19:31:18 +0000 (12:31 -0700)
The driver core now has the ability to handle the creation and removal
of device-specific sysfs files, let's use it instead of registering and
unregistering attributes by hand.

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20220903051119.1332808-2-dmitry.torokhov@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/mouse/psmouse-base.c

index 0b4a303..c9a7e87 100644 (file)
@@ -94,7 +94,7 @@ PSMOUSE_DEFINE_ATTR(resync_time, S_IWUSR | S_IRUGO,
                        (void *) offsetof(struct psmouse, resync_time),
                        psmouse_show_int_attr, psmouse_set_int_attr);
 
-static struct attribute *psmouse_attributes[] = {
+static struct attribute *psmouse_dev_attrs[] = {
        &psmouse_attr_protocol.dattr.attr,
        &psmouse_attr_rate.dattr.attr,
        &psmouse_attr_resolution.dattr.attr,
@@ -103,9 +103,7 @@ static struct attribute *psmouse_attributes[] = {
        NULL
 };
 
-static const struct attribute_group psmouse_attribute_group = {
-       .attrs  = psmouse_attributes,
-};
+ATTRIBUTE_GROUPS(psmouse_dev);
 
 /*
  * psmouse_mutex protects all operations changing state of mouse
@@ -1481,8 +1479,6 @@ static void psmouse_disconnect(struct serio *serio)
        struct psmouse *psmouse = serio_get_drvdata(serio);
        struct psmouse *parent = NULL;
 
-       sysfs_remove_group(&serio->dev.kobj, &psmouse_attribute_group);
-
        mutex_lock(&psmouse_mutex);
 
        psmouse_set_state(psmouse, PSMOUSE_CMD_MODE);
@@ -1647,10 +1643,6 @@ static int psmouse_connect(struct serio *serio, struct serio_driver *drv)
        if (parent && parent->pt_activate)
                parent->pt_activate(parent);
 
-       error = sysfs_create_group(&serio->dev.kobj, &psmouse_attribute_group);
-       if (error)
-               goto err_pt_deactivate;
-
        /*
         * PS/2 devices having SMBus companions should stay disabled
         * on PS/2 side, in order to have SMBus part operable.
@@ -1666,13 +1658,6 @@ static int psmouse_connect(struct serio *serio, struct serio_driver *drv)
        mutex_unlock(&psmouse_mutex);
        return retval;
 
- err_pt_deactivate:
-       if (parent && parent->pt_deactivate)
-               parent->pt_deactivate(parent);
-       if (input_dev) {
-               input_unregister_device(input_dev);
-               input_dev = NULL; /* so we don't try to free it below */
-       }
  err_protocol_disconnect:
        if (psmouse->disconnect)
                psmouse->disconnect(psmouse);
@@ -1791,7 +1776,8 @@ MODULE_DEVICE_TABLE(serio, psmouse_serio_ids);
 
 static struct serio_driver psmouse_drv = {
        .driver         = {
-               .name   = "psmouse",
+               .name           = "psmouse",
+               .dev_groups     = psmouse_dev_groups,
        },
        .description    = DRIVER_DESC,
        .id_table       = psmouse_serio_ids,