From: Jonathan Cameron <jic23@cam.ac.uk>
To: michael.hennerich@analog.com
Cc: linux-iio@vger.kernel.org, drivers@analog.com,
device-drivers-devel@blackfin.uclinux.org
Subject: Re: [PATCH] IIO: DAC: AD5791: Add support for the AD5760/AD5780 High Resolution DACs
Date: Wed, 27 Apr 2011 16:14:35 +0100 [thread overview]
Message-ID: <4DB832DB.9000202@cam.ac.uk> (raw)
In-Reply-To: <1303910679-11593-1-git-send-email-michael.hennerich@analog.com>
On 04/27/11 14:24, michael.hennerich@analog.com wrote:
> From: Michael Hennerich <michael.hennerich@analog.com>
>
> Add support for the AD5760/AD5780 High Resolution Voltage Output DACs
>
> Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
> ---
> drivers/staging/iio/dac/Kconfig | 7 +++--
> drivers/staging/iio/dac/ad5791.c | 54 ++++++++++++++++++++++++++-----------
> drivers/staging/iio/dac/ad5791.h | 9 +++++-
> 3 files changed, 50 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/staging/iio/dac/Kconfig b/drivers/staging/iio/dac/Kconfig
> index f25468a..d5a5556 100644
> --- a/drivers/staging/iio/dac/Kconfig
> +++ b/drivers/staging/iio/dac/Kconfig
> @@ -32,11 +32,12 @@ config AD5504
> module will be called ad5504.
>
> config AD5791
> - tristate "Analog Devices AD5781/AD5791 DAC SPI driver"
> + tristate "Analog Devices AD5760/AD5780/AD5781/AD5791 DAC SPI driver"
> depends on SPI
> help
> - Say yes here to build support for Analog Devices AD5781, AD5791,
> - High Resolution Voltage Output Digital to Analog Converter.
> + Say yes here to build support for Analog Devices AD5760, AD5780,
> + AD5781, AD5791 High Resolution Voltage Output Digital to
> + Analog Converter.
>
> To compile this driver as a module, choose M here: the
> module will be called ad5791.
> diff --git a/drivers/staging/iio/dac/ad5791.c b/drivers/staging/iio/dac/ad5791.c
> index c4a258d..acfd13b 100644
> --- a/drivers/staging/iio/dac/ad5791.c
> +++ b/drivers/staging/iio/dac/ad5791.c
> @@ -1,5 +1,5 @@
> /*
> - * AD5791, AD5791 Voltage Output Digital to Analog Converter
> + * AD5760, AD5780, AD5781, AD5791 Voltage Output Digital to Analog Converter
> *
> * Copyright 2011 Analog Devices Inc.
> *
> @@ -242,17 +242,6 @@ static const struct attribute_group ad5791_attribute_group = {
> .attrs = ad5791_attributes,
> };
>
> -static const struct ad5791_chip_info ad5791_chip_info_tbl[] = {
> - [ID_AD5791] = {
> - .bits = 20,
> - .left_shift = 0,
> - },
> - [ID_AD5781] = {
> - .bits = 18,
> - .left_shift = 2,
> - },
> -};
> -
> static int ad5791_get_lin_comp(unsigned int span)
> {
> if (span <= 10000)
> @@ -267,6 +256,37 @@ static int ad5791_get_lin_comp(unsigned int span)
> return AD5791_LINCOMP_19_20;
> }
>
> +static int ad5780_get_lin_comp(unsigned int span)
> +{
> + if (span <= 10000)
> + return AD5780_LINCOMP_0_10;
> + else
> + return AD5780_LINCOMP_10_20;
> +}
> +
> +static const struct ad5791_chip_info ad5791_chip_info_tbl[] = {
> + [ID_AD5760] = {
> + .bits = 16,
> + .left_shift = 4,
> + .get_lin_comp = ad5780_get_lin_comp,
> + },
> + [ID_AD5780] = {
> + .bits = 18,
> + .left_shift = 2,
> + .get_lin_comp = ad5780_get_lin_comp,
> + },
> + [ID_AD5781] = {
> + .bits = 18,
> + .left_shift = 2,
> + .get_lin_comp = ad5791_get_lin_comp,
> + },
> + [ID_AD5791] = {
> + .bits = 20,
> + .left_shift = 0,
> + .get_lin_comp = ad5791_get_lin_comp,
> + },
> +};
> +
> static int __devinit ad5791_probe(struct spi_device *spi)
> {
> struct ad5791_platform_data *pdata = spi->dev.platform_data;
> @@ -314,8 +334,8 @@ static int __devinit ad5791_probe(struct spi_device *spi)
> &ad5791_chip_info_tbl[spi_get_device_id(spi)->driver_data];
>
>
> - st->ctrl = AD5761_CTRL_LINCOMP(ad5791_get_lin_comp(st->vref_mv)) |
> - ((pdata && pdata->use_rbuf_gain2) ? 0 : AD5791_CTRL_RBUF) |
> + st->ctrl = AD5761_CTRL_LINCOMP(st->chip_info->get_lin_comp(st->vref_mv))
> + | ((pdata && pdata->use_rbuf_gain2) ? 0 : AD5791_CTRL_RBUF) |
> AD5791_CTRL_BIN2SC;
>
> ret = ad5791_spi_write(spi, AD5791_ADDR_CTRL, st->ctrl |
> @@ -386,8 +406,10 @@ static int __devexit ad5791_remove(struct spi_device *spi)
> }
>
> static const struct spi_device_id ad5791_id[] = {
> - {"ad5791", ID_AD5791},
> + {"ad5760", ID_AD5760},
> + {"ad5780", ID_AD5780},
> {"ad5781", ID_AD5781},
> + {"ad5791", ID_AD5791},
> {}
> };
>
> @@ -414,5 +436,5 @@ static __exit void ad5791_spi_exit(void)
> module_exit(ad5791_spi_exit);
>
> MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>");
> -MODULE_DESCRIPTION("Analog Devices AD5791/AD5781 DAC");
> +MODULE_DESCRIPTION("Analog Devices AD5760/AD5780/AD5781/AD5791 DAC");
> MODULE_LICENSE("GPL v2");
> diff --git a/drivers/staging/iio/dac/ad5791.h b/drivers/staging/iio/dac/ad5791.h
> index 71c7d59..f09ad9a 100644
> --- a/drivers/staging/iio/dac/ad5791.h
> +++ b/drivers/staging/iio/dac/ad5791.h
> @@ -38,6 +38,9 @@
> #define AD5791_LINCOMP_16_19 3
> #define AD5791_LINCOMP_19_20 12
>
> +#define AD5780_LINCOMP_0_10 0
> +#define AD5780_LINCOMP_10_20 12
> +
> /* Software Control Register */
> #define AD5791_SWCTRL_LDAC (1 << 0)
> #define AD5791_SWCTRL_CLR (1 << 1)
> @@ -67,11 +70,13 @@ struct ad5791_platform_data {
> * struct ad5791_chip_info - chip specific information
> * @bits: accuracy of the DAC in bits
> * @left_shift: number of bits the datum must be shifted
> + * @get_lin_comp: function pointer to the device specific function
> */
>
> struct ad5791_chip_info {
> u8 bits;
> u8 left_shift;
> + int (*get_lin_comp) (unsigned int span);
> };
>
> /**
> @@ -102,8 +107,10 @@ struct ad5791_state {
> */
>
> enum ad5791_supported_device_ids {
> - ID_AD5791,
> + ID_AD5760,
> + ID_AD5780,
> ID_AD5781,
> + ID_AD5791,
> };
>
> #endif /* SPI_AD5791_H_ */
next prev parent reply other threads:[~2011-04-27 15:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-27 13:24 [PATCH] IIO: DAC: AD5791: Add support for the AD5760/AD5780 High Resolution DACs michael.hennerich
2011-04-27 15:14 ` Jonathan Cameron [this message]
-- strict thread matches above, loose matches on Subject: below --
2011-04-27 15:13 michael.hennerich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4DB832DB.9000202@cam.ac.uk \
--to=jic23@cam.ac.uk \
--cc=device-drivers-devel@blackfin.uclinux.org \
--cc=drivers@analog.com \
--cc=linux-iio@vger.kernel.org \
--cc=michael.hennerich@analog.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.