mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 12:35:52 +02:00
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.
Fixes: 93583174a3 ("iio: dac: ad3530r: Add driver for AD3530R and AD3531R")
Signed-off-by: Kim Seer Paller <kimseer.paller@analog.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
6f5ed4f2c7
commit
ebd250c258
|
|
@ -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 = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user