On Mon, 25 Mar 2024 15:33:54 +0000 Lothar Rubusch <l.rubusch@xxxxxxxxx> wrote: > Add a function pointer argument to the probe function in > the core module to provide a way to pre-configure the bus. > > The passed setup function can be prepared in the bus > specific spi or the i2c module, or NULL otherwise. It shall > then be executed in the bus independent core module. Wrap descriptions at 75 chars, not around 60 as you've done here. > > Signed-off-by: Lothar Rubusch <l.rubusch@xxxxxxxxx> > --- > drivers/iio/accel/adxl345.h | 3 ++- > drivers/iio/accel/adxl345_core.c | 10 +++++++++- > drivers/iio/accel/adxl345_i2c.c | 2 +- > drivers/iio/accel/adxl345_spi.c | 2 +- > 4 files changed, 13 insertions(+), 4 deletions(-) > > diff --git a/drivers/iio/accel/adxl345.h b/drivers/iio/accel/adxl345.h > index ee169fed4..620a2e0f0 100644 > --- a/drivers/iio/accel/adxl345.h > +++ b/drivers/iio/accel/adxl345.h > @@ -59,6 +59,7 @@ struct adxl345_chip_info { > int uscale; > }; > > -int adxl345_core_probe(struct device *dev, struct regmap *regmap); > +int adxl345_core_probe(struct device *dev, struct regmap *regmap, > + int (*setup)(struct device*, struct regmap*)); > > #endif /* _ADXL345_H_ */ > diff --git a/drivers/iio/accel/adxl345_core.c b/drivers/iio/accel/adxl345_core.c > index eba9c048a..476d729bc 100644 > --- a/drivers/iio/accel/adxl345_core.c > +++ b/drivers/iio/accel/adxl345_core.c > @@ -168,13 +168,21 @@ static void adxl345_powerdown(void *regmap) > regmap_write(regmap, ADXL345_REG_POWER_CTL, ADXL345_POWER_CTL_STANDBY); > } > > -int adxl345_core_probe(struct device *dev, struct regmap *regmap) > +int adxl345_core_probe(struct device *dev, struct regmap *regmap, > + int (*setup)(struct device*, struct regmap*)) Wrap as per the header definition above. (align just after opening bracket). > { > struct adxl345_data *data; > struct iio_dev *indio_dev; > u32 regval; > int ret; > > + /* Perform optional initial bus specific configuration */ > + if (setup) { > + ret = setup(dev, regmap); > + if (ret) > + return ret; > + } > + > ret = regmap_read(regmap, ADXL345_REG_DEVID, ®val); > if (ret < 0) > return dev_err_probe(dev, ret, "Error reading device ID\n"); > diff --git a/drivers/iio/accel/adxl345_i2c.c b/drivers/iio/accel/adxl345_i2c.c > index a3084b0a8..4065b8f7c 100644 > --- a/drivers/iio/accel/adxl345_i2c.c > +++ b/drivers/iio/accel/adxl345_i2c.c > @@ -27,7 +27,7 @@ static int adxl345_i2c_probe(struct i2c_client *client) > if (IS_ERR(regmap)) > return dev_err_probe(&client->dev, PTR_ERR(regmap), "Error initializing regmap\n"); > > - return adxl345_core_probe(&client->dev, regmap); > + return adxl345_core_probe(&client->dev, regmap, NULL); > } > > static const struct adxl345_chip_info adxl345_i2c_info = { > diff --git a/drivers/iio/accel/adxl345_spi.c b/drivers/iio/accel/adxl345_spi.c > index 93ca349f1..1c0513bd3 100644 > --- a/drivers/iio/accel/adxl345_spi.c > +++ b/drivers/iio/accel/adxl345_spi.c > @@ -33,7 +33,7 @@ static int adxl345_spi_probe(struct spi_device *spi) > if (IS_ERR(regmap)) > return dev_err_probe(&spi->dev, PTR_ERR(regmap), "Error initializing regmap\n"); > > - return adxl345_core_probe(&spi->dev, regmap); > + return adxl345_core_probe(&spi->dev, regmap, NULL); > } > > static const struct adxl345_chip_info adxl345_spi_info = {