RE: [PATCH v2 1/4] Input: adxl34x - use device core to create driver-specific device attributes

From: Hennerich, Michael
Date: Tue Jun 11 2024 - 04:45:16 EST




> -----Original Message-----
> From: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
> Sent: Monday, June 10, 2024 6:43 PM
> To: linux-input@xxxxxxxxxxxxxxx; Sa, Nuno <Nuno.Sa@xxxxxxxxxx>
> Cc: Hennerich, Michael <Michael.Hennerich@xxxxxxxxxx>; linux-
> kernel@xxxxxxxxxxxxxxx
> Subject: [PATCH v2 1/4] Input: adxl34x - use device core to create driver-
> specific device attributes
>
>
> Instead of creating driver-specific device attributes with
> sysfs_create_group() have device core do this by setting up dev_groups
> pointer in the driver structure.
>
> Reviewed-by: Nuno Sa <nuno.sa@xxxxxxxxxx>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>

Acked-by: Michael Hennerich <michael.hennerich@xxxxxxxxxx>

> ---
>
> v2: added Nono's ACK
>
> drivers/input/misc/adxl34x-i2c.c | 1 + drivers/input/misc/adxl34x-spi.c | 1
> +
> drivers/input/misc/adxl34x.c | 15 +++++++--------
> drivers/input/misc/adxl34x.h | 1 +
> 4 files changed, 10 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/input/misc/adxl34x-i2c.c b/drivers/input/misc/adxl34x-
> i2c.c
> index d4014e367c77..7531c7b2d657 100644
> --- a/drivers/input/misc/adxl34x-i2c.c
> +++ b/drivers/input/misc/adxl34x-i2c.c
> @@ -132,6 +132,7 @@ MODULE_DEVICE_TABLE(of, adxl34x_of_id); static
> struct i2c_driver adxl34x_driver = {
> .driver = {
> .name = "adxl34x",
> + .dev_groups = adxl34x_groups,
> .pm = pm_sleep_ptr(&adxl34x_pm),
> .of_match_table = adxl34x_of_id,
> },
> diff --git a/drivers/input/misc/adxl34x-spi.c b/drivers/input/misc/adxl34x-
> spi.c
> index f1094a8ccdd5..2befcc4df0be 100644
> --- a/drivers/input/misc/adxl34x-spi.c
> +++ b/drivers/input/misc/adxl34x-spi.c
> @@ -97,6 +97,7 @@ static void adxl34x_spi_remove(struct spi_device *spi)
> static struct spi_driver adxl34x_driver = {
> .driver = {
> .name = "adxl34x",
> + .dev_groups = adxl34x_groups,
> .pm = pm_sleep_ptr(&adxl34x_pm),
> },
> .probe = adxl34x_spi_probe,
> diff --git a/drivers/input/misc/adxl34x.c b/drivers/input/misc/adxl34x.c index
> a3f45e0ee0c7..fbe5a56c19d1 100644
> --- a/drivers/input/misc/adxl34x.c
> +++ b/drivers/input/misc/adxl34x.c
> @@ -664,6 +664,12 @@ static const struct attribute_group
> adxl34x_attr_group = {
> .attrs = adxl34x_attributes,
> };
>
> +const struct attribute_group *adxl34x_groups[] = {
> + &adxl34x_attr_group,
> + NULL
> +};
> +EXPORT_SYMBOL_GPL(adxl34x_groups);
> +
> static int adxl34x_input_open(struct input_dev *input) {
> struct adxl34x *ac = input_get_drvdata(input); @@ -823,13 +829,9
> @@ struct adxl34x *adxl34x_probe(struct device *dev, int irq,
> goto err_free_mem;
> }
>
> - err = sysfs_create_group(&dev->kobj, &adxl34x_attr_group);
> - if (err)
> - goto err_free_irq;
> -
> err = input_register_device(input_dev);
> if (err)
> - goto err_remove_attr;
> + goto err_free_irq;
>
> AC_WRITE(ac, OFSX, pdata->x_axis_offset);
> ac->hwcal.x = pdata->x_axis_offset;
> @@ -889,8 +891,6 @@ struct adxl34x *adxl34x_probe(struct device *dev, int
> irq,
>
> return ac;
>
> - err_remove_attr:
> - sysfs_remove_group(&dev->kobj, &adxl34x_attr_group);
> err_free_irq:
> free_irq(ac->irq, ac);
> err_free_mem:
> @@ -903,7 +903,6 @@ EXPORT_SYMBOL_GPL(adxl34x_probe);
>
> void adxl34x_remove(struct adxl34x *ac) {
> - sysfs_remove_group(&ac->dev->kobj, &adxl34x_attr_group);
> free_irq(ac->irq, ac);
> input_unregister_device(ac->input);
> dev_dbg(ac->dev, "unregistered accelerometer\n"); diff --git
> a/drivers/input/misc/adxl34x.h b/drivers/input/misc/adxl34x.h index
> f9272a2e7a96..67e0ddc5c3eb 100644
> --- a/drivers/input/misc/adxl34x.h
> +++ b/drivers/input/misc/adxl34x.h
> @@ -26,5 +26,6 @@ struct adxl34x *adxl34x_probe(struct device *dev, int
> irq, void adxl34x_remove(struct adxl34x *ac);
>
> extern const struct dev_pm_ops adxl34x_pm;
> +extern const struct attribute_group *adxl34x_groups[];
>
> #endif
> --
> 2.45.2.505.gda0bf45e8d-goog