]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
Input: omap-keypad - use driver core to instantiate device attributes
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 11 Jul 2024 05:03:29 +0000 (22:03 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 13 Jul 2024 00:15:29 +0000 (17:15 -0700)
Instead of manually creating driver-specific device attributes
set struct driver->dev_groups pointer to have the driver core
do it.

This also fixes issue with the attribute not being deleted on driver
unbind.

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/Zo9nofWJ1xg9MgKs@google.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/keyboard/omap-keypad.c

index 16f936db73058e948505f4479849b2c753515250..57587541110b632465906e214ce631dc81c8e5e7 100644 (file)
@@ -171,6 +171,12 @@ static ssize_t omap_kp_enable_store(struct device *dev, struct device_attribute
 
 static DEVICE_ATTR(enable, S_IRUGO | S_IWUSR, omap_kp_enable_show, omap_kp_enable_store);
 
+static struct attribute *omap_kp_attrs[] = {
+       &dev_attr_enable.attr,
+       NULL
+};
+ATTRIBUTE_GROUPS(omap_kp);
+
 static int omap_kp_probe(struct platform_device *pdev)
 {
        struct omap_kp *omap_kp;
@@ -214,10 +220,6 @@ static int omap_kp_probe(struct platform_device *pdev)
        kp_tasklet.data = (unsigned long) omap_kp;
        tasklet_enable(&kp_tasklet);
 
-       ret = device_create_file(&pdev->dev, &dev_attr_enable);
-       if (ret < 0)
-               goto err2;
-
        /* setup input device */
        input_dev->name = "omap-keypad";
        input_dev->phys = "omap-keypad/input0";
@@ -235,12 +237,12 @@ static int omap_kp_probe(struct platform_device *pdev)
                                         pdata->rows, pdata->cols,
                                         omap_kp->keymap, input_dev);
        if (ret < 0)
-               goto err3;
+               goto err2;
 
        ret = input_register_device(omap_kp->input);
        if (ret < 0) {
                printk(KERN_ERR "Unable to register omap-keypad input device\n");
-               goto err3;
+               goto err2;
        }
 
        if (pdata->dbounce)
@@ -252,17 +254,15 @@ static int omap_kp_probe(struct platform_device *pdev)
        if (omap_kp->irq >= 0) {
                if (request_irq(omap_kp->irq, omap_kp_interrupt, 0,
                                "omap-keypad", omap_kp) < 0)
-                       goto err4;
+                       goto err3;
        }
        omap_writew(0, OMAP1_MPUIO_BASE + OMAP_MPUIO_KBD_MASKIT);
 
        return 0;
 
-err4:
+err3:
        input_unregister_device(omap_kp->input);
        input_dev = NULL;
-err3:
-       device_remove_file(&pdev->dev, &dev_attr_enable);
 err2:
        kfree(omap_kp);
        input_free_device(input_dev);
@@ -293,6 +293,7 @@ static struct platform_driver omap_kp_driver = {
        .remove_new     = omap_kp_remove,
        .driver         = {
                .name   = "omap-keypad",
+               .dev_groups = omap_kp_groups,
        },
 };
 module_platform_driver(omap_kp_driver);