Pass a function setup() as pointer from SPI/I2C specific modules to the core module. Implement setup() to pass the spi-3wire bus option, if declared in the device-tree. In the core module then update data_format register configuration bits instead of overwriting it. The changes allow to remove a data_range field. Signed-off-by: Lothar Rubusch <l.rubusch@xxxxxxxxx> --- V1 -> V2: Split into spi-3wire and refactoring V2 -> V3: Split further, focus on needed changesets V3 -> V4: Drop "Remove single info instances"; split "Group bus configuration" into separat comment patch; reorder patch set V4 -> V5: Refrase comments; Align comments to 75; rebuild FORMAT_MASK by available flags; fix indention V5 -> V6: Remove FORMAT_MASK by a local variable on call site; Refrase comments; Remove unneeded include V6 -> V7: Restructure optional passing the setup() to core's probe() Guarantee that initially a regmap_write() was called to init all bits to a defined state - When a setup() e.g. for 3wire is passed, then call regmap_write() inside the setup(). In the following core's probe() has to call regmap_update() - When NULL is passed, then call regmap_write() in core's probe() - Refactoring: remove obvious comments and simplify code Lothar Rubusch (8): iio: accel: adxl345: Make data_range obsolete iio: accel: adxl345: Group bus configuration iio: accel: adxl345: Move defines to header dt-bindings: iio: accel: adxl345: Add spi-3wire iio: accel: adxl345: Pass function pointer to core iio: accel: adxl345: Reorder probe initialization iio: accel: adxl345: Add comment to probe iio: accel: adxl345: Add spi-3wire option .../bindings/iio/accel/adi,adxl345.yaml | 2 + drivers/iio/accel/adxl345.h | 36 +++++++- drivers/iio/accel/adxl345_core.c | 92 ++++++++++--------- drivers/iio/accel/adxl345_i2c.c | 2 +- drivers/iio/accel/adxl345_spi.c | 10 +- 5 files changed, 94 insertions(+), 48 deletions(-) -- 2.25.1