From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ppsw-50.csi.cam.ac.uk ([131.111.8.150]:46106 "EHLO ppsw-50.csi.cam.ac.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753372Ab0KSOjJ (ORCPT ); Fri, 19 Nov 2010 09:39:09 -0500 Message-ID: <4CE68D94.5090107@cam.ac.uk> Date: Fri, 19 Nov 2010 14:45:40 +0000 From: Jonathan Cameron MIME-Version: 1.0 To: michael.hennerich@analog.com CC: linux-iio@vger.kernel.org, drivers@analog.com, device-drivers-devel@blackfin.uclinux.org Subject: Re: [PATCH] staging: iio: dac: Add support for AD5541A, AD5512A digital to analog convertors References: <1290174968-10461-1-git-send-email-michael.hennerich@analog.com> In-Reply-To: <1290174968-10461-1-git-send-email-michael.hennerich@analog.com> Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-iio-owner@vger.kernel.org List-Id: linux-iio@vger.kernel.org On 11/19/10 13:56, michael.hennerich@analog.com wrote: > From: Michael Hennerich > Looks fine to me. > Signed-off-by: Michael Hennerich Acked-by: Jonathan Cameron > --- > drivers/staging/iio/dac/Kconfig | 6 +++--- > drivers/staging/iio/dac/ad5446.c | 27 +++++++++++++++++++++++++-- > drivers/staging/iio/dac/ad5446.h | 2 ++ > 3 files changed, 30 insertions(+), 5 deletions(-) > > diff --git a/drivers/staging/iio/dac/Kconfig b/drivers/staging/iio/dac/Kconfig > index 88914e9..9c497cc 100644 > --- a/drivers/staging/iio/dac/Kconfig > +++ b/drivers/staging/iio/dac/Kconfig > @@ -11,11 +11,11 @@ config AD5624R_SPI > AD5664R convertors (DAC). This driver uses the common SPI interface. > > config AD5446 > - tristate "Analog Devices AD5444, AD5446 DAC SPI driver" > + tristate "Analog Devices AD5444, AD5446 and AD5541A, AD5512A DAC SPI driver" > depends on SPI > help > - Say yes here to build support for Analog Devices AD5444 and AD5446 > - multiplying DACs. > + Say yes here to build support for Analog Devices AD5444, AD5446 > + and AD5541A, AD5512A 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 c70243a..154a7c2 100644 > --- a/drivers/staging/iio/dac/ad5446.c > +++ b/drivers/staging/iio/dac/ad5446.c > @@ -43,8 +43,17 @@ static ssize_t ad5446_write(struct device *dev, > } > > mutex_lock(&dev_info->mlock); > - st->data = cpu_to_be16(AD5446_LOAD | > - (val << st->chip_info->res_shift)); > + switch (spi_get_device_id(st->spi)->driver_data) { > + case ID_AD5444: > + case ID_AD5446: > + st->data = cpu_to_be16(AD5446_LOAD | > + (val << st->chip_info->res_shift)); > + break; > + case ID_AD5542A: > + case ID_AD5512A: > + st->data = cpu_to_be16(val << st->chip_info->res_shift); > + break; > + } > > ret = spi_sync(st->spi, &st->msg); > mutex_unlock(&dev_info->mlock); > @@ -103,6 +112,18 @@ static const struct ad5446_chip_info ad5446_chip_info_tbl[] = { > .res_shift = 0, > .sign = 'u', /* IIO_SCAN_EL_TYPE_UNSIGNED */ > }, > + [ID_AD5542A] = { > + .bits = 16, > + .storagebits = 16, > + .res_shift = 0, > + .sign = 'u', /* IIO_SCAN_EL_TYPE_UNSIGNED */ > + }, > + [ID_AD5512A] = { > + .bits = 12, > + .storagebits = 16, > + .res_shift = 4, > + .sign = 'u', /* IIO_SCAN_EL_TYPE_UNSIGNED */ > + }, > }; > > static int __devinit ad5446_probe(struct spi_device *spi) > @@ -196,6 +217,8 @@ 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}, > {} > }; > > diff --git a/drivers/staging/iio/dac/ad5446.h b/drivers/staging/iio/dac/ad5446.h > index 3456382..0a655f1 100644 > --- a/drivers/staging/iio/dac/ad5446.h > +++ b/drivers/staging/iio/dac/ad5446.h > @@ -39,6 +39,8 @@ struct ad5446_state { > enum ad5446_supported_device_ids { > ID_AD5444, > ID_AD5446, > + ID_AD5542A, > + ID_AD5512A, > }; > > #endif /* IIO_ADC_AD5446_H_ */