All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Antonio Fiol <antonio@fiol.es>,
	"linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>
Subject: Re: [PATCH] iio: max517: Add support for MAX520 and MAX521 chips.
Date: Sat, 28 Mar 2015 10:57:56 +0000	[thread overview]
Message-ID: <55168934.3050009@kernel.org> (raw)
In-Reply-To: <1427530034-22848-1-git-send-email-antonio@fiol.es>

On 28/03/15 08:07, Antonio Fiol wrote:
> MAX520 and MAX521 are protocol-compatible with the already supported
> chips, just have more channels.
> 
> Signed-off-by: Antonio Fiol <antonio@fiol.es>
Applied to the togreg branch of iio.git - initially pushed out as testing
for the autobuilders to play with it.  Thanks.
> ---
>  drivers/iio/dac/Kconfig        | 11 ++++++++---
>  drivers/iio/dac/max517.c       | 45 +++++++++++++++++++++++++++++++-----------
>  include/linux/iio/dac/max517.h |  2 +-
>  3 files changed, 42 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/iio/dac/Kconfig b/drivers/iio/dac/Kconfig
> index 2236ea2..13471a7 100644
> --- a/drivers/iio/dac/Kconfig
> +++ b/drivers/iio/dac/Kconfig
> @@ -143,11 +143,16 @@ config AD7303
>  	  ad7303.
>  
>  config MAX517
> -	tristate "Maxim MAX517/518/519 DAC driver"
> +	tristate "Maxim MAX517/518/519/520/521 DAC driver"
>  	depends on I2C
>  	help
> -	  If you say yes here you get support for the Maxim chips MAX517,
> -	  MAX518 and MAX519 (I2C 8-Bit DACs with rail-to-rail outputs).
> +	  If you say yes here you get support for the following Maxim chips
> +	  (I2C 8-Bit DACs with rail-to-rail outputs):
> +	  MAX517 - Single channel, single reference
> +	  MAX518 - Dual channel, ref=Vdd
> +	  MAX519 - Dual channel, dual reference
> +	  MAX520 - Quad channel, quad reference
> +	  MAX521 - Octal channel, independent ref for ch0-3, shared ref for ch4-7
>  
>  	  This driver can also be built as a module.  If so, the module
>  	  will be called max517.
> diff --git a/drivers/iio/dac/max517.c b/drivers/iio/dac/max517.c
> index 9a82a72..5507b39 100644
> --- a/drivers/iio/dac/max517.c
> +++ b/drivers/iio/dac/max517.c
> @@ -39,11 +39,13 @@ enum max517_device_ids {
>  	ID_MAX517,
>  	ID_MAX518,
>  	ID_MAX519,
> +	ID_MAX520,
> +	ID_MAX521,
>  };
>  
>  struct max517_data {
>  	struct i2c_client	*client;
> -	unsigned short		vref_mv[2];
> +	unsigned short		vref_mv[8];
>  };
>  
>  /*
> @@ -149,7 +151,13 @@ static const struct iio_info max517_info = {
>  
>  static const struct iio_chan_spec max517_channels[] = {
>  	MAX517_CHANNEL(0),
> -	MAX517_CHANNEL(1)
> +	MAX517_CHANNEL(1),
> +	MAX517_CHANNEL(2),
> +	MAX517_CHANNEL(3),
> +	MAX517_CHANNEL(4),
> +	MAX517_CHANNEL(5),
> +	MAX517_CHANNEL(6),
> +	MAX517_CHANNEL(7),
>  };
>  
>  static int max517_probe(struct i2c_client *client,
> @@ -158,6 +166,7 @@ static int max517_probe(struct i2c_client *client,
>  	struct max517_data *data;
>  	struct iio_dev *indio_dev;
>  	struct max517_platform_data *platform_data = client->dev.platform_data;
> +	int chan;
>  
>  	indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
>  	if (!indio_dev)
> @@ -169,11 +178,21 @@ static int max517_probe(struct i2c_client *client,
>  	/* establish that the iio_dev is a child of the i2c device */
>  	indio_dev->dev.parent = &client->dev;
>  
> -	/* reduced channel set for MAX517 */
> -	if (id->driver_data == ID_MAX517)
> -		indio_dev->num_channels = 1;
> -	else
> +	switch (id->driver_data) {
> +	case ID_MAX521:
> +		indio_dev->num_channels = 8;
> +		break;
> +	case ID_MAX520:
> +		indio_dev->num_channels = 4;
> +		break;
> +	case ID_MAX519:
> +	case ID_MAX518:
>  		indio_dev->num_channels = 2;
> +		break;
> +	default:  /* single channel for MAX517 */
> +		indio_dev->num_channels = 1;
> +		break;
> +	}
>  	indio_dev->channels = max517_channels;
>  	indio_dev->modes = INDIO_DIRECT_MODE;
>  	indio_dev->info = &max517_info;
> @@ -182,11 +201,11 @@ static int max517_probe(struct i2c_client *client,
>  	 * Reference voltage on MAX518 and default is 5V, else take vref_mv
>  	 * from platform_data
>  	 */
> -	if (id->driver_data == ID_MAX518 || !platform_data) {
> -		data->vref_mv[0] = data->vref_mv[1] = 5000; /* mV */
> -	} else {
> -		data->vref_mv[0] = platform_data->vref_mv[0];
> -		data->vref_mv[1] = platform_data->vref_mv[1];
> +	for (chan = 0; chan < indio_dev->num_channels; chan++) {
> +		if (id->driver_data == ID_MAX518 || !platform_data)
> +			data->vref_mv[chan] = 5000; /* mV */
> +		else
> +			data->vref_mv[chan] = platform_data->vref_mv[chan];
>  	}
>  
>  	return iio_device_register(indio_dev);
> @@ -202,6 +221,8 @@ static const struct i2c_device_id max517_id[] = {
>  	{ "max517", ID_MAX517 },
>  	{ "max518", ID_MAX518 },
>  	{ "max519", ID_MAX519 },
> +	{ "max520", ID_MAX520 },
> +	{ "max521", ID_MAX521 },
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(i2c, max517_id);
> @@ -218,5 +239,5 @@ static struct i2c_driver max517_driver = {
>  module_i2c_driver(max517_driver);
>  
>  MODULE_AUTHOR("Roland Stigge <stigge@antcom.de>");
> -MODULE_DESCRIPTION("MAX517/MAX518/MAX519 8-bit DAC");
> +MODULE_DESCRIPTION("MAX517/518/519/520/521 8-bit DAC");
>  MODULE_LICENSE("GPL");
> diff --git a/include/linux/iio/dac/max517.h b/include/linux/iio/dac/max517.h
> index f6d1d25..7668716 100644
> --- a/include/linux/iio/dac/max517.h
> +++ b/include/linux/iio/dac/max517.h
> @@ -9,7 +9,7 @@
>  #define IIO_DAC_MAX517_H_
>  
>  struct max517_platform_data {
> -	u16				vref_mv[2];
> +	u16				vref_mv[8];
>  };
>  
>  #endif /* IIO_DAC_MAX517_H_ */
> 


       reply	other threads:[~2015-03-28 10:57 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1427530034-22848-1-git-send-email-antonio@fiol.es>
2015-03-28 10:57 ` Jonathan Cameron [this message]
2015-02-19 15:22 [PATCH] iio: max517: Add support for MAX520 and MAX521 chips Antonio Fiol Bonnín
2015-02-19 19:00 ` Peter Meerwald

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=55168934.3050009@kernel.org \
    --to=jic23@kernel.org \
    --cc=antonio@fiol.es \
    --cc=linux-iio@vger.kernel.org \
    /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.