uio: uio_fsl_elbc_gpcm: convert platform driver to use dev_groups
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 31 Jul 2019 12:43:41 +0000 (14:43 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 2 Aug 2019 10:56:51 +0000 (12:56 +0200)
Platform drivers now have the option to have the platform core create
and remove any needed sysfs attribute files.  So take advantage of that
and do not register "by hand" a sysfs group of attributes.

Link: https://lore.kernel.org/r/20190731124349.4474-3-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/uio/uio_fsl_elbc_gpcm.c

index 450e2f5..be8a690 100644 (file)
@@ -71,6 +71,13 @@ static ssize_t reg_store(struct device *dev, struct device_attribute *attr,
 static DEVICE_ATTR(reg_br, 0664, reg_show, reg_store);
 static DEVICE_ATTR(reg_or, 0664, reg_show, reg_store);
 
+static struct attribute *uio_fsl_elbc_gpcm_attrs[] = {
+       &dev_attr_reg_br.attr,
+       &dev_attr_reg_or.attr,
+       NULL,
+};
+ATTRIBUTE_GROUPS(uio_fsl_elbc_gpcm);
+
 static ssize_t reg_show(struct device *dev, struct device_attribute *attr,
                        char *buf)
 {
@@ -411,25 +418,12 @@ static int uio_fsl_elbc_gpcm_probe(struct platform_device *pdev)
        /* store private data */
        platform_set_drvdata(pdev, info);
 
-       /* create sysfs files */
-       ret = device_create_file(priv->dev, &dev_attr_reg_br);
-       if (ret)
-               goto out_err3;
-       ret = device_create_file(priv->dev, &dev_attr_reg_or);
-       if (ret)
-               goto out_err4;
-
        dev_info(priv->dev,
                 "eLBC/GPCM device (%s) at 0x%llx, bank %d, irq=%d\n",
                 priv->name, (unsigned long long)res.start, priv->bank,
                 irq != NO_IRQ ? irq : -1);
 
        return 0;
-out_err4:
-       device_remove_file(priv->dev, &dev_attr_reg_br);
-out_err3:
-       platform_set_drvdata(pdev, NULL);
-       uio_unregister_device(info);
 out_err2:
        if (priv->shutdown)
                priv->shutdown(info, true);
@@ -448,8 +442,6 @@ static int uio_fsl_elbc_gpcm_remove(struct platform_device *pdev)
        struct uio_info *info = platform_get_drvdata(pdev);
        struct fsl_elbc_gpcm *priv = info->priv;
 
-       device_remove_file(priv->dev, &dev_attr_reg_or);
-       device_remove_file(priv->dev, &dev_attr_reg_br);
        platform_set_drvdata(pdev, NULL);
        uio_unregister_device(info);
        if (priv->shutdown)
@@ -474,6 +466,7 @@ static struct platform_driver uio_fsl_elbc_gpcm_driver = {
        .driver = {
                .name = "fsl,elbc-gpcm-uio",
                .of_match_table = uio_fsl_elbc_gpcm_match,
+               .dev_groups = uio_fsl_elbc_gpcm_groups,
        },
        .probe = uio_fsl_elbc_gpcm_probe,
        .remove = uio_fsl_elbc_gpcm_remove,