The previous series added iio_backend mode, but the configuration for this mode was only possible through GPIOs (Hardware mode). Here, we add support for configuring the chip using its registers (Software mode). The bus access is based on Angelo's ad3552 implementation, that is we have a particular compatible for the backend (here axi-adc) version supporting the ad7606's register writing, and the ad7606 is defined as a child node of the backend in the devicetree. Small changes are added to make the code a bit more straightforward to understand, and more compact. Signed-off-by: Guillaume Stols <gstols@xxxxxxxxxxxx> Co-developed-by: Angelo Dureghello <adureghello@xxxxxxxxxxxx> Signed-off-by: Angelo Dureghello <adureghello@xxxxxxxxxxxx> --- Changes in v4: - some spaces / tabs fixes, - fix child nodes creation as done for dac, - change usleep_range into flseep, - use just a u32 as a value in bus access functions, - protect bus access from concurrent access, - Link to v3: https://lore.kernel.org/r/20250129-wip-bl-ad7606_add_backend_sw_mode-v3-0-c3aec77c0ab7@xxxxxxxxxxxx Changes in v3: - add some fixes found while testing, - general commit meessages fixes, - codying style fixes, - dt-bindings: add some properties as requirted, - use iio_device_claim_direct_mode (and release), - rename bus read/write functions with "bus" as done for ad3552r. Changes in v2: - Improved descriptions. - dt-bindings: improved descriptions, added exemple and additional property for the custom IP. - Reworked some macro commits to avoid changing order and associated diff artifacts. - Various cleanups and formatting fixes. - Link to v1: https://lore.kernel.org/r/20241121-ad7606_add_iio_backend_software_mode-v1-0-8a693a5e3fa9@xxxxxxxxxxxx --- Angelo Dureghello (3): iio: adc: adi-axi-adc: add struct axi_adc_info iio: adc: adi-axi-adc: add platform children support iio: adc: ad7606: protect register access Guillaume Stols (6): dt-bindings: iio: dac: adi-axi-adc: add ad7606 variant iio: adc: ad7606: move the software mode configuration iio: adc: ad7606: move software functions into common file iio: adc: adi-axi-adc: add support for AD7606 register writing iio: adc: ad7606: change channel macros parameters iio: adc: ad7606: add support for writing registers when using backend .../devicetree/bindings/iio/adc/adi,axi-adc.yaml | 70 +++++++- drivers/iio/adc/ad7606.c | 159 +++++++++++++++++-- drivers/iio/adc/ad7606.h | 103 ++++++++---- drivers/iio/adc/ad7606_bus_iface.h | 16 ++ drivers/iio/adc/ad7606_par.c | 52 +++++- drivers/iio/adc/ad7606_spi.c | 137 +--------------- drivers/iio/adc/adi-axi-adc.c | 176 +++++++++++++++++++-- 7 files changed, 516 insertions(+), 197 deletions(-) --- base-commit: 4692f10bec7459a0baa95bdfa66a4ea740ec9e0a change-id: 20250129-wip-bl-ad7606_add_backend_sw_mode-dd22a50663f3 Best regards, -- Angelo Dureghello <adureghello@xxxxxxxxxxxx>