patch "iio: dac: ad3530r: Fix AD3531/AD3531R powerdown mode strings" added to char-misc-linus
This is a note to let you know that I've just added the patch titled
iio: dac: ad3530r: Fix AD3531/AD3531R powerdown mode strings
to my char-misc git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
in the char-misc-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From ebd250c2581ec46c64c73fdfa918c9a7f757505e Mon Sep 17 00:00:00 2001
From: Kim Seer Paller <[email protected]>
Date: Tue, 5 May 2026 12:34:32 +0800
Subject: iio: dac: ad3530r: Fix AD3531/AD3531R powerdown mode strings
The AD3531/AD3531R has different output operating modes from the AD3530/AD3530R. According to the AD3531/AD3531R datasheet, the powerdown modes are:
01: 500 Ohm output impedance
10: 3.85 kOhm output impedance
11: 16 kOhm output impedance
The driver currently uses the AD3530R modes (1k, 7.7k, 32k) for all variants, which is incorrect for AD3531/AD3531R.
Add AD3531R-specific powerdown mode strings and assign them to the AD3531/AD3531R chip variants.
--- drivers/iio/dac/ad3530r.c | 54 +++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 14 deletions(-)
drivers/iio/dac/ad3530r.c +40 -14
@@ -105,6 +105,12 @@ static const char * const ad3530r_powerdown_modes[] = { "32kohm_to_gnd", }; +static const char *const ad3531r_powerdown_modes[] = { +"500ohm_to_gnd" , +"3.85kohm_to_gnd" , +"16kohm_to_gnd" , +}; +static int ad3530r_get_powerdown_mode (struct iio_dev *indio_dev,const struct iio_chan_spec *chan) {
@@ -133,6 +139,13 @@ static const struct iio_enum ad3530r_powerdown_mode_enum = { .set = ad3530r_set_powerdown_mode, }; +static const struct iio_enum ad3531r_powerdown_mode_enum = { + .items = ad3531r_powerdown_modes, + .num_items =ARRAY_SIZE (ad3531r_powerdown_modes), + .get = ad3530r_get_powerdown_mode, + .set = ad3530r_set_powerdown_mode, +}; + static ssize_t ad3530r_get_dac_powerdown(struct iio_dev *indio_dev, uintptr_t private, const struct iio_chan_spec *chan,
@@ -276,7 +289,20 @@ static const struct iio_chan_spec_ext_info ad3530r_ext_info[] = { { } }; -#define AD3530R_CHAN (_chan) \ +static const struct iio_chan_spec_ext_info ad3531r_ext_info[] = { + { + .name ="powerdown" , + .shared =IIO_SEPARATE , + .read = ad3530r_get_dac_powerdown, + .write = ad3530r_set_dac_powerdown, + }, +IIO_ENUM ("powerdown_mode" ,IIO_SEPARATE , &ad3531r_powerdown_mode_enum), +IIO_ENUM_AVAILABLE ("powerdown_mode" ,IIO_SHARED_BY_TYPE , + &ad3531r_powerdown_mode_enum), + { } +}; + +#define AD3530R_CHAN (_chan, _ext_info) \ { \ .type = IIO_VOLTAGE, \ .indexed = 1, \
@@ -284,25 +310,25 @@ static const struct iio_chan_spec_ext_info ad3530r_ext_info[] = { .output = 1, \ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \ BIT(IIO_CHAN_INFO_SCALE), \ - .ext_info = ad3530r_ext_info, \ + .ext_info = _ext_info, \ }static const struct iio_chan_spec ad3530r_channels[] = { -AD3530R_CHAN (0 ), -AD3530R_CHAN (1 ), -AD3530R_CHAN (2 ), -AD3530R_CHAN (3 ), -AD3530R_CHAN (4 ), -AD3530R_CHAN (5 ), -AD3530R_CHAN (6 ), -AD3530R_CHAN (7 ), +AD3530R_CHAN (0 , ad3530r_ext_info), +AD3530R_CHAN (1 , ad3530r_ext_info), +AD3530R_CHAN (2 , ad3530r_ext_info), +AD3530R_CHAN (3 , ad3530r_ext_info), +AD3530R_CHAN (4 , ad3530r_ext_info), +AD3530R_CHAN (5 , ad3530r_ext_info), +AD3530R_CHAN (6 , ad3530r_ext_info), +AD3530R_CHAN (7 , ad3530r_ext_info), };static const struct iio_chan_spec ad3531r_channels[] = { -AD3530R_CHAN (0 ), -AD3530R_CHAN (1 ), -AD3530R_CHAN (2 ), -AD3530R_CHAN (3 ), +AD3530R_CHAN (0 , ad3531r_ext_info), +AD3530R_CHAN (1 , ad3531r_ext_info), +AD3530R_CHAN (2 , ad3531r_ext_info), +AD3530R_CHAN (3 , ad3531r_ext_info), };static const struct ad3530r_chip_info ad3530_chip = {
Signature · 1 line
2.54.0