[PATCH 2/2] iio: dac: ad3530r: add support for AD3536R

From: Kim Seer Paller

Date: Wed Sep 09 2026 - 02:20:20 EST


The AD3536R is the 12-bit variant of the AD3532R, a 16-channel buffered
voltage output DAC with an on-chip 2.5V reference and an identical
register map. Add a chip_info entry for it and the corresponding SPI and
OF device ID table entries.

Signed-off-by: Kim Seer Paller <kimseer.paller@xxxxxxxxxx>
---
drivers/iio/dac/Kconfig | 1 +
drivers/iio/dac/ad3530r.c | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+)

diff --git a/drivers/iio/dac/Kconfig b/drivers/iio/dac/Kconfig
index f87b72457b1d..b6c8873c68c5 100644
--- a/drivers/iio/dac/Kconfig
+++ b/drivers/iio/dac/Kconfig
@@ -16,6 +16,7 @@ config AD3530R
- AD3530/AD3530R (8-channel)
- AD3531/AD3531R (4-channel)
- AD3532/AD3532R (16-channel)
+ - AD3536R (16-channel, 12-bit)
- AD5710R/AD5711R (8-channel configurable IDAC/VDAC)

To compile this driver as a module, choose M here: the
diff --git a/drivers/iio/dac/ad3530r.c b/drivers/iio/dac/ad3530r.c
index 7648aa4da25a..9e043639801d 100644
--- a/drivers/iio/dac/ad3530r.c
+++ b/drivers/iio/dac/ad3530r.c
@@ -3,6 +3,7 @@
* AD3530R/AD3530 8-channel, 16-bit Voltage Output DAC Driver
* AD3531R/AD3531 4-channel, 16-bit Voltage Output DAC Driver
* AD3532R/AD3532 16-channel, 16-bit Voltage Output DAC Driver
+ * AD3536R 16-channel, 12-bit Voltage Output DAC Driver
* AD5710R 8-channel, 16-bit Configurable IDAC/VDAC Driver
* AD5711R 8-channel, 12-bit Configurable IDAC/VDAC Driver
*
@@ -746,6 +747,24 @@ static const struct ad3530r_chip_info ad3532r_chip = {
.configurable_ch_func = false,
};

+static const struct ad3530r_chip_info ad3536r_chip = {
+ .name = "ad3536r",
+ .resolution = 12,
+ .channels = ad3532r_channels,
+ .regmap_config = &ad3532r_regmap_config,
+ .num_channels = ARRAY_SIZE(ad3532r_channels),
+ .sw_ldac_trig_reg = ad3532r_trigger_sw_ldac_reg,
+ .input_ch_reg = ad3532r_input_ch_reg,
+ .interface_config_a = ad3532r_if_config,
+ .output_control = ad3532r_out_ctrl,
+ .reference_control = ad3532r_ref_ctrl,
+ .op_mode = ad3532r_op_mode,
+ .num_banks = ARRAY_SIZE(ad3532r_if_config),
+ .num_op_mode_regs = ARRAY_SIZE(ad3532r_op_mode),
+ .internal_ref_support = true,
+ .configurable_ch_func = false,
+};
+
static const struct ad3530r_chip_info ad5710r_chip = {
.name = "ad5710r",
.resolution = 16,
@@ -1042,6 +1061,7 @@ static const struct spi_device_id ad3530r_id[] = {
{ .name = "ad3531r", .driver_data = (kernel_ulong_t)&ad3531r_chip },
{ .name = "ad3532", .driver_data = (kernel_ulong_t)&ad3532_chip },
{ .name = "ad3532r", .driver_data = (kernel_ulong_t)&ad3532r_chip },
+ { .name = "ad3536r", .driver_data = (kernel_ulong_t)&ad3536r_chip },
{ .name = "ad5710r", .driver_data = (kernel_ulong_t)&ad5710r_chip },
{ .name = "ad5711r", .driver_data = (kernel_ulong_t)&ad5711r_chip },
{ }
@@ -1055,6 +1075,7 @@ static const struct of_device_id ad3530r_of_match[] = {
{ .compatible = "adi,ad3531r", .data = &ad3531r_chip },
{ .compatible = "adi,ad3532", .data = &ad3532_chip },
{ .compatible = "adi,ad3532r", .data = &ad3532r_chip },
+ { .compatible = "adi,ad3536r", .data = &ad3536r_chip },
{ .compatible = "adi,ad5710r", .data = &ad5710r_chip },
{ .compatible = "adi,ad5711r", .data = &ad5711r_chip },
{ }

--
2.34.1