All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Lars-Peter Clausen <lars@metafoo.de>
Cc: linux-iio@vger.kernel.org
Subject: Re: [PATCH 10/18] staging:iio:ad799x: Switch to new event config interface
Date: Mon, 30 Sep 2013 21:59:13 +0100	[thread overview]
Message-ID: <5249E621.9080603@kernel.org> (raw)
In-Reply-To: <1380200317-19355-10-git-send-email-lars@metafoo.de>

On 09/26/13 13:58, Lars-Peter Clausen wrote:
> Switch the ad799x driver to the new IIO event config interface as the old one
> is going to be removed.
> 
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
> ---
>  drivers/staging/iio/adc/ad799x_core.c | 139 ++++++++++++++++++++--------------
>  1 file changed, 82 insertions(+), 57 deletions(-)
> 
> diff --git a/drivers/staging/iio/adc/ad799x_core.c b/drivers/staging/iio/adc/ad799x_core.c
> index 3f5142b..2b51cb4 100644
> --- a/drivers/staging/iio/adc/ad799x_core.c
> +++ b/drivers/staging/iio/adc/ad799x_core.c
> @@ -254,7 +254,9 @@ error_ret_mutex:
>  }
>  
>  static int ad799x_read_event_config(struct iio_dev *indio_dev,
> -				    u64 event_code)
> +				    const struct iio_chan_spec *chan,
> +				    enum iio_event_type type,
> +				    enum iio_event_direction dir)
>  {
>  	return 1;
>  }
> @@ -267,14 +269,16 @@ static const u8 ad799x_threshold_addresses[][2] = {
>  };
>  
>  static int ad799x_write_event_value(struct iio_dev *indio_dev,
> -				    u64 event_code,
> +				    const struct iio_chan_spec *chan,
> +				    enum iio_event_type type,
> +				    enum iio_event_direction dir,
> +					enum iio_event_info info,
Slightly odd white space here.
>  				    int val)
>  {
>  	int ret;
>  	struct ad799x_state *st = iio_priv(indio_dev);
> -	int direction = !!(IIO_EVENT_CODE_EXTRACT_DIR(event_code) ==
> -			   IIO_EV_DIR_FALLING);
> -	int number = IIO_EVENT_CODE_EXTRACT_CHAN(event_code);
> +	int direction = dir == IIO_EV_DIR_FALLING;
> +	int number = chan->channel;
>  
>  	mutex_lock(&indio_dev->mlock);
>  	ret = ad799x_i2c_write16(st,
> @@ -286,14 +290,16 @@ static int ad799x_write_event_value(struct iio_dev *indio_dev,
>  }
>  
>  static int ad799x_read_event_value(struct iio_dev *indio_dev,
> -				    u64 event_code,
> +				    const struct iio_chan_spec *chan,
> +				    enum iio_event_type type,
> +				    enum iio_event_direction dir,
> +					enum iio_event_info info,
Also here for some reason.
>  				    int *val)
>  {
>  	int ret;
>  	struct ad799x_state *st = iio_priv(indio_dev);
> -	int direction = !!(IIO_EVENT_CODE_EXTRACT_DIR(event_code) ==
> -			   IIO_EV_DIR_FALLING);
> -	int number = IIO_EVENT_CODE_EXTRACT_CHAN(event_code);
> +	int direction = dir == IIO_EV_DIR_FALLING;
> +	int number = chan->channel;
>  	u16 valin;
>  
>  	mutex_lock(&indio_dev->mlock);
> @@ -448,26 +454,37 @@ static const struct iio_info ad7991_info = {
>  static const struct iio_info ad7992_info = {
>  	.read_raw = &ad799x_read_raw,
>  	.event_attrs = &ad7992_event_attrs_group,
> -	.read_event_config = &ad799x_read_event_config,
> -	.read_event_value = &ad799x_read_event_value,
> -	.write_event_value = &ad799x_write_event_value,
> +	.read_event_config_new = &ad799x_read_event_config,
> +	.read_event_value_new = &ad799x_read_event_value,
> +	.write_event_value_new = &ad799x_write_event_value,
>  	.driver_module = THIS_MODULE,
>  };
>  
>  static const struct iio_info ad7993_4_7_8_info = {
>  	.read_raw = &ad799x_read_raw,
>  	.event_attrs = &ad7993_4_7_8_event_attrs_group,
> -	.read_event_config = &ad799x_read_event_config,
> -	.read_event_value = &ad799x_read_event_value,
> -	.write_event_value = &ad799x_write_event_value,
> +	.read_event_config_new = &ad799x_read_event_config,
> +	.read_event_value_new = &ad799x_read_event_value,
> +	.write_event_value_new = &ad799x_write_event_value,
>  	.driver_module = THIS_MODULE,
>  	.update_scan_mode = ad7997_8_update_scan_mode,
>  };
>  
> -#define AD799X_EV_MASK (IIO_EV_BIT(IIO_EV_TYPE_THRESH, IIO_EV_DIR_RISING) | \
> -			IIO_EV_BIT(IIO_EV_TYPE_THRESH, IIO_EV_DIR_FALLING))
> +static const struct iio_event_spec ad799x_events[] = {
> +	{
> +		.type = IIO_EV_TYPE_THRESH,
> +		.dir = IIO_EV_DIR_RISING,
> +		.mask_separate = BIT(IIO_EV_INFO_VALUE) |
> +			BIT(IIO_EV_INFO_ENABLE),
> +	}, {
> +		.type = IIO_EV_TYPE_THRESH,
> +		.dir = IIO_EV_DIR_FALLING,
> +		.mask_separate = BIT(IIO_EV_INFO_VALUE),
> +			BIT(IIO_EV_INFO_ENABLE),
> +	},
> +};
>  
> -#define AD799X_CHANNEL(_index, _realbits, _evmask) { \
> +#define _AD799X_CHANNEL(_index, _realbits, _ev_spec, _num_ev_spec) { \
>  	.type = IIO_VOLTAGE, \
>  	.indexed = 1, \
>  	.channel = (_index), \
> @@ -475,16 +492,24 @@ static const struct iio_info ad7993_4_7_8_info = {
>  	.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \
>  	.scan_index = (_index), \
>  	.scan_type = IIO_ST('u', _realbits, 16, 12 - (_realbits)), \
> -	.event_mask = (_evmask), \
> +	.event_spec = _ev_spec, \
> +	.num_event_specs = _num_ev_spec, \
>  }
>  
> +#define AD799X_CHANNEL(_index, _realbits) \
> +	_AD799X_CHANNEL(_index, _realbits, NULL, 0)
> +
> +#define AD799X_CHANNEL_WITH_EVENTS(_index, _realbits) \
> +	_AD799X_CHANNEL(_index, _realbits, ad799x_events, \
> +		ARRAY_SIZE(ad799x_events))
> +
>  static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	[ad7991] = {
>  		.channel = {
> -			AD799X_CHANNEL(0, 12, 0),
> -			AD799X_CHANNEL(1, 12, 0),
> -			AD799X_CHANNEL(2, 12, 0),
> -			AD799X_CHANNEL(3, 12, 0),
> +			AD799X_CHANNEL(0, 12),
> +			AD799X_CHANNEL(1, 12),
> +			AD799X_CHANNEL(2, 12),
> +			AD799X_CHANNEL(3, 12),
>  			IIO_CHAN_SOFT_TIMESTAMP(4),
>  		},
>  		.num_channels = 5,
> @@ -492,10 +517,10 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7995] = {
>  		.channel = {
> -			AD799X_CHANNEL(0, 10, 0),
> -			AD799X_CHANNEL(1, 10, 0),
> -			AD799X_CHANNEL(2, 10, 0),
> -			AD799X_CHANNEL(3, 10, 0),
> +			AD799X_CHANNEL(0, 10),
> +			AD799X_CHANNEL(1, 10),
> +			AD799X_CHANNEL(2, 10),
> +			AD799X_CHANNEL(3, 10),
>  			IIO_CHAN_SOFT_TIMESTAMP(4),
>  		},
>  		.num_channels = 5,
> @@ -503,10 +528,10 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7999] = {
>  		.channel = {
> -			AD799X_CHANNEL(0, 8, 0),
> -			AD799X_CHANNEL(1, 8, 0),
> -			AD799X_CHANNEL(2, 8, 0),
> -			AD799X_CHANNEL(3, 8, 0),
> +			AD799X_CHANNEL(0, 8),
> +			AD799X_CHANNEL(1, 8),
> +			AD799X_CHANNEL(2, 8),
> +			AD799X_CHANNEL(3, 8),
>  			IIO_CHAN_SOFT_TIMESTAMP(4),
>  		},
>  		.num_channels = 5,
> @@ -514,8 +539,8 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7992] = {
>  		.channel = {
> -			AD799X_CHANNEL(0, 12, AD799X_EV_MASK),
> -			AD799X_CHANNEL(1, 12, AD799X_EV_MASK),
> +			AD799X_CHANNEL_WITH_EVENTS(0, 12),
> +			AD799X_CHANNEL_WITH_EVENTS(1, 12),
>  			IIO_CHAN_SOFT_TIMESTAMP(3),
>  		},
>  		.num_channels = 3,
> @@ -524,10 +549,10 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7993] = {
>  		.channel = {
> -			AD799X_CHANNEL(0, 10, AD799X_EV_MASK),
> -			AD799X_CHANNEL(1, 10, AD799X_EV_MASK),
> -			AD799X_CHANNEL(2, 10, AD799X_EV_MASK),
> -			AD799X_CHANNEL(3, 10, AD799X_EV_MASK),
> +			AD799X_CHANNEL_WITH_EVENTS(0, 10),
> +			AD799X_CHANNEL_WITH_EVENTS(1, 10),
> +			AD799X_CHANNEL_WITH_EVENTS(2, 10),
> +			AD799X_CHANNEL_WITH_EVENTS(3, 10),
>  			IIO_CHAN_SOFT_TIMESTAMP(4),
>  		},
>  		.num_channels = 5,
> @@ -536,10 +561,10 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7994] = {
>  		.channel = {
> -			AD799X_CHANNEL(0, 12, AD799X_EV_MASK),
> -			AD799X_CHANNEL(1, 12, AD799X_EV_MASK),
> -			AD799X_CHANNEL(2, 12, AD799X_EV_MASK),
> -			AD799X_CHANNEL(3, 12, AD799X_EV_MASK),
> +			AD799X_CHANNEL_WITH_EVENTS(0, 12),
> +			AD799X_CHANNEL_WITH_EVENTS(1, 12),
> +			AD799X_CHANNEL_WITH_EVENTS(2, 12),
> +			AD799X_CHANNEL_WITH_EVENTS(3, 12),
>  			IIO_CHAN_SOFT_TIMESTAMP(4),
>  		},
>  		.num_channels = 5,
> @@ -548,14 +573,14 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7997] = {
>  		.channel = {
> -			AD799X_CHANNEL(0, 10, AD799X_EV_MASK),
> -			AD799X_CHANNEL(1, 10, AD799X_EV_MASK),
> -			AD799X_CHANNEL(2, 10, AD799X_EV_MASK),
> -			AD799X_CHANNEL(3, 10, AD799X_EV_MASK),
> -			AD799X_CHANNEL(4, 10, 0),
> -			AD799X_CHANNEL(5, 10, 0),
> -			AD799X_CHANNEL(6, 10, 0),
> -			AD799X_CHANNEL(7, 10, 0),
> +			AD799X_CHANNEL_WITH_EVENTS(0, 10),
> +			AD799X_CHANNEL_WITH_EVENTS(1, 10),
> +			AD799X_CHANNEL_WITH_EVENTS(2, 10),
> +			AD799X_CHANNEL_WITH_EVENTS(3, 10),
> +			AD799X_CHANNEL(4, 10),
> +			AD799X_CHANNEL(5, 10),
> +			AD799X_CHANNEL(6, 10),
> +			AD799X_CHANNEL(7, 10),
>  			IIO_CHAN_SOFT_TIMESTAMP(8),
>  		},
>  		.num_channels = 9,
> @@ -564,14 +589,14 @@ static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
>  	},
>  	[ad7998] = {
>  		.channel = {
> -			AD799X_CHANNEL(0, 12, AD799X_EV_MASK),
> -			AD799X_CHANNEL(1, 12, AD799X_EV_MASK),
> -			AD799X_CHANNEL(2, 12, AD799X_EV_MASK),
> -			AD799X_CHANNEL(3, 12, AD799X_EV_MASK),
> -			AD799X_CHANNEL(4, 12, 0),
> -			AD799X_CHANNEL(5, 12, 0),
> -			AD799X_CHANNEL(6, 12, 0),
> -			AD799X_CHANNEL(7, 12, 0),
> +			AD799X_CHANNEL_WITH_EVENTS(0, 12),
> +			AD799X_CHANNEL_WITH_EVENTS(1, 12),
> +			AD799X_CHANNEL_WITH_EVENTS(2, 12),
> +			AD799X_CHANNEL_WITH_EVENTS(3, 12),
> +			AD799X_CHANNEL(4, 12),
> +			AD799X_CHANNEL(5, 12),
> +			AD799X_CHANNEL(6, 12),
> +			AD799X_CHANNEL(7, 12),
>  			IIO_CHAN_SOFT_TIMESTAMP(8),
>  		},
>  		.num_channels = 9,
> 

  reply	other threads:[~2013-09-30 19:58 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-26 12:58 [PATCH 01/18] iio: Extend the event config interface Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 02/18] iio:max1363: Switch to new " Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 03/18] iio:ad5421: " Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 04/18] iio:gp2ap020a00f: " Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 05/18] iio:tsl2563: " Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 06/18] iio:apds9300: Use " Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 07/18] staging:iio:lis3l02dq: Switch to " Lars-Peter Clausen
2013-09-30 20:55   ` Jonathan Cameron
2013-10-01  7:51     ` Lars-Peter Clausen
2013-10-01  9:14       ` Jonathan Cameron
2013-09-26 12:58 ` [PATCH 08/18] staging:iio:sca3000: Switch to new " Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 09/18] staging:iio:ad7291: Switch to new event " Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 10/18] staging:iio:ad799x: " Lars-Peter Clausen
2013-09-30 20:59   ` Jonathan Cameron [this message]
2013-09-26 12:58 ` [PATCH 11/18] staging:iio:ad7150: " Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 12/18] staging:iio:simple_dummy: " Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 13/18] staging:iio:tsl2x7x: " Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 14/18] iio: Remove support for the legacy " Lars-Peter Clausen
2013-09-30 21:05   ` Jonathan Cameron
2013-10-01  7:52     ` Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 15/18] iio: Add a hysteresis event info attribute Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 16/18] staging:iio:ad799x: Simplify threshold register look-up Lars-Peter Clausen
2013-09-26 12:58 ` [PATCH 17/18] staging:iio:ad799x: Use event spec for threshold hysteresis Lars-Peter Clausen
2013-09-30 21:10   ` Jonathan Cameron
2013-09-26 12:58 ` [PATCH 18/18] staging:iio:ad7291: " Lars-Peter Clausen
2013-09-29 18:44 ` [PATCH 01/18] iio: Extend the event config interface Jonathan Cameron
2013-09-29 18:56   ` Lars-Peter Clausen
2013-09-29 20:17     ` Jonathan Cameron
2013-09-29 19:35       ` Lars-Peter Clausen
2013-09-30 20:54         ` Jonathan Cameron
2013-10-04  8:38       ` Lars-Peter Clausen

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=5249E621.9080603@kernel.org \
    --to=jic23@kernel.org \
    --cc=lars@metafoo.de \
    --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.