> -----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