* [PATCH 1/3] IIO: DAC: AD5446: Add missing ID table entries
@ 2011-03-10 11:52 michael.hennerich
2011-03-10 11:52 ` [PATCH 2/3] IIO: DAC: AD5446: Add power down support michael.hennerich
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: michael.hennerich @ 2011-03-10 11:52 UTC (permalink / raw)
To: jic23; +Cc: linux-iio, drivers, device-drivers-devel, Michael Hennerich
From: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
---
drivers/staging/iio/dac/ad5446.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/drivers/staging/iio/dac/ad5446.c b/drivers/staging/iio/dac/ad5446.c
index dcec297..4f1d881 100644
--- a/drivers/staging/iio/dac/ad5446.c
+++ b/drivers/staging/iio/dac/ad5446.c
@@ -295,8 +295,10 @@ static int ad5446_remove(struct spi_device *spi)
static const struct spi_device_id ad5446_id[] = {
{"ad5444", ID_AD5444},
{"ad5446", ID_AD5446},
- {"ad5542a", ID_AD5542A},
{"ad5512a", ID_AD5512A},
+ {"ad5542a", ID_AD5542A},
+ {"ad5543", ID_AD5543},
+ {"ad5553", ID_AD5553},
{"ad5620-2500", ID_AD5620_2500}, /* AD5620/40/60: */
{"ad5620-1250", ID_AD5620_1250}, /* part numbers may look differently */
{"ad5640-2500", ID_AD5640_2500},
--
1.6.0.2
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 2/3] IIO: DAC: AD5446: Add power down support 2011-03-10 11:52 [PATCH 1/3] IIO: DAC: AD5446: Add missing ID table entries michael.hennerich @ 2011-03-10 11:52 ` michael.hennerich 2011-03-10 12:10 ` Jonathan Cameron 2011-03-10 11:52 ` [PATCH 3/3] IIO: DAC: AD5446: Add support for AD5601/AD5611/AD5621 michael.hennerich 2011-03-10 12:08 ` [PATCH 1/3] IIO: DAC: AD5446: Add missing ID table entries Jonathan Cameron 2 siblings, 1 reply; 7+ messages in thread From: michael.hennerich @ 2011-03-10 11:52 UTC (permalink / raw) To: jic23; +Cc: linux-iio, drivers, device-drivers-devel, Michael Hennerich From: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> --- drivers/staging/iio/dac/ad5446.c | 153 ++++++++++++++++++++++++++++++++++---- drivers/staging/iio/dac/ad5446.h | 19 ++++- 2 files changed, 153 insertions(+), 19 deletions(-) diff --git a/drivers/staging/iio/dac/ad5446.c b/drivers/staging/iio/dac/ad5446.c index 4f1d881..861a7ea 100644 --- a/drivers/staging/iio/dac/ad5446.c +++ b/drivers/staging/iio/dac/ad5446.c @@ -48,6 +48,20 @@ static void ad5660_store_sample(struct ad5446_state *st, unsigned val) st->data.d24[2] = val & 0xFF; } +static void ad5620_store_pwr_down(struct ad5446_state *st, unsigned mode) +{ + st->data.d16 = cpu_to_be16(mode << 14); +} + +static void ad5660_store_pwr_down(struct ad5446_state *st, unsigned mode) +{ + unsigned val = mode << 16; + + st->data.d24[0] = (val >> 16) & 0xFF; + st->data.d24[1] = (val >> 8) & 0xFF; + st->data.d24[2] = val & 0xFF; +} + static ssize_t ad5446_write(struct device *dev, struct device_attribute *attr, const char *buf, @@ -68,6 +82,7 @@ static ssize_t ad5446_write(struct device *dev, } mutex_lock(&dev_info->mlock); + st->cached_val = val; st->chip_info->store_sample(st, val); ret = spi_sync(st->spi, &st->msg); mutex_unlock(&dev_info->mlock); @@ -102,15 +117,119 @@ static ssize_t ad5446_show_name(struct device *dev, } static IIO_DEVICE_ATTR(name, S_IRUGO, ad5446_show_name, NULL, 0); +static ssize_t ad5446_write_powerdown_mode(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t len) +{ + struct iio_dev *dev_info = dev_get_drvdata(dev); + struct ad5446_state *st = dev_info->dev_data; + + if (sysfs_streq(buf, "1kohm_to_gnd")) + st->pwr_down_mode = MODE_PWRDWN_1k; + else if (sysfs_streq(buf, "100kohm_to_gnd")) + st->pwr_down_mode = MODE_PWRDWN_100k; + else if (sysfs_streq(buf, "three_state")) + st->pwr_down_mode = MODE_PWRDWN_TRISTATE; + else + return -EINVAL; + + return len; +} + +static ssize_t ad5446_read_powerdown_mode(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct iio_dev *dev_info = dev_get_drvdata(dev); + struct ad5446_state *st = dev_info->dev_data; + + char mode[][15] = {"", "1kohm_to_gnd", "100kohm_to_gnd", "three_state"}; + + return sprintf(buf, "%s\n", mode[st->pwr_down_mode]); +} + +static ssize_t ad5446_read_dac_powerdown(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct iio_dev *dev_info = dev_get_drvdata(dev); + struct ad5446_state *st = dev_info->dev_data; + + return sprintf(buf, "%d\n", st->pwr_down); +} + +static ssize_t ad5446_write_dac_powerdown(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t len) +{ + struct iio_dev *dev_info = dev_get_drvdata(dev); + struct ad5446_state *st = dev_info->dev_data; + unsigned long readin; + int ret; + + ret = strict_strtol(buf, 10, &readin); + if (ret) + return ret; + + if (readin > 1) + ret = -EINVAL; + + mutex_lock(&dev_info->mlock); + st->pwr_down = readin; + + if (st->pwr_down) + st->chip_info->store_pwr_down(st, st->pwr_down_mode); + else + st->chip_info->store_sample(st, st->cached_val); + + ret = spi_sync(st->spi, &st->msg); + mutex_unlock(&dev_info->mlock); + + return ret ? ret : len; +} + +static IIO_DEVICE_ATTR(out_powerdown_mode, S_IRUGO | S_IWUSR, + ad5446_read_powerdown_mode, + ad5446_write_powerdown_mode, 0); + +static IIO_CONST_ATTR(out_powerdown_mode_available, + "1kohm_to_gnd 100kohm_to_gnd three_state"); + +static IIO_DEVICE_ATTR(out0_powerdown, S_IRUGO | S_IWUSR, + ad5446_read_dac_powerdown, + ad5446_write_dac_powerdown, 0); + static struct attribute *ad5446_attributes[] = { &iio_dev_attr_out0_raw.dev_attr.attr, &iio_dev_attr_out_scale.dev_attr.attr, + &iio_dev_attr_out0_powerdown.dev_attr.attr, + &iio_dev_attr_out_powerdown_mode.dev_attr.attr, + &iio_const_attr_out_powerdown_mode_available.dev_attr.attr, &iio_dev_attr_name.dev_attr.attr, NULL, }; +static mode_t ad5446_attr_is_visible(struct kobject *kobj, + struct attribute *attr, int n) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct iio_dev *dev_info = dev_get_drvdata(dev); + struct ad5446_state *st = iio_dev_get_devdata(dev_info); + + mode_t mode = attr->mode; + + if (!st->chip_info->store_pwr_down && + (attr == &iio_dev_attr_out0_powerdown.dev_attr.attr || + attr == &iio_dev_attr_out_powerdown_mode.dev_attr.attr || + attr == + &iio_const_attr_out_powerdown_mode_available.dev_attr.attr)) + mode = 0; + + return mode; +} + static const struct attribute_group ad5446_attribute_group = { .attrs = ad5446_attributes, + .is_visible = ad5446_attr_is_visible, }; static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { @@ -156,6 +275,7 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { .left_shift = 2, .int_vref_mv = 2500, .store_sample = ad5620_store_sample, + .store_pwr_down = ad5620_store_pwr_down, }, [ID_AD5620_1250] = { .bits = 12, @@ -163,6 +283,7 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { .left_shift = 2, .int_vref_mv = 1250, .store_sample = ad5620_store_sample, + .store_pwr_down = ad5620_store_pwr_down, }, [ID_AD5640_2500] = { .bits = 14, @@ -170,6 +291,7 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { .left_shift = 0, .int_vref_mv = 2500, .store_sample = ad5620_store_sample, + .store_pwr_down = ad5620_store_pwr_down, }, [ID_AD5640_1250] = { .bits = 14, @@ -177,6 +299,7 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { .left_shift = 0, .int_vref_mv = 1250, .store_sample = ad5620_store_sample, + .store_pwr_down = ad5620_store_pwr_down, }, [ID_AD5660_2500] = { .bits = 16, @@ -184,6 +307,7 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { .left_shift = 0, .int_vref_mv = 2500, .store_sample = ad5660_store_sample, + .store_pwr_down = ad5660_store_pwr_down, }, [ID_AD5660_1250] = { .bits = 16, @@ -191,6 +315,7 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { .left_shift = 0, .int_vref_mv = 1250, .store_sample = ad5660_store_sample, + .store_pwr_down = ad5660_store_pwr_down, }, }; @@ -243,20 +368,20 @@ static int __devinit ad5446_probe(struct spi_device *spi) spi_message_add_tail(&st->xfer, &st->msg); switch (spi_get_device_id(spi)->driver_data) { - case ID_AD5620_2500: - case ID_AD5620_1250: - case ID_AD5640_2500: - case ID_AD5640_1250: - case ID_AD5660_2500: - case ID_AD5660_1250: - st->vref_mv = st->chip_info->int_vref_mv; - break; - default: - if (voltage_uv) - st->vref_mv = voltage_uv / 1000; - else - dev_warn(&spi->dev, - "reference voltage unspecified\n"); + case ID_AD5620_2500: + case ID_AD5620_1250: + case ID_AD5640_2500: + case ID_AD5640_1250: + case ID_AD5660_2500: + case ID_AD5660_1250: + st->vref_mv = st->chip_info->int_vref_mv; + break; + default: + if (voltage_uv) + st->vref_mv = voltage_uv / 1000; + else + dev_warn(&spi->dev, + "reference voltage unspecified\n"); } ret = iio_device_register(st->indio_dev); diff --git a/drivers/staging/iio/dac/ad5446.h b/drivers/staging/iio/dac/ad5446.h index 0cb9c14..e9397a6 100644 --- a/drivers/staging/iio/dac/ad5446.h +++ b/drivers/staging/iio/dac/ad5446.h @@ -27,6 +27,10 @@ #define RES_MASK(bits) ((1 << (bits)) - 1) +#define MODE_PWRDWN_1k 0x1 +#define MODE_PWRDWN_100k 0x2 +#define MODE_PWRDWN_TRISTATE 0x3 + /** * struct ad5446_state - driver instance specific data * @indio_dev: the industrial I/O device @@ -47,6 +51,9 @@ struct ad5446_state { struct regulator *reg; struct work_struct poll_work; unsigned short vref_mv; + unsigned cached_val; + unsigned pwr_down_mode; + unsigned pwr_down; struct spi_transfer xfer; struct spi_message msg; union { @@ -62,14 +69,16 @@ struct ad5446_state { * @left_shift: number of bits the datum must be shifted * @int_vref_mv: AD5620/40/60: the internal reference voltage * @store_sample: chip specific helper function to store the datum + * @store_sample: chip specific helper function to store the powerpown cmd */ struct ad5446_chip_info { - u8 bits; - u8 storagebits; - u8 left_shift; - u16 int_vref_mv; - void (*store_sample) (struct ad5446_state *st, unsigned val); + u8 bits; + u8 storagebits; + u8 left_shift; + u16 int_vref_mv; + void (*store_sample) (struct ad5446_state *st, unsigned val); + void (*store_pwr_down) (struct ad5446_state *st, unsigned mode); }; /** -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/3] IIO: DAC: AD5446: Add power down support 2011-03-10 11:52 ` [PATCH 2/3] IIO: DAC: AD5446: Add power down support michael.hennerich @ 2011-03-10 12:10 ` Jonathan Cameron 0 siblings, 0 replies; 7+ messages in thread From: Jonathan Cameron @ 2011-03-10 12:10 UTC (permalink / raw) To: michael.hennerich; +Cc: linux-iio, drivers, device-drivers-devel On 03/10/11 11:52, michael.hennerich@analog.com wrote: > From: Michael Hennerich <michael.hennerich@analog.com> > > > Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Acked-by: Jonathan Cameron <jic23@cam.ac.uk> > --- > drivers/staging/iio/dac/ad5446.c | 153 ++++++++++++++++++++++++++++++++++---- > drivers/staging/iio/dac/ad5446.h | 19 ++++- > 2 files changed, 153 insertions(+), 19 deletions(-) > > diff --git a/drivers/staging/iio/dac/ad5446.c b/drivers/staging/iio/dac/ad5446.c > index 4f1d881..861a7ea 100644 > --- a/drivers/staging/iio/dac/ad5446.c > +++ b/drivers/staging/iio/dac/ad5446.c > @@ -48,6 +48,20 @@ static void ad5660_store_sample(struct ad5446_state *st, unsigned val) > st->data.d24[2] = val & 0xFF; > } > > +static void ad5620_store_pwr_down(struct ad5446_state *st, unsigned mode) > +{ > + st->data.d16 = cpu_to_be16(mode << 14); > +} > + > +static void ad5660_store_pwr_down(struct ad5446_state *st, unsigned mode) > +{ > + unsigned val = mode << 16; > + > + st->data.d24[0] = (val >> 16) & 0xFF; > + st->data.d24[1] = (val >> 8) & 0xFF; > + st->data.d24[2] = val & 0xFF; > +} > + > static ssize_t ad5446_write(struct device *dev, > struct device_attribute *attr, > const char *buf, > @@ -68,6 +82,7 @@ static ssize_t ad5446_write(struct device *dev, > } > > mutex_lock(&dev_info->mlock); > + st->cached_val = val; > st->chip_info->store_sample(st, val); > ret = spi_sync(st->spi, &st->msg); > mutex_unlock(&dev_info->mlock); > @@ -102,15 +117,119 @@ static ssize_t ad5446_show_name(struct device *dev, > } > static IIO_DEVICE_ATTR(name, S_IRUGO, ad5446_show_name, NULL, 0); > > +static ssize_t ad5446_write_powerdown_mode(struct device *dev, > + struct device_attribute *attr, > + const char *buf, size_t len) > +{ > + struct iio_dev *dev_info = dev_get_drvdata(dev); > + struct ad5446_state *st = dev_info->dev_data; > + > + if (sysfs_streq(buf, "1kohm_to_gnd")) > + st->pwr_down_mode = MODE_PWRDWN_1k; > + else if (sysfs_streq(buf, "100kohm_to_gnd")) > + st->pwr_down_mode = MODE_PWRDWN_100k; > + else if (sysfs_streq(buf, "three_state")) > + st->pwr_down_mode = MODE_PWRDWN_TRISTATE; > + else > + return -EINVAL; > + > + return len; > +} > + > +static ssize_t ad5446_read_powerdown_mode(struct device *dev, > + struct device_attribute *attr, char *buf) > +{ > + struct iio_dev *dev_info = dev_get_drvdata(dev); > + struct ad5446_state *st = dev_info->dev_data; > + > + char mode[][15] = {"", "1kohm_to_gnd", "100kohm_to_gnd", "three_state"}; > + > + return sprintf(buf, "%s\n", mode[st->pwr_down_mode]); > +} > + > +static ssize_t ad5446_read_dac_powerdown(struct device *dev, > + struct device_attribute *attr, > + char *buf) > +{ > + struct iio_dev *dev_info = dev_get_drvdata(dev); > + struct ad5446_state *st = dev_info->dev_data; > + > + return sprintf(buf, "%d\n", st->pwr_down); > +} > + > +static ssize_t ad5446_write_dac_powerdown(struct device *dev, > + struct device_attribute *attr, > + const char *buf, size_t len) > +{ > + struct iio_dev *dev_info = dev_get_drvdata(dev); > + struct ad5446_state *st = dev_info->dev_data; > + unsigned long readin; > + int ret; > + > + ret = strict_strtol(buf, 10, &readin); > + if (ret) > + return ret; > + > + if (readin > 1) > + ret = -EINVAL; > + > + mutex_lock(&dev_info->mlock); > + st->pwr_down = readin; > + > + if (st->pwr_down) > + st->chip_info->store_pwr_down(st, st->pwr_down_mode); > + else > + st->chip_info->store_sample(st, st->cached_val); > + > + ret = spi_sync(st->spi, &st->msg); > + mutex_unlock(&dev_info->mlock); > + > + return ret ? ret : len; > +} > + > +static IIO_DEVICE_ATTR(out_powerdown_mode, S_IRUGO | S_IWUSR, > + ad5446_read_powerdown_mode, > + ad5446_write_powerdown_mode, 0); > + > +static IIO_CONST_ATTR(out_powerdown_mode_available, > + "1kohm_to_gnd 100kohm_to_gnd three_state"); > + > +static IIO_DEVICE_ATTR(out0_powerdown, S_IRUGO | S_IWUSR, > + ad5446_read_dac_powerdown, > + ad5446_write_dac_powerdown, 0); > + > static struct attribute *ad5446_attributes[] = { > &iio_dev_attr_out0_raw.dev_attr.attr, > &iio_dev_attr_out_scale.dev_attr.attr, > + &iio_dev_attr_out0_powerdown.dev_attr.attr, > + &iio_dev_attr_out_powerdown_mode.dev_attr.attr, > + &iio_const_attr_out_powerdown_mode_available.dev_attr.attr, > &iio_dev_attr_name.dev_attr.attr, > NULL, > }; > > +static mode_t ad5446_attr_is_visible(struct kobject *kobj, > + struct attribute *attr, int n) > +{ > + struct device *dev = container_of(kobj, struct device, kobj); > + struct iio_dev *dev_info = dev_get_drvdata(dev); > + struct ad5446_state *st = iio_dev_get_devdata(dev_info); > + > + mode_t mode = attr->mode; > + > + if (!st->chip_info->store_pwr_down && > + (attr == &iio_dev_attr_out0_powerdown.dev_attr.attr || > + attr == &iio_dev_attr_out_powerdown_mode.dev_attr.attr || > + attr == > + &iio_const_attr_out_powerdown_mode_available.dev_attr.attr)) > + mode = 0; > + > + return mode; > +} > + > static const struct attribute_group ad5446_attribute_group = { > .attrs = ad5446_attributes, > + .is_visible = ad5446_attr_is_visible, > }; > > static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { > @@ -156,6 +275,7 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { > .left_shift = 2, > .int_vref_mv = 2500, > .store_sample = ad5620_store_sample, > + .store_pwr_down = ad5620_store_pwr_down, > }, > [ID_AD5620_1250] = { > .bits = 12, > @@ -163,6 +283,7 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { > .left_shift = 2, > .int_vref_mv = 1250, > .store_sample = ad5620_store_sample, > + .store_pwr_down = ad5620_store_pwr_down, > }, > [ID_AD5640_2500] = { > .bits = 14, > @@ -170,6 +291,7 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { > .left_shift = 0, > .int_vref_mv = 2500, > .store_sample = ad5620_store_sample, > + .store_pwr_down = ad5620_store_pwr_down, > }, > [ID_AD5640_1250] = { > .bits = 14, > @@ -177,6 +299,7 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { > .left_shift = 0, > .int_vref_mv = 1250, > .store_sample = ad5620_store_sample, > + .store_pwr_down = ad5620_store_pwr_down, > }, > [ID_AD5660_2500] = { > .bits = 16, > @@ -184,6 +307,7 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { > .left_shift = 0, > .int_vref_mv = 2500, > .store_sample = ad5660_store_sample, > + .store_pwr_down = ad5660_store_pwr_down, > }, > [ID_AD5660_1250] = { > .bits = 16, > @@ -191,6 +315,7 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { > .left_shift = 0, > .int_vref_mv = 1250, > .store_sample = ad5660_store_sample, > + .store_pwr_down = ad5660_store_pwr_down, > }, > }; > > @@ -243,20 +368,20 @@ static int __devinit ad5446_probe(struct spi_device *spi) > spi_message_add_tail(&st->xfer, &st->msg); > > switch (spi_get_device_id(spi)->driver_data) { > - case ID_AD5620_2500: > - case ID_AD5620_1250: > - case ID_AD5640_2500: > - case ID_AD5640_1250: > - case ID_AD5660_2500: > - case ID_AD5660_1250: > - st->vref_mv = st->chip_info->int_vref_mv; > - break; > - default: > - if (voltage_uv) > - st->vref_mv = voltage_uv / 1000; > - else > - dev_warn(&spi->dev, > - "reference voltage unspecified\n"); > + case ID_AD5620_2500: > + case ID_AD5620_1250: > + case ID_AD5640_2500: > + case ID_AD5640_1250: > + case ID_AD5660_2500: > + case ID_AD5660_1250: > + st->vref_mv = st->chip_info->int_vref_mv; > + break; > + default: > + if (voltage_uv) > + st->vref_mv = voltage_uv / 1000; > + else > + dev_warn(&spi->dev, > + "reference voltage unspecified\n"); > } > > ret = iio_device_register(st->indio_dev); > diff --git a/drivers/staging/iio/dac/ad5446.h b/drivers/staging/iio/dac/ad5446.h > index 0cb9c14..e9397a6 100644 > --- a/drivers/staging/iio/dac/ad5446.h > +++ b/drivers/staging/iio/dac/ad5446.h > @@ -27,6 +27,10 @@ > > #define RES_MASK(bits) ((1 << (bits)) - 1) > > +#define MODE_PWRDWN_1k 0x1 > +#define MODE_PWRDWN_100k 0x2 > +#define MODE_PWRDWN_TRISTATE 0x3 > + > /** > * struct ad5446_state - driver instance specific data > * @indio_dev: the industrial I/O device > @@ -47,6 +51,9 @@ struct ad5446_state { > struct regulator *reg; > struct work_struct poll_work; > unsigned short vref_mv; > + unsigned cached_val; > + unsigned pwr_down_mode; > + unsigned pwr_down; > struct spi_transfer xfer; > struct spi_message msg; > union { > @@ -62,14 +69,16 @@ struct ad5446_state { > * @left_shift: number of bits the datum must be shifted > * @int_vref_mv: AD5620/40/60: the internal reference voltage > * @store_sample: chip specific helper function to store the datum > + * @store_sample: chip specific helper function to store the powerpown cmd > */ > > struct ad5446_chip_info { > - u8 bits; > - u8 storagebits; > - u8 left_shift; > - u16 int_vref_mv; > - void (*store_sample) (struct ad5446_state *st, unsigned val); > + u8 bits; > + u8 storagebits; > + u8 left_shift; > + u16 int_vref_mv; > + void (*store_sample) (struct ad5446_state *st, unsigned val); > + void (*store_pwr_down) (struct ad5446_state *st, unsigned mode); > }; > > /** ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 3/3] IIO: DAC: AD5446: Add support for AD5601/AD5611/AD5621 2011-03-10 11:52 [PATCH 1/3] IIO: DAC: AD5446: Add missing ID table entries michael.hennerich 2011-03-10 11:52 ` [PATCH 2/3] IIO: DAC: AD5446: Add power down support michael.hennerich @ 2011-03-10 11:52 ` michael.hennerich 2011-03-10 12:14 ` Jonathan Cameron 2011-03-10 12:08 ` [PATCH 1/3] IIO: DAC: AD5446: Add missing ID table entries Jonathan Cameron 2 siblings, 1 reply; 7+ messages in thread From: michael.hennerich @ 2011-03-10 11:52 UTC (permalink / raw) To: jic23; +Cc: linux-iio, drivers, device-drivers-devel, Michael Hennerich From: Michael Hennerich <michael.hennerich@analog.com> This patch adds support for the AD5601/AD5611/AD5621 single channel, 8-/10-/12-bit, buffered voltage output DACs. Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> --- drivers/staging/iio/dac/Kconfig | 3 ++- drivers/staging/iio/dac/ad5446.c | 24 ++++++++++++++++++++++++ drivers/staging/iio/dac/ad5446.h | 3 +++ 3 files changed, 29 insertions(+), 1 deletions(-) diff --git a/drivers/staging/iio/dac/Kconfig b/drivers/staging/iio/dac/Kconfig index 3c72871..9539545 100644 --- a/drivers/staging/iio/dac/Kconfig +++ b/drivers/staging/iio/dac/Kconfig @@ -15,7 +15,8 @@ config AD5446 depends on SPI help Say yes here to build support for Analog Devices AD5444, AD5446, - AD5512A, AD5542A, AD5543, AD5553, AD5620, AD5640, AD5660 DACs. + AD5512A, AD5542A, AD5543, AD5553, AD5601, AD5611, AD5621, AD5620, + AD5640, AD5660 DACs. To compile this driver as a module, choose M here: the module will be called ad5446. diff --git a/drivers/staging/iio/dac/ad5446.c b/drivers/staging/iio/dac/ad5446.c index 861a7ea..8623a72 100644 --- a/drivers/staging/iio/dac/ad5446.c +++ b/drivers/staging/iio/dac/ad5446.c @@ -269,6 +269,27 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { .left_shift = 0, .store_sample = ad5542_store_sample, }, + [ID_AD5601] = { + .bits = 8, + .storagebits = 16, + .left_shift = 6, + .store_sample = ad5542_store_sample, + .store_pwr_down = ad5620_store_pwr_down, + }, + [ID_AD5611] = { + .bits = 10, + .storagebits = 16, + .left_shift = 4, + .store_sample = ad5542_store_sample, + .store_pwr_down = ad5620_store_pwr_down, + }, + [ID_AD5621] = { + .bits = 12, + .storagebits = 16, + .left_shift = 2, + .store_sample = ad5542_store_sample, + .store_pwr_down = ad5620_store_pwr_down, + }, [ID_AD5620_2500] = { .bits = 12, .storagebits = 16, @@ -424,6 +445,9 @@ static const struct spi_device_id ad5446_id[] = { {"ad5542a", ID_AD5542A}, {"ad5543", ID_AD5543}, {"ad5553", ID_AD5553}, + {"ad5601", ID_AD5601}, + {"ad5611", ID_AD5611}, + {"ad5621", ID_AD5621}, {"ad5620-2500", ID_AD5620_2500}, /* AD5620/40/60: */ {"ad5620-1250", ID_AD5620_1250}, /* part numbers may look differently */ {"ad5640-2500", ID_AD5640_2500}, diff --git a/drivers/staging/iio/dac/ad5446.h b/drivers/staging/iio/dac/ad5446.h index e9397a6..7ac63ab 100644 --- a/drivers/staging/iio/dac/ad5446.h +++ b/drivers/staging/iio/dac/ad5446.h @@ -96,6 +96,9 @@ enum ad5446_supported_device_ids { ID_AD5543, ID_AD5512A, ID_AD5553, + ID_AD5601, + ID_AD5611, + ID_AD5621, ID_AD5620_2500, ID_AD5620_1250, ID_AD5640_2500, -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] IIO: DAC: AD5446: Add support for AD5601/AD5611/AD5621 2011-03-10 11:52 ` [PATCH 3/3] IIO: DAC: AD5446: Add support for AD5601/AD5611/AD5621 michael.hennerich @ 2011-03-10 12:14 ` Jonathan Cameron 0 siblings, 0 replies; 7+ messages in thread From: Jonathan Cameron @ 2011-03-10 12:14 UTC (permalink / raw) To: michael.hennerich; +Cc: linux-iio, drivers, device-drivers-devel On 03/10/11 11:52, michael.hennerich@analog.com wrote: > From: Michael Hennerich <michael.hennerich@analog.com> > > This patch adds support for the AD5601/AD5611/AD5621 single channel, > 8-/10-/12-bit, buffered voltage output DACs. > Queries on ordering of part numbers in line. Nitpick though so up to you whether you want to have them sorted by number or grouped in some other way. > Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Acked-by: Jonathan Cameron <jic23@cam.ac.uk> > --- > drivers/staging/iio/dac/Kconfig | 3 ++- > drivers/staging/iio/dac/ad5446.c | 24 ++++++++++++++++++++++++ > drivers/staging/iio/dac/ad5446.h | 3 +++ > 3 files changed, 29 insertions(+), 1 deletions(-) > > diff --git a/drivers/staging/iio/dac/Kconfig b/drivers/staging/iio/dac/Kconfig > index 3c72871..9539545 100644 > --- a/drivers/staging/iio/dac/Kconfig > +++ b/drivers/staging/iio/dac/Kconfig > @@ -15,7 +15,8 @@ config AD5446 > depends on SPI > help > Say yes here to build support for Analog Devices AD5444, AD5446, > - AD5512A, AD5542A, AD5543, AD5553, AD5620, AD5640, AD5660 DACs. > + AD5512A, AD5542A, AD5543, AD5553, AD5601, AD5611, AD5621, AD5620, Slightly odd ordering at end of line above... If the intent is numerical order then you'll want to fix that. > + AD5640, AD5660 DACs. > > To compile this driver as a module, choose M here: the > module will be called ad5446. > diff --git a/drivers/staging/iio/dac/ad5446.c b/drivers/staging/iio/dac/ad5446.c > index 861a7ea..8623a72 100644 > --- a/drivers/staging/iio/dac/ad5446.c > +++ b/drivers/staging/iio/dac/ad5446.c > @@ -269,6 +269,27 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { > .left_shift = 0, > .store_sample = ad5542_store_sample, > }, > + [ID_AD5601] = { > + .bits = 8, > + .storagebits = 16, > + .left_shift = 6, > + .store_sample = ad5542_store_sample, > + .store_pwr_down = ad5620_store_pwr_down, > + }, > + [ID_AD5611] = { > + .bits = 10, > + .storagebits = 16, > + .left_shift = 4, > + .store_sample = ad5542_store_sample, > + .store_pwr_down = ad5620_store_pwr_down, > + }, Again, is the intent numerical order here? > + [ID_AD5621] = { > + .bits = 12, > + .storagebits = 16, > + .left_shift = 2, > + .store_sample = ad5542_store_sample, > + .store_pwr_down = ad5620_store_pwr_down, > + }, > [ID_AD5620_2500] = { > .bits = 12, > .storagebits = 16, > @@ -424,6 +445,9 @@ static const struct spi_device_id ad5446_id[] = { > {"ad5542a", ID_AD5542A}, > {"ad5543", ID_AD5543}, > {"ad5553", ID_AD5553}, > + {"ad5601", ID_AD5601}, > + {"ad5611", ID_AD5611}, > + {"ad5621", ID_AD5621}, and here? > {"ad5620-2500", ID_AD5620_2500}, /* AD5620/40/60: */ > {"ad5620-1250", ID_AD5620_1250}, /* part numbers may look differently */ > {"ad5640-2500", ID_AD5640_2500}, > diff --git a/drivers/staging/iio/dac/ad5446.h b/drivers/staging/iio/dac/ad5446.h > index e9397a6..7ac63ab 100644 > --- a/drivers/staging/iio/dac/ad5446.h > +++ b/drivers/staging/iio/dac/ad5446.h > @@ -96,6 +96,9 @@ enum ad5446_supported_device_ids { > ID_AD5543, > ID_AD5512A, > ID_AD5553, > + ID_AD5601, > + ID_AD5611, > + ID_AD5621, > ID_AD5620_2500, > ID_AD5620_1250, > ID_AD5640_2500, ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] IIO: DAC: AD5446: Add missing ID table entries 2011-03-10 11:52 [PATCH 1/3] IIO: DAC: AD5446: Add missing ID table entries michael.hennerich 2011-03-10 11:52 ` [PATCH 2/3] IIO: DAC: AD5446: Add power down support michael.hennerich 2011-03-10 11:52 ` [PATCH 3/3] IIO: DAC: AD5446: Add support for AD5601/AD5611/AD5621 michael.hennerich @ 2011-03-10 12:08 ` Jonathan Cameron 2 siblings, 0 replies; 7+ messages in thread From: Jonathan Cameron @ 2011-03-10 12:08 UTC (permalink / raw) To: michael.hennerich; +Cc: linux-iio, drivers, device-drivers-devel On 03/10/11 11:52, michael.hennerich@analog.com wrote: > From: Michael Hennerich <michael.hennerich@analog.com> > > > Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Acked-by: Jonathan Cameron <jic23@cam.ac.uk> > --- > drivers/staging/iio/dac/ad5446.c | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/drivers/staging/iio/dac/ad5446.c b/drivers/staging/iio/dac/ad5446.c > index dcec297..4f1d881 100644 > --- a/drivers/staging/iio/dac/ad5446.c > +++ b/drivers/staging/iio/dac/ad5446.c > @@ -295,8 +295,10 @@ static int ad5446_remove(struct spi_device *spi) > static const struct spi_device_id ad5446_id[] = { > {"ad5444", ID_AD5444}, > {"ad5446", ID_AD5446}, > - {"ad5542a", ID_AD5542A}, > {"ad5512a", ID_AD5512A}, > + {"ad5542a", ID_AD5542A}, > + {"ad5543", ID_AD5543}, > + {"ad5553", ID_AD5553}, > {"ad5620-2500", ID_AD5620_2500}, /* AD5620/40/60: */ > {"ad5620-1250", ID_AD5620_1250}, /* part numbers may look differently */ > {"ad5640-2500", ID_AD5640_2500}, ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/3] IIO: DAC: AD5446: Add missing ID table entries @ 2011-03-10 12:26 michael.hennerich 0 siblings, 0 replies; 7+ messages in thread From: michael.hennerich @ 2011-03-10 12:26 UTC (permalink / raw) To: greg; +Cc: linux-iio, drivers, jic23, device-drivers-devel, Michael Hennerich From: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Acked-by: Jonathan Cameron <jic23@cam.ac.uk> --- drivers/staging/iio/dac/ad5446.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/drivers/staging/iio/dac/ad5446.c b/drivers/staging/iio/dac/ad5446.c index dcec297..4f1d881 100644 --- a/drivers/staging/iio/dac/ad5446.c +++ b/drivers/staging/iio/dac/ad5446.c @@ -295,8 +295,10 @@ static int ad5446_remove(struct spi_device *spi) static const struct spi_device_id ad5446_id[] = { {"ad5444", ID_AD5444}, {"ad5446", ID_AD5446}, - {"ad5542a", ID_AD5542A}, {"ad5512a", ID_AD5512A}, + {"ad5542a", ID_AD5542A}, + {"ad5543", ID_AD5543}, + {"ad5553", ID_AD5553}, {"ad5620-2500", ID_AD5620_2500}, /* AD5620/40/60: */ {"ad5620-1250", ID_AD5620_1250}, /* part numbers may look differently */ {"ad5640-2500", ID_AD5640_2500}, -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-03-10 12:26 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-03-10 11:52 [PATCH 1/3] IIO: DAC: AD5446: Add missing ID table entries michael.hennerich 2011-03-10 11:52 ` [PATCH 2/3] IIO: DAC: AD5446: Add power down support michael.hennerich 2011-03-10 12:10 ` Jonathan Cameron 2011-03-10 11:52 ` [PATCH 3/3] IIO: DAC: AD5446: Add support for AD5601/AD5611/AD5621 michael.hennerich 2011-03-10 12:14 ` Jonathan Cameron 2011-03-10 12:08 ` [PATCH 1/3] IIO: DAC: AD5446: Add missing ID table entries Jonathan Cameron -- strict thread matches above, loose matches on Subject: below -- 2011-03-10 12:26 michael.hennerich
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox