* [PATCH v2 1/3] dt-bindings: iio: dac: Add binding for AD5706R
2026-03-11 0:23 [PATCH v2 0/3] Add support for AD5706R DAC Alexis Czezar Torreno
@ 2026-03-11 0:23 ` Alexis Czezar Torreno
2026-03-11 0:48 ` Torreno, Alexis Czezar
2026-03-11 0:23 ` [PATCH v2 2/3] iio: dac: ad5706r: Add support for AD5706R DAC Alexis Czezar Torreno
` (3 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Alexis Czezar Torreno @ 2026-03-11 0:23 UTC (permalink / raw)
To: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
David Lechner, Nuno Sá, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Uwe Kleine-König
Cc: linux-iio, devicetree, linux-kernel, linux-pwm,
Alexis Czezar Torreno
Add device tree binding documentation for the Analog Devices
AD5706R 4-channel 16-bit current output digital-to-analog converter.
Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
---
Changes since v1:
- Removed clocks, clock-names, pwms, pwm-names, gpio properties
- Simplified example to use plain SPI bus
---
---
.../devicetree/bindings/iio/dac/adi,ad5706r.yaml | 48 ++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/Documentation/devicetree/bindings/iio/dac/adi,ad5706r.yaml b/Documentation/devicetree/bindings/iio/dac/adi,ad5706r.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..cd5d7741562f79eefc9aba5629b8ad14490fa181
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/dac/adi,ad5706r.yaml
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/dac/adi,ad5706r.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices AD5706R 4-Channel Current Output DAC
+
+maintainers:
+ - Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
+
+description: |
+ The AD5706R is a 16-bit, 4-channel current output digital-to-analog
+ converter with SPI interface.
+
+ Datasheet:
+ https://www.analog.com/en/products/ad5706r.html
+
+properties:
+ compatible:
+ enum:
+ - adi,ad5706r
+
+ reg:
+ maxItems: 1
+
+ spi-max-frequency:
+ maximum: 50000000
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ spi {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ dac@0 {
+ compatible = "adi,ad5706r";
+ reg = <0>;
+ spi-max-frequency = <50000000>;
+ };
+ };
+...
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* RE: [PATCH v2 1/3] dt-bindings: iio: dac: Add binding for AD5706R
2026-03-11 0:23 ` [PATCH v2 1/3] dt-bindings: iio: dac: Add binding for AD5706R Alexis Czezar Torreno
@ 2026-03-11 0:48 ` Torreno, Alexis Czezar
0 siblings, 0 replies; 12+ messages in thread
From: Torreno, Alexis Czezar @ 2026-03-11 0:48 UTC (permalink / raw)
To: Torreno, Alexis Czezar, Lars-Peter Clausen, Hennerich, Michael,
Jonathan Cameron, David Lechner, Sa, Nuno, Andy Shevchenko,
Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Uwe Kleine-König
Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org
> Subject: [PATCH v2 1/3] dt-bindings: iio: dac: Add binding for AD5706R
>
> Add device tree binding documentation for the Analog Devices AD5706R 4-
> channel 16-bit current output digital-to-analog converter.
>
> Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
>
> ---
> Changes since v1:
> - Removed clocks, clock-names, pwms, pwm-names, gpio properties
> - Simplified example to use plain SPI bus
> ---
...
> +description: |
> + The AD5706R is a 16-bit, 4-channel current output digital-to-analog
> + converter with SPI interface.
> +
> + Datasheet:
> + https://www.analog.com/en/products/ad5706r.html
> +
> +properties:
> + compatible:
> + enum:
> + - adi,ad5706r
> +
> + reg:
> + maxItems: 1
> +
> + spi-max-frequency:
> + maximum: 50000000
> +
> +required:
> + - compatible
> + - reg
> +
> +additionalProperties: false
Hi All,
Apologies, feel free to skip reviewing this for now.
This file only trimmed the original yaml and does not contain the feedbacks from
Version 1.
I'll be more careful next time, will apply it on v3.
Did not apply the ff feedback:
- vcc (lacking)
- allOf + ref: (lacking)
- change additionalprop -> unevaluatedprop
> +
> +examples:
> + - |
> + spi {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + dac@0 {
> + compatible = "adi,ad5706r";
> + reg = <0>;
> + spi-max-frequency = <50000000>;
> + };
> + };
> +...
>
> --
> 2.34.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 2/3] iio: dac: ad5706r: Add support for AD5706R DAC
2026-03-11 0:23 [PATCH v2 0/3] Add support for AD5706R DAC Alexis Czezar Torreno
2026-03-11 0:23 ` [PATCH v2 1/3] dt-bindings: iio: dac: Add binding for AD5706R Alexis Czezar Torreno
@ 2026-03-11 0:23 ` Alexis Czezar Torreno
2026-03-11 11:44 ` Andy Shevchenko
2026-03-11 0:23 ` [PATCH v2 3/3] MAINTAINERS: Add entry for AD5706R DAC driver Alexis Czezar Torreno
` (2 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Alexis Czezar Torreno @ 2026-03-11 0:23 UTC (permalink / raw)
To: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
David Lechner, Nuno Sá, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Uwe Kleine-König
Cc: linux-iio, devicetree, linux-kernel, linux-pwm,
Alexis Czezar Torreno
Add support for the Analog Devices AD5706R, a 4-channel 16-bit
current output digital-to-analog converter with SPI interface.
Features:
- 4 independent DAC channels
- Hardware and software LDAC trigger
- Configurable output range
- PWM-based LDAC control
- Dither and toggle modes
- Dynamically configurable SPI speed
Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
---
Changes since v1:
- Removed PWM, GPIO, clock generator, debugfs, regmap, IIO_BUFFER
- Removed all custom ext_info sysfs attributes
- Simplified to basic raw read/write and read-only scale
- SPI read/write can handle multibyte registers
---
---
drivers/iio/dac/Kconfig | 10 +++
drivers/iio/dac/Makefile | 1 +
drivers/iio/dac/ad5706r.c | 208 ++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 219 insertions(+)
diff --git a/drivers/iio/dac/Kconfig b/drivers/iio/dac/Kconfig
index db9f5c711b3df90641f017652fbbef594cc1627d..8ccbdf6dfbca8640a47bf05b4afc6b4bf90a7e26 100644
--- a/drivers/iio/dac/Kconfig
+++ b/drivers/iio/dac/Kconfig
@@ -178,6 +178,16 @@ config AD5624R_SPI
Say yes here to build support for Analog Devices AD5624R, AD5644R and
AD5664R converters (DAC). This driver uses the common SPI interface.
+config AD5706R
+ tristate "Analog Devices AD5706R DAC driver"
+ depends on SPI
+ help
+ Say yes here to build support for Analog Devices AD5706R 4-channel,
+ 16-bit current output DAC.
+
+ To compile this driver as a module, choose M here: the
+ module will be called ad5706r.
+
config AD9739A
tristate "Analog Devices AD9739A RF DAC spi driver"
depends on SPI
diff --git a/drivers/iio/dac/Makefile b/drivers/iio/dac/Makefile
index 2a80bbf4e80ad557da79ed916027cedff286984b..0034317984985035f7987a744899924bfd4612e3 100644
--- a/drivers/iio/dac/Makefile
+++ b/drivers/iio/dac/Makefile
@@ -21,6 +21,7 @@ obj-$(CONFIG_AD5449) += ad5449.o
obj-$(CONFIG_AD5592R_BASE) += ad5592r-base.o
obj-$(CONFIG_AD5592R) += ad5592r.o
obj-$(CONFIG_AD5593R) += ad5593r.o
+obj-$(CONFIG_AD5706R) += ad5706r.o
obj-$(CONFIG_AD5755) += ad5755.o
obj-$(CONFIG_AD5758) += ad5758.o
obj-$(CONFIG_AD5761) += ad5761.o
diff --git a/drivers/iio/dac/ad5706r.c b/drivers/iio/dac/ad5706r.c
new file mode 100644
index 0000000000000000000000000000000000000000..204d29f6495da167e922e5c9c5a2c4ff5c650693
--- /dev/null
+++ b/drivers/iio/dac/ad5706r.c
@@ -0,0 +1,208 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * AD5706R 16-bit Current Output Digital to Analog Converter
+ *
+ * Copyright 2026 Analog Devices Inc.
+ */
+
+#include <linux/device.h>
+#include <linux/iio/iio.h>
+#include <linux/module.h>
+#include <linux/spi/spi.h>
+
+/* SPI frame layout */
+#define AD5706R_RD_MASK BIT(15)
+#define AD5706R_ADDR_MASK GENMASK(11, 0)
+
+/* Registers */
+#define AD5706R_REG_DAC_INPUT_A_CH(x) (0x60 + ((x) * 2))
+#define AD5706R_REG_DAC_DATA_READBACK_CH(x) (0x68 + ((x) * 2))
+
+#define AD5706R_DAC_RESOLUTION 16
+#define AD5706R_DAC_MAX_CODE BIT(AD5706R_DAC_RESOLUTION) /* 65536 */
+#define AD5706R_MULTIBYTE_REG_START 0x14
+#define AD5706R_MULTIBYTE_REG_END 0x71
+#define AD5706R_SINGLE_BYTE_LEN 1
+#define AD5706R_DOUBLE_BYTE_LEN 2
+
+struct ad5706r_state {
+ struct spi_device *spi;
+ struct mutex lock; /* Protects SPI transfers */
+
+ __be32 tx_buf __aligned(ARCH_DMA_MINALIGN);
+ __be16 rx_buf;
+};
+
+static int ad5706r_reg_len(unsigned int reg)
+{
+ if (reg >= AD5706R_MULTIBYTE_REG_START && reg <= AD5706R_MULTIBYTE_REG_END)
+ return AD5706R_DOUBLE_BYTE_LEN;
+
+ return AD5706R_SINGLE_BYTE_LEN;
+}
+
+static int ad5706r_spi_write(struct ad5706r_state *st, u16 reg, u16 val)
+{
+ unsigned int num_bytes = ad5706r_reg_len(reg);
+
+ struct spi_transfer xfer = {
+ .tx_buf = &st->tx_buf,
+ .len = num_bytes + 2,
+ };
+
+ st->tx_buf = cpu_to_be32((((u32)reg) << 16) |
+ ((u32)val << (16 - (num_bytes * 8))));
+
+ return spi_sync_transfer(st->spi, &xfer, 1);
+}
+
+static int ad5706r_spi_read(struct ad5706r_state *st, u16 reg, u16 *val)
+{
+ unsigned int num_bytes = ad5706r_reg_len(reg);
+ u16 cmd;
+ int ret;
+
+ struct spi_transfer xfer[] = {
+ {
+ .tx_buf = &st->tx_buf,
+ .len = 2,
+ },
+ {
+ .rx_buf = &st->rx_buf,
+ .len = num_bytes,
+ },
+ };
+
+ cmd = AD5706R_RD_MASK | (reg & AD5706R_ADDR_MASK);
+ st->tx_buf = cpu_to_be32((u32)cmd << 16);
+
+ ret = spi_sync_transfer(st->spi, xfer, ARRAY_SIZE(xfer));
+ if (ret)
+ return ret;
+
+ *val = be16_to_cpu(st->rx_buf) >> (16 - (num_bytes * 8));
+
+ return 0;
+}
+
+static int ad5706r_read_raw(struct iio_dev *indio_dev,
+ struct iio_chan_spec const *chan, int *val,
+ int *val2, long mask)
+{
+ struct ad5706r_state *st = iio_priv(indio_dev);
+ u16 reg_val;
+ int ret;
+
+ switch (mask) {
+ case IIO_CHAN_INFO_RAW:
+ scoped_guard(mutex, &st->lock) {
+ ret = ad5706r_spi_read(st, AD5706R_REG_DAC_DATA_READBACK_CH(chan->channel),
+ ®_val);
+
+ if (ret)
+ return ret;
+
+ *val = reg_val;
+ }
+ return IIO_VAL_INT;
+ case IIO_CHAN_INFO_SCALE:
+ *val = 50;
+ *val2 = AD5706R_DAC_RESOLUTION;
+ return IIO_VAL_FRACTIONAL_LOG2;
+ }
+
+ return -EINVAL;
+}
+
+static int ad5706r_write_raw(struct iio_dev *indio_dev,
+ struct iio_chan_spec const *chan, int val,
+ int val2, long mask)
+{
+ struct ad5706r_state *st = iio_priv(indio_dev);
+
+ switch (mask) {
+ case IIO_CHAN_INFO_RAW:
+ if (val < 0 || val >= AD5706R_DAC_MAX_CODE)
+ return -EINVAL;
+
+ guard(mutex)(&st->lock);
+ return ad5706r_spi_write(st,
+ AD5706R_REG_DAC_INPUT_A_CH(chan->channel),
+ val);
+ default:
+ return -EINVAL;
+ }
+}
+
+static const struct iio_info ad5706r_info = {
+ .read_raw = ad5706r_read_raw,
+ .write_raw = ad5706r_write_raw,
+};
+
+#define AD5706R_CHAN(_channel) { \
+ .type = IIO_CURRENT, \
+ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \
+ BIT(IIO_CHAN_INFO_SCALE), \
+ .output = 1, \
+ .indexed = 1, \
+ .channel = _channel, \
+}
+
+static const struct iio_chan_spec ad5706r_channels[] = {
+ AD5706R_CHAN(0),
+ AD5706R_CHAN(1),
+ AD5706R_CHAN(2),
+ AD5706R_CHAN(3),
+};
+
+static int ad5706r_probe(struct spi_device *spi)
+{
+ struct iio_dev *indio_dev;
+ struct ad5706r_state *st;
+ int ret;
+
+ indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
+ if (!indio_dev)
+ return -ENOMEM;
+
+ st = iio_priv(indio_dev);
+ st->spi = spi;
+
+ ret = devm_mutex_init(&spi->dev, &st->lock);
+ if (ret)
+ return ret;
+
+ indio_dev->name = "ad5706r";
+ indio_dev->info = &ad5706r_info;
+ indio_dev->modes = INDIO_DIRECT_MODE;
+ indio_dev->channels = ad5706r_channels;
+ indio_dev->num_channels = ARRAY_SIZE(ad5706r_channels);
+
+ return devm_iio_device_register(&spi->dev, indio_dev);
+}
+
+static const struct of_device_id ad5706r_of_match[] = {
+ { .compatible = "adi,ad5706r" },
+ { },
+};
+MODULE_DEVICE_TABLE(of, ad5706r_of_match);
+
+static const struct spi_device_id ad5706r_id[] = {
+ { "ad5706r", 0 },
+ { }
+};
+MODULE_DEVICE_TABLE(spi, ad5706r_id);
+
+static struct spi_driver ad5706r_driver = {
+ .driver = {
+ .name = "ad5706r",
+ .of_match_table = ad5706r_of_match,
+ },
+ .probe = ad5706r_probe,
+ .id_table = ad5706r_id,
+};
+module_spi_driver(ad5706r_driver);
+
+MODULE_AUTHOR("Alexis Czezar Torreno <alexisczezar.torreno@analog.com>");
+MODULE_DESCRIPTION("AD5706R 16-bit Current Output DAC driver");
+MODULE_LICENSE("GPL");
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH v2 2/3] iio: dac: ad5706r: Add support for AD5706R DAC
2026-03-11 0:23 ` [PATCH v2 2/3] iio: dac: ad5706r: Add support for AD5706R DAC Alexis Czezar Torreno
@ 2026-03-11 11:44 ` Andy Shevchenko
2026-03-12 2:32 ` Torreno, Alexis Czezar
0 siblings, 1 reply; 12+ messages in thread
From: Andy Shevchenko @ 2026-03-11 11:44 UTC (permalink / raw)
To: Alexis Czezar Torreno
Cc: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
David Lechner, Nuno Sá, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Uwe Kleine-König,
linux-iio, devicetree, linux-kernel, linux-pwm
On Wed, Mar 11, 2026 at 08:23:18AM +0800, Alexis Czezar Torreno wrote:
> Add support for the Analog Devices AD5706R, a 4-channel 16-bit
> current output digital-to-analog converter with SPI interface.
>
> Features:
> - 4 independent DAC channels
> - Hardware and software LDAC trigger
> - Configurable output range
> - PWM-based LDAC control
> - Dither and toggle modes
> - Dynamically configurable SPI speed
...
> +#include <linux/device.h>
> +#include <linux/iio/iio.h>
> +#include <linux/module.h>
> +#include <linux/spi/spi.h>
IWYU, please.
Yet another typical issue with ADI patches. Really, talk to your senior
colleagues who are experienced kernel developers before sending it to ML.
...
> +#define AD5706R_DAC_RESOLUTION 16
> +#define AD5706R_DAC_MAX_CODE BIT(AD5706R_DAC_RESOLUTION) /* 65536 */
Useless comment, use the same number explicitly instead
BIT(16)
which is much more readable.
...
> + st->tx_buf = cpu_to_be32((((u32)reg) << 16) |
> + ((u32)val << (16 - (num_bytes * 8))));
What the heck is this?
...
> +static const struct of_device_id ad5706r_of_match[] = {
> + { .compatible = "adi,ad5706r" },
> + { },
Even inside a single file this is inconsistent, besides being third of
101 IIO patch issues.
> +};
> +MODULE_DEVICE_TABLE(of, ad5706r_of_match);
> +
> +static const struct spi_device_id ad5706r_id[] = {
> + { "ad5706r", 0 },
When there is no driver data, no need to explicitly initialise it.
> + { }
> +};
> +MODULE_DEVICE_TABLE(spi, ad5706r_id);
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 12+ messages in thread* RE: [PATCH v2 2/3] iio: dac: ad5706r: Add support for AD5706R DAC
2026-03-11 11:44 ` Andy Shevchenko
@ 2026-03-12 2:32 ` Torreno, Alexis Czezar
2026-03-12 13:03 ` Andy Shevchenko
0 siblings, 1 reply; 12+ messages in thread
From: Torreno, Alexis Czezar @ 2026-03-12 2:32 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Lars-Peter Clausen, Hennerich, Michael, Jonathan Cameron,
David Lechner, Sa, Nuno, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Uwe Kleine-König,
linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org
> ...
>
> > +#include <linux/device.h>
> > +#include <linux/iio/iio.h>
> > +#include <linux/module.h>
> > +#include <linux/spi/spi.h>
>
> IWYU, please.
> Yet another typical issue with ADI patches. Really, talk to your senior colleagues
> who are experienced kernel developers before sending it to ML.
>
I'll bring this up. As per your suggestion in the other mail, compiling common issues
like this may be needed. Lessens pitfalls for newer devs.
> ...
>
> > +#define AD5706R_DAC_RESOLUTION 16
> > +#define AD5706R_DAC_MAX_CODE
> BIT(AD5706R_DAC_RESOLUTION) /* 65536 */
>
> Useless comment, use the same number explicitly instead
>
> BIT(16)
>
> which is much more readable.
>
> ...
>
> > + st->tx_buf = cpu_to_be32((((u32)reg) << 16) |
> > + ((u32)val << (16 - (num_bytes * 8))));
>
> What the heck is this?
I'll make this more readable.
but the format goal is:
if num_bytes = 1
tx_buf [31:0] = [reg 31:16] [val 15:8] [ XXXX]
if num_bytes = 2
tx_buf [31:0] = [reg 31:16] [ val 15:0 ]
>
> ...
>
> > +static const struct of_device_id ad5706r_of_match[] = {
> > + { .compatible = "adi,ad5706r" },
> > + { },
>
> Even inside a single file this is inconsistent, besides being third of
> 101 IIO patch issues.
Will note the other feedback and track the common issues.
Thank you,
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [PATCH v2 2/3] iio: dac: ad5706r: Add support for AD5706R DAC
2026-03-12 2:32 ` Torreno, Alexis Czezar
@ 2026-03-12 13:03 ` Andy Shevchenko
0 siblings, 0 replies; 12+ messages in thread
From: Andy Shevchenko @ 2026-03-12 13:03 UTC (permalink / raw)
To: Torreno, Alexis Czezar
Cc: Lars-Peter Clausen, Hennerich, Michael, Jonathan Cameron,
David Lechner, Sa, Nuno, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Uwe Kleine-König,
linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org
On Thu, Mar 12, 2026 at 02:32:21AM +0000, Torreno, Alexis Czezar wrote:
...
> > > + st->tx_buf = cpu_to_be32((((u32)reg) << 16) |
> > > + ((u32)val << (16 - (num_bytes * 8))));
> >
> > What the heck is this?
>
> I'll make this more readable.
The problems with the above are:
- macro style (it's not a macro, no need so many parentheses)
- unneeded castings (C promotes types to int)
- "clever" compression of the standard patterns (see below)
> but the format goal is:
>
> if num_bytes = 1
> tx_buf [31:0] = [reg 31:16] [val 15:8] [ XXXX]
> if num_bytes = 2
> tx_buf [31:0] = [reg 31:16] [ val 15:0 ]
Assuming tx->buf is of u8:
put_unaligned_be16(reg, &st->tx_buf[0]);
if ( == 1)
st->tx_buf[2] = val;
else if ( == 2)
put_unaligned_be16(val, &st->tx_buf[2]);
else
ERR!
(can also be switch-case, but it will be more verbose).
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 3/3] MAINTAINERS: Add entry for AD5706R DAC driver
2026-03-11 0:23 [PATCH v2 0/3] Add support for AD5706R DAC Alexis Czezar Torreno
2026-03-11 0:23 ` [PATCH v2 1/3] dt-bindings: iio: dac: Add binding for AD5706R Alexis Czezar Torreno
2026-03-11 0:23 ` [PATCH v2 2/3] iio: dac: ad5706r: Add support for AD5706R DAC Alexis Czezar Torreno
@ 2026-03-11 0:23 ` Alexis Czezar Torreno
2026-03-11 11:36 ` Andy Shevchenko
2026-03-11 11:38 ` [PATCH v2 0/3] Add support for AD5706R DAC Andy Shevchenko
2026-03-13 9:35 ` Uwe Kleine-König
4 siblings, 1 reply; 12+ messages in thread
From: Alexis Czezar Torreno @ 2026-03-11 0:23 UTC (permalink / raw)
To: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
David Lechner, Nuno Sá, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Uwe Kleine-König
Cc: linux-iio, devicetree, linux-kernel, linux-pwm,
Alexis Czezar Torreno
Add maintainer entry for the Analog Devices AD5706R DAC driver
and device tree binding.
Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
---
MAINTAINERS | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 1251965d70bdfa990c66966cd77f7ab52ae3385f..3d7bd98b4d1b55836e40687a9a3ac9f4935a8acb 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1496,6 +1496,14 @@ W: https://ez.analog.com/linux-software-drivers
F: Documentation/devicetree/bindings/iio/adc/adi,ad4851.yaml
F: drivers/iio/adc/ad4851.c
+ANALOG DEVICES INC AD5706R DRIVER
+M: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
+L: linux-iio@vger.kernel.org
+S: Supported
+W: https://ez.analog.com/linux-software-drivers
+F: Documentation/devicetree/bindings/iio/dac/adi,ad5706r.yaml
+F: drivers/iio/dac/ad5706r.c
+
ANALOG DEVICES INC AD7091R DRIVER
M: Marcelo Schmitt <marcelo.schmitt@analog.com>
L: linux-iio@vger.kernel.org
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/3] MAINTAINERS: Add entry for AD5706R DAC driver
2026-03-11 0:23 ` [PATCH v2 3/3] MAINTAINERS: Add entry for AD5706R DAC driver Alexis Czezar Torreno
@ 2026-03-11 11:36 ` Andy Shevchenko
0 siblings, 0 replies; 12+ messages in thread
From: Andy Shevchenko @ 2026-03-11 11:36 UTC (permalink / raw)
To: Alexis Czezar Torreno
Cc: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
David Lechner, Nuno Sá, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Uwe Kleine-König,
linux-iio, devicetree, linux-kernel, linux-pwm
On Wed, Mar 11, 2026 at 08:23:19AM +0800, Alexis Czezar Torreno wrote:
> Add maintainer entry for the Analog Devices AD5706R DAC driver
> and device tree binding.
This should be added when the respective files are being added.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 0/3] Add support for AD5706R DAC
2026-03-11 0:23 [PATCH v2 0/3] Add support for AD5706R DAC Alexis Czezar Torreno
` (2 preceding siblings ...)
2026-03-11 0:23 ` [PATCH v2 3/3] MAINTAINERS: Add entry for AD5706R DAC driver Alexis Czezar Torreno
@ 2026-03-11 11:38 ` Andy Shevchenko
2026-03-13 9:35 ` Uwe Kleine-König
4 siblings, 0 replies; 12+ messages in thread
From: Andy Shevchenko @ 2026-03-11 11:38 UTC (permalink / raw)
To: Alexis Czezar Torreno
Cc: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
David Lechner, Nuno Sá, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Uwe Kleine-König,
linux-iio, devicetree, linux-kernel, linux-pwm
On Wed, Mar 11, 2026 at 08:23:16AM +0800, Alexis Czezar Torreno wrote:
> This series adds support for the Analog Devices AD5706R, a 4-channel
> 16-bit current output digital-to-analog converter with SPI interface.
>
> The AD5706R features:
> - 4 independent current output DAC channels
> - Configurable output ranges (50mA, 150mA, 200mA, 300mA)
> - Hardware and software LDAC trigger with configurable edge selection
> - Toggle and dither modes per channel
> - Internal or external voltage reference selection
> - PWM-controlled LDAC
> - Dynamic change SPI speed
>
> The driver exposes standard IIO raw/scale/offset channel attributes for
> DAC output control, sampling frequency for PWM-based LDAC timing, and
> extended attributes for device configuration including output range
> selection, trigger mode, and multiplexer output.
>
> This driver is developed and tested on the Cora Z7S platform using
> the AXI SPI Engine and AXI CLKGEN IP cores. The 'clocks' property
> enables dynamic SPI clock rate management via the CLKGEN.
>
> Datasheet: https://www.analog.com/en/products/ad5706r.html
It's a v2 and still some very basic comments may be applied, such an
introduction of the record in MAINTAINERS database.
One more time, can't ADI introduce an internal Wiki page where standard
practices and/or typical issues be listed and be addressed BEFORE it's going to
the mailing lists?
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [PATCH v2 0/3] Add support for AD5706R DAC
2026-03-11 0:23 [PATCH v2 0/3] Add support for AD5706R DAC Alexis Czezar Torreno
` (3 preceding siblings ...)
2026-03-11 11:38 ` [PATCH v2 0/3] Add support for AD5706R DAC Andy Shevchenko
@ 2026-03-13 9:35 ` Uwe Kleine-König
2026-03-18 4:48 ` Torreno, Alexis Czezar
4 siblings, 1 reply; 12+ messages in thread
From: Uwe Kleine-König @ 2026-03-13 9:35 UTC (permalink / raw)
To: Alexis Czezar Torreno
Cc: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
David Lechner, Nuno Sá, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-iio, devicetree,
linux-kernel, linux-pwm
[-- Attachment #1: Type: text/plain, Size: 1432 bytes --]
Hello,
On Wed, Mar 11, 2026 at 08:23:16AM +0800, Alexis Czezar Torreno wrote:
> This series adds support for the Analog Devices AD5706R, a 4-channel
> 16-bit current output digital-to-analog converter with SPI interface.
>
> The AD5706R features:
> - 4 independent current output DAC channels
> - Configurable output ranges (50mA, 150mA, 200mA, 300mA)
> - Hardware and software LDAC trigger with configurable edge selection
> - Toggle and dither modes per channel
> - Internal or external voltage reference selection
> - PWM-controlled LDAC
> - Dynamic change SPI speed
>
> The driver exposes standard IIO raw/scale/offset channel attributes for
> DAC output control, sampling frequency for PWM-based LDAC timing, and
> extended attributes for device configuration including output range
> selection, trigger mode, and multiplexer output.
>
> This driver is developed and tested on the Cora Z7S platform using
> the AXI SPI Engine and AXI CLKGEN IP cores. The 'clocks' property
> enables dynamic SPI clock rate management via the CLKGEN.
>
> Datasheet: https://www.analog.com/en/products/ad5706r.html
>
> Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
This series was Cc:d to me an linux-pwm, however I don't spot any usage
of the pwm subsystem. If you still see some relevance for my feedback,
please highlight what I'm missing here.
Best regards
Uwe
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread* RE: [PATCH v2 0/3] Add support for AD5706R DAC
2026-03-13 9:35 ` Uwe Kleine-König
@ 2026-03-18 4:48 ` Torreno, Alexis Czezar
0 siblings, 0 replies; 12+ messages in thread
From: Torreno, Alexis Czezar @ 2026-03-18 4:48 UTC (permalink / raw)
To: Uwe Kleine-König
Cc: Lars-Peter Clausen, Hennerich, Michael, Jonathan Cameron,
David Lechner, Sa, Nuno, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-iio@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-pwm@vger.kernel.org
>
> Hello,
>
> > This series adds support for the Analog Devices AD5706R, a 4-channel
> > 16-bit current output digital-to-analog converter with SPI interface.
> >
...
> >
> > Datasheet: https://www.analog.com/en/products/ad5706r.html
> >
> > Signed-off-by: Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
>
> This series was Cc:d to me an linux-pwm, however I don't spot any usage of the
> pwm subsystem. If you still see some relevance for my feedback, please
> highlight what I'm missing here.
>
> Best regards
> Uwe
Hi Uwe,
Thank you for reviewing v1. I trimmed out PWM features in v2 but didn't
reorganize the cc list. I will remove you from v3 onwards.
I'll re-add you on future patches that applies the pwm again.
Thanks again,
Alexis
^ permalink raw reply [flat|nested] 12+ messages in thread