On 10/25/2015 12:19 PM, Jonathan Cameron wrote: > On 22/10/15 05:34, Marc Andre wrote: >> The Linear Technology LTC2606, LTC2607, LTC2609, LTC2616, LTC2617, >> LTC2619, LTC2626, LTC2627 and LTC2629 devices are very similar >> to the AD5064 device. >> >> This patch adds support for those devices. >> >> Datasheet for LTC devices: >> LTC2606, LTC2616, LTC2626: http://www.linear.com/docs/6398 >> LTC2607, LTC2617, LTC2627: http://www.linear.com/docs/8977 >> LTC2709, LTC2619, LTC2629: http://www.linear.com/docs/8477 >> >> Signed-off-by: Marc Andre <marc.andre@xxxxxxxxxx> >> Acked-by: Lars-Peter Clausen <lars@xxxxxxxxxx> > Queued up for when the prerequisits make it in. I think this got somehow lost. Can you take a look at it again, thanks. >> --- >> Documentation/ABI/testing/sysfs-bus-iio | 1 + >> drivers/iio/dac/ad5064.c | 112 +++++++++++++++++++++++++++++++- >> 2 files changed, 112 insertions(+), 1 deletion(-) >> >> diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio >> index 42d360f..3e8b778 100644 >> --- a/Documentation/ABI/testing/sysfs-bus-iio >> +++ b/Documentation/ABI/testing/sysfs-bus-iio >> @@ -496,6 +496,7 @@ Description: >> 1kohm_to_gnd: connected to ground via an 1kOhm resistor, >> 6kohm_to_gnd: connected to ground via a 6kOhm resistor, >> 20kohm_to_gnd: connected to ground via a 20kOhm resistor, >> + 90kohm_to_gnd: connected to ground via a 90kOhm resistor, >> 100kohm_to_gnd: connected to ground via an 100kOhm resistor, >> 500kohm_to_gnd: connected to ground via a 500kOhm resistor, >> three_state: left floating. >> diff --git a/drivers/iio/dac/ad5064.c b/drivers/iio/dac/ad5064.c >> index 3bb0312..1b89625 100644 >> --- a/drivers/iio/dac/ad5064.c >> +++ b/drivers/iio/dac/ad5064.c >> @@ -1,6 +1,8 @@ >> /* >> * AD5024, AD5025, AD5044, AD5045, AD5064, AD5064-1, AD5065, AD5628, AD5629R, >> - * AD5648, AD5666, AD5668, AD5669R Digital to analog converters driver >> + * AD5648, AD5666, AD5668, AD5669R, LTC2606, LTC2607, LTC2609, LTC2616, >> + * LTC2617, LTC2619, LTC2626, LTC2627, LTC2629 Digital to analog converters >> + * driver >> * >> * Copyright 2011 Analog Devices Inc. >> * >> @@ -126,6 +128,15 @@ enum ad5064_type { >> ID_AD5668_2, >> ID_AD5669_1, >> ID_AD5669_2, >> + ID_LTC2606, >> + ID_LTC2607, >> + ID_LTC2609, >> + ID_LTC2616, >> + ID_LTC2617, >> + ID_LTC2619, >> + ID_LTC2626, >> + ID_LTC2627, >> + ID_LTC2629, >> }; >> >> static int ad5064_write(struct ad5064_state *st, unsigned int cmd, >> @@ -164,6 +175,10 @@ static const char * const ad5064_powerdown_modes[] = { >> "three_state", >> }; >> >> +static const char * const ltc2617_powerdown_modes[] = { >> + "90kohm_to_gnd", >> +}; >> + >> static int ad5064_get_powerdown_mode(struct iio_dev *indio_dev, >> const struct iio_chan_spec *chan) >> { >> @@ -194,6 +209,13 @@ static const struct iio_enum ad5064_powerdown_mode_enum = { >> .set = ad5064_set_powerdown_mode, >> }; >> >> +static const struct iio_enum ltc2617_powerdown_mode_enum = { >> + .items = ltc2617_powerdown_modes, >> + .num_items = ARRAY_SIZE(ltc2617_powerdown_modes), >> + .get = ad5064_get_powerdown_mode, >> + .set = ad5064_set_powerdown_mode, >> +}; >> + >> static ssize_t ad5064_read_dac_powerdown(struct iio_dev *indio_dev, >> uintptr_t private, const struct iio_chan_spec *chan, char *buf) >> { >> @@ -304,6 +326,18 @@ static const struct iio_chan_spec_ext_info ad5064_ext_info[] = { >> { }, >> }; >> >> +static const struct iio_chan_spec_ext_info ltc2617_ext_info[] = { >> + { >> + .name = "powerdown", >> + .read = ad5064_read_dac_powerdown, >> + .write = ad5064_write_dac_powerdown, >> + .shared = IIO_SEPARATE, >> + }, >> + IIO_ENUM("powerdown_mode", IIO_SEPARATE, <c2617_powerdown_mode_enum), >> + IIO_ENUM_AVAILABLE("powerdown_mode", <c2617_powerdown_mode_enum), >> + { }, >> +}; >> + >> #define AD5064_CHANNEL(chan, addr, bits, _shift, _ext_info) { \ >> .type = IIO_VOLTAGE, \ >> .indexed = 1, \ >> @@ -350,6 +384,10 @@ static DECLARE_AD5065_CHANNELS(ad5065_channels, 16, 4, ad5064_ext_info); >> static DECLARE_AD5064_CHANNELS(ad5629_channels, 12, 4, ad5064_ext_info); >> static DECLARE_AD5064_CHANNELS(ad5669_channels, 16, 0, ad5064_ext_info); >> >> +static DECLARE_AD5064_CHANNELS(ltc2607_channels, 16, 0, ltc2617_ext_info); >> +static DECLARE_AD5064_CHANNELS(ltc2617_channels, 14, 2, ltc2617_ext_info); >> +static DECLARE_AD5064_CHANNELS(ltc2627_channels, 12, 4, ltc2617_ext_info); >> + >> static const struct ad5064_chip_info ad5064_chip_info_tbl[] = { >> [ID_AD5024] = { >> .shared_vref = false, >> @@ -458,6 +496,69 @@ static const struct ad5064_chip_info ad5064_chip_info_tbl[] = { >> .channels = ad5669_channels, >> .num_channels = 8, >> }, >> + [ID_LTC2606] = { >> + .shared_vref = true, >> + .internal_vref = 0, >> + .channels = ltc2607_channels, >> + .num_channels = 1, >> + .powerdown_ltc = true, >> + }, >> + [ID_LTC2607] = { >> + .shared_vref = true, >> + .internal_vref = 0, >> + .channels = ltc2607_channels, >> + .num_channels = 2, >> + .powerdown_ltc = true, >> + }, >> + [ID_LTC2609] = { >> + .shared_vref = false, >> + .internal_vref = 0, >> + .channels = ltc2607_channels, >> + .num_channels = 4, >> + .powerdown_ltc = true, >> + }, >> + [ID_LTC2616] = { >> + .shared_vref = true, >> + .internal_vref = 0, >> + .channels = ltc2617_channels, >> + .num_channels = 1, >> + .powerdown_ltc = true, >> + }, >> + [ID_LTC2617] = { >> + .shared_vref = true, >> + .internal_vref = 0, >> + .channels = ltc2617_channels, >> + .num_channels = 2, >> + .powerdown_ltc = true, >> + }, >> + [ID_LTC2619] = { >> + .shared_vref = false, >> + .internal_vref = 0, >> + .channels = ltc2617_channels, >> + .num_channels = 4, >> + .powerdown_ltc = true, >> + }, >> + [ID_LTC2626] = { >> + .shared_vref = true, >> + .internal_vref = 0, >> + .channels = ltc2627_channels, >> + .num_channels = 1, >> + .powerdown_ltc = true, >> + }, >> + [ID_LTC2627] = { >> + .shared_vref = true, >> + .internal_vref = 0, >> + .channels = ltc2627_channels, >> + .num_channels = 2, >> + .powerdown_ltc = true, >> + }, >> + [ID_LTC2629] = { >> + .shared_vref = false, >> + .internal_vref = 0, >> + .channels = ltc2627_channels, >> + .num_channels = 4, >> + .powerdown_ltc = true, >> + }, >> }; >> >> static inline unsigned int ad5064_num_vref(struct ad5064_state *st) >> @@ -669,6 +770,15 @@ static const struct i2c_device_id ad5064_i2c_ids[] = { >> {"ad5669-1", ID_AD5669_1}, >> {"ad5669-2", ID_AD5669_2}, >> {"ad5669-3", ID_AD5669_2}, /* similar enough to ad5669-2 */ >> + {"ltc2606", ID_LTC2606}, >> + {"ltc2607", ID_LTC2607}, >> + {"ltc2609", ID_LTC2609}, >> + {"ltc2616", ID_LTC2616}, >> + {"ltc2617", ID_LTC2617}, >> + {"ltc2619", ID_LTC2619}, >> + {"ltc2626", ID_LTC2626}, >> + {"ltc2627", ID_LTC2627}, >> + {"ltc2629", ID_LTC2629}, >> {} >> }; >> MODULE_DEVICE_TABLE(i2c, ad5064_i2c_ids); >> > > -- > To unsubscribe from this list: send the line "unsubscribe linux-iio" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html