.../devicetree/bindings/iio/dac/adi,ad5706r.yaml | 105 +++++++++ MAINTAINERS | 8 + drivers/iio/dac/Kconfig | 11 + drivers/iio/dac/Makefile | 1 + drivers/iio/dac/ad5706r.c | 253 +++++++++++++++++++++ 5 files changed, 378 insertions(+)
This series adds support for the Analog Devices AD5706R, a 4-channel
16-bit current output digital-to-analog converter with SPI interface.
This initial driver provides basic DAC functionality through standard
IIO interfaces.
Datasheet: https://www.analog.com/en/products/ad5706r.html
Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
---
Changes in v9:
- Kconfig: changed REGMAP_SPI to REGMAP
- updated cover letter and driver commit message
- Link to v8: https://lore.kernel.org/r/20260417-dev_ad5706r-v8-0-ef87dff62b57@analog.com
Changes in v8:
- driver:
- changed DAC_CODE from BIT(16) to GENMASK(15,0)
- removed defines for single/multi byte, replaced with number
- adjusted regmap_write to use if/else similar to read()
- reverted in_range back to open code equivalent, removed minmax.h
- Link to v7: https://lore.kernel.org/r/20260410-dev_ad5706r-v7-0-af93a4caa186@analog.com
Changes in v7:
- driver:
- Moved/added size validation before data access in write()/read()
- Link to v6: https://lore.kernel.org/r/20260410-dev_ad5706r-v6-0-f3fda5921fe4@analog.com
Changes in v6:
- driver:
- Added size validation in regmap_write()
- Used &st->tx_buf[0] consistently in _be32/be16 calls
- Added missing indent in AD5706R_CHAN
- Link to v5: https://lore.kernel.org/r/20260407-dev_ad5706r-v5-0-a4c7737b6ae9@analog.com
Changes in v5:
- dt-bindings:
- Changed out-en-gpios to enable-gpios
- driver:
- Kconfig: Added select REGMAP_SPI
- Headers: Removed device.h, errno.h, string.h; added dev_printk.h
- Use IIO_DMA_MINALIGN instead of ARCH_DMA_MINALIGN
- Replaced memcpy/memset with put_unaligned_be* for consistency
- Added struct device *dev shorthand in probe()
- other minor style edits
- Link to v4: https://lore.kernel.org/r/20260401-dev_ad5706r-v4-0-a785184a8d53@analog.com
Changes in v4:
- dt-bindings:
- Reverted pwm and gpio entries.
- Added missing power supply properties
- Clocks not added back as they were driver specific, not device
properties
- driver:
- Added missing includes
- Converted to use regmap with custom SPI bus implementation.
spi_write_then_read not applied as suggested, prevents future
need to change SPI speed
- removed driver speciifc mutex/guards in favor of regmap internal
locking
- Minor style cleanups
- Link to v3: https://lore.kernel.org/r/20260318-dev_ad5706r-v3-0-5d078f41e988@analog.com
Changes in v3:
- Added MAINTAINERS entry, files added on each patch
- dt-bindings:
- Added allOf and ref to spi-peripheral-props.yaml
- Changed additionalProperties to unevaluatedProperties
- Added avdd-supply property and added it to required
- driver:
- Removed redundant includes, added respective includes of APIs used
- Simplified bit manipulation in SPI read/write, used feedback from v2
- Fixed inconsistent trailing commas in device ID tables
- Removed zero initialization in spi_device_id
- Link to v2: https://lore.kernel.org/r/20260311-dev_ad5706r-v2-0-f367063dbd1b@analog.com
Changes in v2:
- Stripped driver down to basic DAC functionality (read/write raw,
read-only scale) as suggested.
- Removed PWM (LDAC), GPIO (reset/shutdown), clock generator,
SPI engine frequency switching, debugfs streaming, and all
custom ext_info sysfs attributes
- Removed regmap, IIO_BUFFER, and iio/sysfs.h dependencies
- Simplified SPI read/write to use standard spi_sync_transfer
without clock mode logic
- Scale reports default 50mA range as read-only using
IIO_VAL_FRACTIONAL_LOG2; writable range selection deferred
to future follow-up series
- Simplified DT binding to only require compatible, reg, and
spi-max-frequency
- Link to v1: https://lore.kernel.org/r/20260220-dev_ad5706r-v1-0-7253bbd74889@analog.com
---
Alexis Czezar Torreno (2):
dt-bindings: iio: dac: Add ADI AD5706R
iio: dac: ad5706r: Add support for AD5706R DAC
.../devicetree/bindings/iio/dac/adi,ad5706r.yaml | 105 +++++++++
MAINTAINERS | 8 +
drivers/iio/dac/Kconfig | 11 +
drivers/iio/dac/Makefile | 1 +
drivers/iio/dac/ad5706r.c | 253 +++++++++++++++++++++
5 files changed, 378 insertions(+)
---
base-commit: 3674f3ca92730d9a07b42b311f1337d83c4d5605
change-id: 20260220-dev_ad5706r-2105e1dd29ab
Best regards,
--
Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
On Mon, 27 Apr 2026 14:23:15 +0800 Alexis Czezar Torreno <alexisczezar.torreno@analog.com> wrote: > This series adds support for the Analog Devices AD5706R, a 4-channel > 16-bit current output digital-to-analog converter with SPI interface. > > This initial driver provides basic DAC functionality through standard > IIO interfaces. > > Datasheet: https://www.analog.com/en/products/ad5706r.html Doesn't matter as no need to have tags in cover letter anyway, but that's a tag so no line break before the SoB. > > Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com> Applied to the testing branch of iio.git. I'll push that out as togreg in a day or two once 0-day has had a play with it. thanks, Jonathan > --- > Changes in v9: > - Kconfig: changed REGMAP_SPI to REGMAP > - updated cover letter and driver commit message > - Link to v8: https://lore.kernel.org/r/20260417-dev_ad5706r-v8-0-ef87dff62b57@analog.com > > Changes in v8: > - driver: > - changed DAC_CODE from BIT(16) to GENMASK(15,0) > - removed defines for single/multi byte, replaced with number > - adjusted regmap_write to use if/else similar to read() > - reverted in_range back to open code equivalent, removed minmax.h > - Link to v7: https://lore.kernel.org/r/20260410-dev_ad5706r-v7-0-af93a4caa186@analog.com > > Changes in v7: > - driver: > - Moved/added size validation before data access in write()/read() > - Link to v6: https://lore.kernel.org/r/20260410-dev_ad5706r-v6-0-f3fda5921fe4@analog.com > > Changes in v6: > - driver: > - Added size validation in regmap_write() > - Used &st->tx_buf[0] consistently in _be32/be16 calls > - Added missing indent in AD5706R_CHAN > - Link to v5: https://lore.kernel.org/r/20260407-dev_ad5706r-v5-0-a4c7737b6ae9@analog.com > > Changes in v5: > - dt-bindings: > - Changed out-en-gpios to enable-gpios > - driver: > - Kconfig: Added select REGMAP_SPI > - Headers: Removed device.h, errno.h, string.h; added dev_printk.h > - Use IIO_DMA_MINALIGN instead of ARCH_DMA_MINALIGN > - Replaced memcpy/memset with put_unaligned_be* for consistency > - Added struct device *dev shorthand in probe() > - other minor style edits > - Link to v4: https://lore.kernel.org/r/20260401-dev_ad5706r-v4-0-a785184a8d53@analog.com > > Changes in v4: > - dt-bindings: > - Reverted pwm and gpio entries. > - Added missing power supply properties > - Clocks not added back as they were driver specific, not device > properties > - driver: > - Added missing includes > - Converted to use regmap with custom SPI bus implementation. > spi_write_then_read not applied as suggested, prevents future > need to change SPI speed > - removed driver speciifc mutex/guards in favor of regmap internal > locking > - Minor style cleanups > - Link to v3: https://lore.kernel.org/r/20260318-dev_ad5706r-v3-0-5d078f41e988@analog.com > > Changes in v3: > - Added MAINTAINERS entry, files added on each patch > - dt-bindings: > - Added allOf and ref to spi-peripheral-props.yaml > - Changed additionalProperties to unevaluatedProperties > - Added avdd-supply property and added it to required > - driver: > - Removed redundant includes, added respective includes of APIs used > - Simplified bit manipulation in SPI read/write, used feedback from v2 > - Fixed inconsistent trailing commas in device ID tables > - Removed zero initialization in spi_device_id > - Link to v2: https://lore.kernel.org/r/20260311-dev_ad5706r-v2-0-f367063dbd1b@analog.com > > Changes in v2: > - Stripped driver down to basic DAC functionality (read/write raw, > read-only scale) as suggested. > - Removed PWM (LDAC), GPIO (reset/shutdown), clock generator, > SPI engine frequency switching, debugfs streaming, and all > custom ext_info sysfs attributes > - Removed regmap, IIO_BUFFER, and iio/sysfs.h dependencies > - Simplified SPI read/write to use standard spi_sync_transfer > without clock mode logic > - Scale reports default 50mA range as read-only using > IIO_VAL_FRACTIONAL_LOG2; writable range selection deferred > to future follow-up series > - Simplified DT binding to only require compatible, reg, and > spi-max-frequency > - Link to v1: https://lore.kernel.org/r/20260220-dev_ad5706r-v1-0-7253bbd74889@analog.com > > --- > Alexis Czezar Torreno (2): > dt-bindings: iio: dac: Add ADI AD5706R > iio: dac: ad5706r: Add support for AD5706R DAC > > .../devicetree/bindings/iio/dac/adi,ad5706r.yaml | 105 +++++++++ > MAINTAINERS | 8 + > drivers/iio/dac/Kconfig | 11 + > drivers/iio/dac/Makefile | 1 + > drivers/iio/dac/ad5706r.c | 253 +++++++++++++++++++++ > 5 files changed, 378 insertions(+) > --- > base-commit: 3674f3ca92730d9a07b42b311f1337d83c4d5605 > change-id: 20260220-dev_ad5706r-2105e1dd29ab > > Best regards,
© 2016 - 2026 Red Hat, Inc.