Add driver for AD3530R and AD3531R DACs
Kim Seer Paller
maintainerv4 cover Add driver for AD3530R and AD3531R DACs
The AD3530/AD3530R (8-channel) and AD3531/AD3531R (4-channel) are low-power, 16-bit, buffered voltage output DACs with software- programmable gain controls, providing full-scale output spans of 2.5V or 5V for reference voltages of 2.5V. These devices operate from a single 2.7V to 5.5V supply and are guaranteed monotonic by design. The "R" variants include a 2.5V, 5ppm/°C internal reference, which is disabled by default.
---
Changes in v4:
Bindings:
- Add ad3531/ad3531r datasheet link.
- Add reviewer's tag.
ad3530r:
- Add commit description for unimplemented MUXOUT ADC monitoring feature.
- Use a DMA-safe buffer for bulk register read/write.
- Inline the AD3530R_CHAN_EXT_INFO macro for the "powerdown" attribute since it is only used once.
- Use enum ad3530r_mode for powerdown_mode.
- Refactor ad3530r_set_dac_powerdown() use chan->address for bitmask calculations and add helper variables.
- Simplify single-bit configuration with regmap_set_bits().
- Add .max_register for regmap_config.
- Rework regulator handling and move ad3530r_setup() after enabling the regulators.
- Link to v3: https://lore.kernel.org/r/[email protected]
Changes in v3:
- Drop ABI docs.
Bindings:
- Drop reviewer's tag.
- Update commit message.
- Add non-r variants to compatible list.
- Add io-channels property to enable ADC channel support for MUXOUT readings.
- Switch to unevaluatedProperties: false.
ad3530r:
- Update commit message.
- Drop spi field from ad3530r_state and use regmap to retrieve the device pointer.
- Update mutex lock comment and use devm_mutex_init().
- Fix LDAC gpio pulse logic.
- Replace usleep_range() with fsleep().
- Use sizeof(reg_val) instead of hardcoded value in regmap_bulk_read.
- Drop reporting of zero offset.
- Add internal_ref_support chip_info parameter and modify reference handling.
- Link to v2: https://lore.kernel.org/r/[email protected]
Changes in v2:
Bindings:
- Updated commit message.
- Changed adi,double-output-range to adi,range-double property.
ad3530r:
- Changed data type to __be16 to resolve sparse warnings related to type mismatches.
- Link to v1: https://lore.kernel.org/r/[email protected]
---
Kim Seer Paller (3):
iio: ABI: add new DAC powerdown mode
dt-bindings: iio: dac: Add adi,ad3530r.yaml
iio: dac: ad3530r: Add driver for AD3530R and AD3531R
Documentation/ABI/testing/sysfs-bus-iio | 2 + .../devicetree/bindings/iio/dac/adi,ad3530r.yaml | 100 ++++ MAINTAINERS | 8 + drivers/iio/dac/Kconfig | 11 + drivers/iio/dac/Makefile | 1 + drivers/iio/dac/ad3530r.c | 506 +++++++++++++++++++++ 6 files changed, 628 insertions(+)
---
base-commit: 8dbeb413806f9f810d97d25284f585b201aa3bdc
change-id: 20250319-togreg-fc6a0af961ed
Best regards,
Signature · 1 line
Kim Seer Paller <[email protected]>
Kim Seer Paller
maintainerPATCH v4 1/3 iio: ABI: add new DAC powerdown mode
Add a new powerdown mode for DACs with 7.7kohm and 32kohm resistor to GND.
--- Documentation/ABI/testing/sysfs-bus-iio | 2 ++ 1 file changed, 2 insertions(+)
Documentation/ABI/testing/sysfs-bus-iio +2 -0
@@ -740,7 +740,9 @@ Description: 1kohm_to_gnd: connected to ground via an 1kOhm resistor, 2.5kohm_to_gnd: connected to ground via a 2.5kOhm resistor, 6kohm_to_gnd: connected to ground via a 6kOhm resistor, + 7.7kohm_to_gnd: connected to ground via a 7.7kOhm resistor, 20kohm_to_gnd: connected to ground via a 20kOhm resistor, + 32kohm_to_gnd: connected to ground via a 32kOhm resistor, 42kohm_to_gnd: connected to ground via a 42kOhm resistor, 90kohm_to_gnd: connected to ground via a 90kOhm resistor, 100kohm_to_gnd: connected to ground via an 100kOhm resistor,
Signature · 1 line
2.34.1
Kim Seer Paller
maintainerPATCH v4 2/3 dt-bindings: iio: dac: Add adi,ad3530r.yaml
In reply to Kim Seer PallerDocument the AD3530/AD3530R (8-channel) and AD3531/AD3531R (4-channel) low-power, 16-bit, buffered voltage output DACs with software- programmable gain controls. They provide full-scale output spans of 2.5V or 5V for reference voltages of 2.5V. These devices operate on a single 2.7V to 5.5V supply and are guaranteed to be monotonic by design. The "R" variants include a 2.5V, 5ppm/°C internal reference, which is disabled by default.
--- .../devicetree/bindings/iio/dac/adi,ad3530r.yaml | 100 +++++++++++++++++++++ MAINTAINERS | 7 ++ 2 files changed, 107 insertions(+)
Documentation/devicetree/bindings/iio/dac/adi,ad3530r.yaml new file +100 -0
@@ -0,0 +1,100 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/dac/adi,ad3530r.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Analog Devices AD3530R and Similar DACs + +maintainers: + - Kim Seer Paller <[email protected]> + +description: | + The AD3530/AD3530R (8-channel) and AD3531/AD3531R (4-channel) are low-power, + 16-bit, buffered voltage output digital-to-analog converters (DACs) with + software-programmable gain controls, providing full-scale output spans of 2.5V + or 5V for reference voltages of 2.5V. These devices operate from a single 2.7V + to 5.5V supply and are guaranteed monotonic by design. The "R" variants + include a 2.5V, 5ppm/°C internal reference, which is disabled by default. + Datasheet can be found here: + https://www.analog.com/media/en/technical-documentation/data-sheets/ad3530_ad530r.pdf + https://www.analog.com/media/en/technical-documentation/data-sheets/ad3531-ad3531r.pdf + +properties: + compatible: + enum: + - adi,ad3530 + - adi,ad3530r + - adi,ad3531 + - adi,ad3531r + + reg: + maxItems: 1 + + spi-max-frequency: + maximum: 50000000 + + vdd-supply: + description: Power Supply Input. + + iovdd-supply: + description: Digital Power Supply Input. + + io-channels: + description: + ADC channel used to monitor internal die temperature, output voltages, and + current of a selected channel via the MUXOUT pin. + maxItems: 1 + + ref-supply: + description: + Reference Input/Output. The voltage at the REF pin sets the full-scale + range of all channels. If not provided the internal reference is used and + also provided on the VREF pin. + + reset-gpios: + description: + Active low signal that is falling edge sensitive. When it is deasserted, + the digital core initialization is performed and all DAC registers except + the Interface Configuration A register are reset to their default values. + maxItems: 1 + + ldac-gpios: + description: + LDAC pin to be used as a hardware trigger to update the DAC channels. If + not present, the DAC channels are updated by Software LDAC. + maxItems: 1 + + adi,range-double: + description: + Configure the output range for all channels. If the property is present, + the output will range from 0V to 2Vref. If the property is not present, + the output will range from 0V to Vref. + type: boolean + +required: + - compatible + - reg + - vdd-supply + - iovdd-supply + +allOf: + - $ref: /schemas/spi/spi-peripheral-props.yaml# + +unevaluatedProperties: false + +examples: + - | + spi { + #address-cells = <1>; + #size-cells = <0>; + dac@0 { + compatible = "adi,ad3530r"; + reg = <0>; + spi-max-frequency = <1000000>; + + vdd-supply = <&vdd>; + iovdd-supply = <&iovdd>; + }; + }; +...
MAINTAINERS +7 -0
@@ -1289,6 +1289,13 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git F: drivers/net/amt.c +ANALOG DEVICES INC AD3530R DRIVER +M: Kim Seer Paller <[email protected]> +L: [email protected] +S: Supported +W: https://ez.analog.com/linux-software-drivers +F: Documentation/devicetree/bindings/iio/dac/adi,ad3530r.yaml + ANALOG DEVICES INC AD3552R DRIVER M: Nuno Sá <[email protected]> L: [email protected]
Signature · 1 line
2.34.1
Kim Seer Paller
maintainerPATCH v4 3/3 iio: dac: ad3530r: Add driver for AD3530R and AD3531R
In reply to Kim Seer PallerThe AD3530/AD3530R (8-channel) and AD3531/AD3531R (4-channel) are low-power, 16-bit, buffered voltage output DACs with software- programmable gain controls, providing full-scale output spans of 2.5V or 5V for reference voltages of 2.5V. These devices operate from a single 2.7V to 5.5V supply and are guaranteed monotonic by design. The "R" variants include a 2.5V, 5ppm/°C internal reference, which is disabled by default.
Support for monitoring internal die temperature, output voltages, and current of a selected channel via the MUXOUT pin using an external ADC is currently not implemented.
--- MAINTAINERS | 1 + drivers/iio/dac/Kconfig | 11 + drivers/iio/dac/Makefile | 1 + drivers/iio/dac/ad3530r.c | 506 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 519 insertions(+)
MAINTAINERS +1 -0
@@ -1295,6 +1295,7 @@ L: [email protected] S: Supported W: https://ez.analog.com/linux-software-drivers F: Documentation/devicetree/bindings/iio/dac/adi,ad3530r.yaml +F: drivers/iio/dac/ad3530r.c ANALOG DEVICES INC AD3552R DRIVER M: Nuno Sá <[email protected]>
drivers/iio/dac/Kconfig +11 -0
@@ -6,6 +6,17 @@ menu "Digital to analog converters" +config AD3530R + tristate "Analog Devices AD3530R and Similar DACs driver" + depends on SPI + select REGMAP_SPI + help + Say yes here to build support for Analog Devices AD3530R, AD3531R + Digital to Analog Converter. + + To compile this driver as a module, choose M here: the + module will be called ad3530r. + config AD3552R_HS tristate "Analog Devices AD3552R DAC High Speed driver" select AD3552R_LIB
drivers/iio/dac/Makefile +1 -0
@@ -4,6 +4,7 @@ # # When adding new entries keep the list in alphabetical order +obj-$(CONFIG_AD3530R) += ad3530r.o obj-$(CONFIG_AD3552R_HS) += ad3552r-hs.o obj-$(CONFIG_AD3552R_LIB) += ad3552r-common.o obj-$(CONFIG_AD3552R) += ad3552r.o
drivers/iio/dac/ad3530r.c new file +506 -0
506 lines not on this page · raw message
Signature · 1 line
2.34.1
Jonathan Cameron
maintainerRe: [PATCH v4 3/3] iio: dac: ad3530r: Add driver for AD3530R and AD3531R
Quoted 8 lines · On Sat, 12 Apr 2025 13:57:32 +0800 Kim Seer Paller <[email protected]>…
The AD3530/AD3530R (8-channel) and AD3531/AD3531R (4-channel) are low-power, 16-bit, buffered voltage output DACs with software- programmable gain controls, providing full-scale output spans of 2.5V or 5V for reference voltages of 2.5V. These devices operate from a single 2.7V to 5.5V supply and are guaranteed monotonic by design. The "R" variants include a 2.5V, 5ppm/°C internal reference, which is disabled by default.
Quoted 5 lines
Support for monitoring internal die temperature, output voltages, and current of a selected channel via the MUXOUT pin using an external ADC is currently not implemented.
Signed-off-by Kim Seer Paller <[email protected]>
Hi,
One really small comment from me. Otherwise this just needs to sit on list for a little while to give other reviewers time. If nothing else comes up I may just tweak the thing below (or leave it alone!)
Thanks,
Jonathan
Quoted 6 lines
drivers/iio/dac/ad3530r.c new file +0
-0@@ -0,0 +1,506 @@
...
Quoted 2 lines
drivers/iio/dac/ad3530r.c new file +2
-0+static int ad3530r_probe (struct spi_device *spi) +{
...
drivers/iio/dac/ad3530r.c line 461
Quoted 8 lines
drivers/iio/dac/ad3530r.c new file +8
-0+ vref =devm_regulator_get_enable_read_voltage (dev,"ref" ); +if (vref <0 && vref != -ENODEV ) +return vref; + + has_external_vref = vref != -ENODEV ; + +if (!st->chip_info->internal_ref_support && !has_external_vref) +return vref;
If doing a v5 I'd go with
return -ENODEV;
rather than having people scratch their heads to figure out what is in vref.
Quoted 1 line
+
David Lechner
reviewerRe: [PATCH v4 3/3] iio: dac: ad3530r: Add driver for AD3530R and AD3531R
In reply to Kim Seer PallerQuoted 8 lines · Kim Seer Paller
The AD3530/AD3530R (8-channel) and AD3531/AD3531R (4-channel) are low-power, 16-bit, buffered voltage output DACs with software- programmable gain controls, providing full-scale output spans of 2.5V or 5V for reference voltages of 2.5V. These devices operate from a single 2.7V to 5.5V supply and are guaranteed monotonic by design. The "R" variants include a 2.5V, 5ppm/°C internal reference, which is disabled by default.
Quoted 6 lines
Support for monitoring internal die temperature, output voltages, and current of a selected channel via the MUXOUT pin using an external ADC is currently not implemented.
Signed-off-by Kim Seer Paller <[email protected]>---
Looks very good now. :-)
A made a few comments but maybe nothing serious enough to require a v5.
Quoted 12 lines
drivers/iio/dac/ad3530r.c new file +6
-0@@ -0,0 +1,506 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* AD3530R/AD3530 8-channel, 16-bit Voltage Output DAC Driver +* AD3531R/AD3531 4-channel, 16-bit Voltage Output DAC Driver +* +* Copyright 2025 Analog Devices Inc.
drivers/iio/dac/ad3530r.c line 16
Quoted 10 lines
drivers/iio/dac/ad3530r.c new file +10
-0+*/ + +#include <linux/bitfield.h> +#include <linux/bits.h> +#include <linux/cleanup.h> +#include <linux/delay.h> +#include <linux/device.h> +#include <linux/gpio/consumer.h> +#include <linux/iio/iio.h> +#include <linux/kernel.h>
Usually, we try to avoid including kernel.h - it includes too much.
Quoted 8 lines
drivers/iio/dac/ad3530r.c new file +8
-0+#include <linux/module.h> +#include <linux/mod_devicetable.h> +#include <linux/mutex.h> +#include <linux/property.h> +#include <linux/regmap.h> +#include <linux/regulator/consumer.h> +#include <linux/spi/spi.h> +
...
Quoted 20 lines
drivers/iio/dac/ad3530r.c new file +20
-0+ +static int ad3530r_setup (struct ad3530r_state *st,int vref, +bool has_external_vref) +{ +struct device *dev =regmap_get_device (st->regmap); +struct gpio_desc *reset_gpio; +int i, ret; +bool has_range_multiplier; + + reset_gpio =devm_gpiod_get_optional (dev,"reset" ,GPIOD_OUT_HIGH ); +if (IS_ERR (reset_gpio)) +return dev_err_probe (dev,PTR_ERR (reset_gpio), +"Failed to get reset GPIO\n" ); + +if (reset_gpio) { +/* Perform hardware reset */ +fsleep (1000 ); +gpiod_set_value_cansleep (reset_gpio,0 ); + }else { +/* Perform software reset */
drivers/iio/dac/ad3530r.c line 362
Quoted 10 lines
drivers/iio/dac/ad3530r.c new file +10
-0+ ret =regmap_update_bits (st->regmap,AD3530R_INTERFACE_CONFIG_A , +AD3530R_SW_RESET ,AD3530R_SW_RESET ); +if (ret) +return ret; + } + +fsleep (10000 ); + + has_range_multiplier = false; +if (device_property_present (dev,"adi,range-double" )) {
Since this is a flag, I think device_property_read_bool() is preferred.
Quoted 12 lines
drivers/iio/dac/ad3530r.c new file +12
-0+ ret =regmap_set_bits (st->regmap,AD3530R_OUTPUT_CONTROL_0 , +AD3530R_OUTPUT_CONTROL_RANGE ); +if (ret) +return ret; + + has_range_multiplier = true; + } + +if (!has_external_vref && st->chip_info->internal_ref_support) { + ret =regmap_set_bits (st->regmap,AD3530R_REFERENCE_CONTROL_0 , +AD3530R_REFERENCE_CONTROL_SEL ); +if (ret)
drivers/iio/dac/ad3530r.c line 384
Quoted 10 lines
drivers/iio/dac/ad3530r.c new file +10
-0+return ret; + + st->vref_mv = has_range_multiplier ? +2 *AD3530R_INTERNAL_VREF_MV : +AD3530R_INTERNAL_VREF_MV ; + } + +if (has_external_vref) + st->vref_mv = has_range_multiplier ?2 * vref /1000 : vref /1000 ; +
I think this would be simpler as:
st->vref_mv = range_multiplier * vref / 1000;
where range_multiplier is 1 or 2.
Quoted 7 lines
drivers/iio/dac/ad3530r.c new file +7
-0+/* Set operating mode to normal operation. */ + ret =regmap_write (st->regmap,AD3530R_OUTPUT_OPERATING_MODE_0 , +AD3530R_NORMAL_OPERATION ); +if (ret) +return ret; + +if (st->chip_info->num_channels >AD3531R_MAX_CHANNELS ) {
drivers/iio/dac/ad3530r.c line 401
Quoted 10 lines
drivers/iio/dac/ad3530r.c new file +10
-0+ ret =regmap_write (st->regmap,AD3530R_OUTPUT_OPERATING_MODE_1 , +AD3530R_NORMAL_OPERATION ); +if (ret) +return ret; + } + +for (i =0 ; i < st->chip_info->num_channels; i++) + st->chan[i].powerdown_mode =AD3530R_POWERDOWN_32K ; + + st->ldac_gpio =devm_gpiod_get_optional (dev,"ldac" ,GPIOD_OUT_HIGH );
I guess it doesn't matter which state this starts in but GPIOD_OUT_LOW seems more natural since we toggle it high the low later.
Quoted 7 lines
drivers/iio/dac/ad3530r.c new file +7
-0+if (IS_ERR (st->ldac_gpio)) +return dev_err_probe (dev,PTR_ERR (st->ldac_gpio), +"Failed to get ldac GPIO\n" ); + +return 0 ; +} +
Jonathan Cameron
maintainerRe: [PATCH v4 3/3] iio: dac: ad3530r: Add driver for AD3530R and AD3531R
Quoted 13 lines · On Wed, 16 Apr 2025 14:23:11 -0500 David Lechner <[email protected]> wrote:
Quoted 12 lines · Kim Seer Paller
The AD3530/AD3530R (8-channel) and AD3531/AD3531R (4-channel) are low-power, 16-bit, buffered voltage output DACs with software- programmable gain controls, providing full-scale output spans of 2.5V or 5V for reference voltages of 2.5V. These devices operate from a single 2.7V to 5.5V supply and are guaranteed monotonic by design. The "R" variants include a 2.5V, 5ppm/°C internal reference, which is disabled by default.
Support for monitoring internal die temperature, output voltages, and current of a selected channel via the MUXOUT pin using an external ADC is currently not implemented.
Quoted 6 lines
Quoted 2 lines
Signed-off-by Kim Seer Paller <[email protected]>---
Looks very good now. :-)
A made a few comments but maybe nothing serious enough to require a v5.
We have plenty of time in the cycle, so I think I would prefer a v5 just tidying up these last few bits.
Thanks,
Jonathan
Quoted 126 lines
Quoted 13 lines
drivers/iio/dac/ad3530r.c new file +6
-0@@ -0,0 +1,506 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* AD3530R/AD3530 8-channel, 16-bit Voltage Output DAC Driver +* AD3531R/AD3531 4-channel, 16-bit Voltage Output DAC Driver +* +* Copyright 2025 Analog Devices Inc. drivers/iio/dac/ad3530r.c line 16
Quoted 10 lines
drivers/iio/dac/ad3530r.c new file +10
-0+*/ + +#include <linux/bitfield.h> +#include <linux/bits.h> +#include <linux/cleanup.h> +#include <linux/delay.h> +#include <linux/device.h> +#include <linux/gpio/consumer.h> +#include <linux/iio/iio.h> +#include <linux/kernel.h> Usually, we try to avoid including
kernel.h- it includes too much.Quoted 8 lines
drivers/iio/dac/ad3530r.c new file +8
-0+#include <linux/module.h> +#include <linux/mod_devicetable.h> +#include <linux/mutex.h> +#include <linux/property.h> +#include <linux/regmap.h> +#include <linux/regulator/consumer.h> +#include <linux/spi/spi.h> +...
Quoted 20 lines
drivers/iio/dac/ad3530r.c new file +20
-0+ +static int ad3530r_setup (struct ad3530r_state *st,int vref, +bool has_external_vref) +{ +struct device *dev =regmap_get_device (st->regmap); +struct gpio_desc *reset_gpio; +int i, ret; +bool has_range_multiplier; + + reset_gpio =devm_gpiod_get_optional (dev,"reset" ,GPIOD_OUT_HIGH ); +if (IS_ERR (reset_gpio)) +return dev_err_probe (dev,PTR_ERR (reset_gpio), +"Failed to get reset GPIO\n" ); + +if (reset_gpio) { +/* Perform hardware reset */ +fsleep (1000 ); +gpiod_set_value_cansleep (reset_gpio,0 ); + }else { +/* Perform software reset */ drivers/iio/dac/ad3530r.c line 362
Quoted 10 lines
drivers/iio/dac/ad3530r.c new file +10
-0+ ret =regmap_update_bits (st->regmap,AD3530R_INTERFACE_CONFIG_A , +AD3530R_SW_RESET ,AD3530R_SW_RESET ); +if (ret) +return ret; + } + +fsleep (10000 ); + + has_range_multiplier = false; +if (device_property_present (dev,"adi,range-double" )) {Since this is a flag, I think
device_property_read_bool()is preferred.Quoted 12 lines
drivers/iio/dac/ad3530r.c new file +12
-0+ ret =regmap_set_bits (st->regmap,AD3530R_OUTPUT_CONTROL_0 , +AD3530R_OUTPUT_CONTROL_RANGE ); +if (ret) +return ret; + + has_range_multiplier = true; + } + +if (!has_external_vref && st->chip_info->internal_ref_support) { + ret =regmap_set_bits (st->regmap,AD3530R_REFERENCE_CONTROL_0 , +AD3530R_REFERENCE_CONTROL_SEL ); +if (ret)drivers/iio/dac/ad3530r.c line 384
Quoted 10 lines
drivers/iio/dac/ad3530r.c new file +10
-0+return ret; + + st->vref_mv = has_range_multiplier ? +2 *AD3530R_INTERNAL_VREF_MV : +AD3530R_INTERNAL_VREF_MV ; + } + +if (has_external_vref) + st->vref_mv = has_range_multiplier ?2 * vref /1000 : vref /1000 ; +I think this would be simpler as:
st->vref_mv = range_multiplier * vref / 1000;where
range_multiplieris 1 or 2.Quoted 7 lines
drivers/iio/dac/ad3530r.c new file +7
-0+/* Set operating mode to normal operation. */ + ret =regmap_write (st->regmap,AD3530R_OUTPUT_OPERATING_MODE_0 , +AD3530R_NORMAL_OPERATION ); +if (ret) +return ret; + +if (st->chip_info->num_channels >AD3531R_MAX_CHANNELS ) {drivers/iio/dac/ad3530r.c line 401
Quoted 10 lines
drivers/iio/dac/ad3530r.c new file +10
-0+ ret =regmap_write (st->regmap,AD3530R_OUTPUT_OPERATING_MODE_1 , +AD3530R_NORMAL_OPERATION ); +if (ret) +return ret; + } + +for (i =0 ; i < st->chip_info->num_channels; i++) + st->chan[i].powerdown_mode =AD3530R_POWERDOWN_32K ; + + st->ldac_gpio =devm_gpiod_get_optional (dev,"ldac" ,GPIOD_OUT_HIGH );I guess it doesn't matter which state this starts in but
GPIOD_OUT_LOWseems more natural since we toggle it high the low later.Quoted 7 lines
drivers/iio/dac/ad3530r.c new file +7
-0+if (IS_ERR (st->ldac_gpio)) +return dev_err_probe (dev,PTR_ERR (st->ldac_gpio), +"Failed to get ldac GPIO\n" ); + +return 0 ; +} +
Quoted 10 lines · Kim Seer Paller
The AD3530/AD3530R (8-channel) and AD3531/AD3531R (4-channel) are low-power, 16-bit, buffered voltage output DACs with software- programmable gain controls, providing full-scale output spans of 2.5V or 5V for reference voltages of 2.5V. These devices operate from a single 2.7V to 5.5V supply and are guaranteed monotonic by design. The "R" variants include a 2.5V, 5ppm/°C internal reference, which is disabled by default.
Signed-off-by Kim Seer Paller <[email protected]>---
I made a few comments on the driver, but still good enough for: