From: Jonathan Cameron <jic23@kernel.org>
To: Octavian Purdila <octavian.purdila@intel.com>, linux-iio@vger.kernel.org
Subject: Re: [PATCH] iio: fix drivers that check buffer->scan_mask
Date: Sat, 07 Mar 2015 19:15:00 +0000 [thread overview]
Message-ID: <54FB4E34.7010404@kernel.org> (raw)
In-Reply-To: <1425322985-24190-1-git-send-email-octavian.purdila@intel.com>
On 02/03/15 19:03, Octavian Purdila wrote:
> If the in-kernel push interface is used we may have a different masks
> on the device buffer and the kernel buffer and in this case the device
> should generate data for the reunion of the buffers, which is
> available at indio_dev->active_scan_mask.
>
> Compiled tested only except for bmc150-accel which was tested at
> runtime with the hardware.
>
> Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
Hmm. I'm going to take this via the togreg branch rather than
through fixes. We don't have any mainline users of the functionality
that this will cause issues with yet. For that matter I don't actually
know of anyone using it in anger outside mainline either.
If anyone thinks I should send this via the fixes branch and mark
it for stable then let me know.
Jonathan
> ---
> drivers/iio/accel/bma180.c | 2 +-
> drivers/iio/accel/bmc150-accel.c | 2 +-
> drivers/iio/accel/kxcjk-1013.c | 2 +-
> drivers/iio/adc/at91_adc.c | 5 ++---
> drivers/iio/adc/ti_am335x_adc.c | 3 +--
> drivers/iio/gyro/bmg160.c | 2 +-
> drivers/iio/imu/kmx61.c | 2 +-
> drivers/iio/proximity/sx9500.c | 2 +-
> 8 files changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c
> index 1096da3..75c6d21 100644
> --- a/drivers/iio/accel/bma180.c
> +++ b/drivers/iio/accel/bma180.c
> @@ -659,7 +659,7 @@ static irqreturn_t bma180_trigger_handler(int irq, void *p)
>
> mutex_lock(&data->mutex);
>
> - for_each_set_bit(bit, indio_dev->buffer->scan_mask,
> + for_each_set_bit(bit, indio_dev->active_scan_mask,
> indio_dev->masklength) {
> ret = bma180_get_data_reg(data, bit);
> if (ret < 0) {
> diff --git a/drivers/iio/accel/bmc150-accel.c b/drivers/iio/accel/bmc150-accel.c
> index 46ac965..8004ce3 100644
> --- a/drivers/iio/accel/bmc150-accel.c
> +++ b/drivers/iio/accel/bmc150-accel.c
> @@ -929,7 +929,7 @@ static irqreturn_t bmc150_accel_trigger_handler(int irq, void *p)
> int bit, ret, i = 0;
>
> mutex_lock(&data->mutex);
> - for_each_set_bit(bit, indio_dev->buffer->scan_mask,
> + for_each_set_bit(bit, indio_dev->active_scan_mask,
> indio_dev->masklength) {
> ret = i2c_smbus_read_word_data(data->client,
> BMC150_ACCEL_AXIS_TO_REG(bit));
> diff --git a/drivers/iio/accel/kxcjk-1013.c b/drivers/iio/accel/kxcjk-1013.c
> index a98b5d2..51da369 100644
> --- a/drivers/iio/accel/kxcjk-1013.c
> +++ b/drivers/iio/accel/kxcjk-1013.c
> @@ -956,7 +956,7 @@ static irqreturn_t kxcjk1013_trigger_handler(int irq, void *p)
>
> mutex_lock(&data->mutex);
>
> - for_each_set_bit(bit, indio_dev->buffer->scan_mask,
> + for_each_set_bit(bit, indio_dev->active_scan_mask,
> indio_dev->masklength) {
> ret = kxcjk1013_get_acc_reg(data, bit);
> if (ret < 0) {
> diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
> index ff61ae5..8a0eb4a 100644
> --- a/drivers/iio/adc/at91_adc.c
> +++ b/drivers/iio/adc/at91_adc.c
> @@ -544,7 +544,6 @@ static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state)
> {
> struct iio_dev *idev = iio_trigger_get_drvdata(trig);
> struct at91_adc_state *st = iio_priv(idev);
> - struct iio_buffer *buffer = idev->buffer;
> struct at91_adc_reg_desc *reg = st->registers;
> u32 status = at91_adc_readl(st, reg->trigger_register);
> int value;
> @@ -564,7 +563,7 @@ static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state)
> at91_adc_writel(st, reg->trigger_register,
> status | value);
>
> - for_each_set_bit(bit, buffer->scan_mask,
> + for_each_set_bit(bit, idev->active_scan_mask,
> st->num_channels) {
> struct iio_chan_spec const *chan = idev->channels + bit;
> at91_adc_writel(st, AT91_ADC_CHER,
> @@ -579,7 +578,7 @@ static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state)
> at91_adc_writel(st, reg->trigger_register,
> status & ~value);
>
> - for_each_set_bit(bit, buffer->scan_mask,
> + for_each_set_bit(bit, idev->active_scan_mask,
> st->num_channels) {
> struct iio_chan_spec const *chan = idev->channels + bit;
> at91_adc_writel(st, AT91_ADC_CHDR,
> diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c
> index 5eea299..29de6c8 100644
> --- a/drivers/iio/adc/ti_am335x_adc.c
> +++ b/drivers/iio/adc/ti_am335x_adc.c
> @@ -189,12 +189,11 @@ static int tiadc_buffer_preenable(struct iio_dev *indio_dev)
> static int tiadc_buffer_postenable(struct iio_dev *indio_dev)
> {
> struct tiadc_device *adc_dev = iio_priv(indio_dev);
> - struct iio_buffer *buffer = indio_dev->buffer;
> unsigned int enb = 0;
> u8 bit;
>
> tiadc_step_config(indio_dev);
> - for_each_set_bit(bit, buffer->scan_mask, adc_dev->channels)
> + for_each_set_bit(bit, indio_dev->active_scan_mask, adc_dev->channels)
> enb |= (get_adc_step_bit(adc_dev, bit) << 1);
> adc_dev->buffer_en_ch_steps = enb;
>
> diff --git a/drivers/iio/gyro/bmg160.c b/drivers/iio/gyro/bmg160.c
> index 56d68e1..4415f55 100644
> --- a/drivers/iio/gyro/bmg160.c
> +++ b/drivers/iio/gyro/bmg160.c
> @@ -822,7 +822,7 @@ static irqreturn_t bmg160_trigger_handler(int irq, void *p)
> int bit, ret, i = 0;
>
> mutex_lock(&data->mutex);
> - for_each_set_bit(bit, indio_dev->buffer->scan_mask,
> + for_each_set_bit(bit, indio_dev->active_scan_mask,
> indio_dev->masklength) {
> ret = i2c_smbus_read_word_data(data->client,
> BMG160_AXIS_TO_REG(bit));
> diff --git a/drivers/iio/imu/kmx61.c b/drivers/iio/imu/kmx61.c
> index 75ab701..462a010 100644
> --- a/drivers/iio/imu/kmx61.c
> +++ b/drivers/iio/imu/kmx61.c
> @@ -1215,7 +1215,7 @@ static irqreturn_t kmx61_trigger_handler(int irq, void *p)
> base = KMX61_MAG_XOUT_L;
>
> mutex_lock(&data->lock);
> - for_each_set_bit(bit, indio_dev->buffer->scan_mask,
> + for_each_set_bit(bit, indio_dev->active_scan_mask,
> indio_dev->masklength) {
> ret = kmx61_read_measurement(data, base, bit);
> if (ret < 0) {
> diff --git a/drivers/iio/proximity/sx9500.c b/drivers/iio/proximity/sx9500.c
> index 0b4d794..fa40f6d 100644
> --- a/drivers/iio/proximity/sx9500.c
> +++ b/drivers/iio/proximity/sx9500.c
> @@ -494,7 +494,7 @@ static irqreturn_t sx9500_trigger_handler(int irq, void *private)
>
> mutex_lock(&data->mutex);
>
> - for_each_set_bit(bit, indio_dev->buffer->scan_mask,
> + for_each_set_bit(bit, indio_dev->active_scan_mask,
> indio_dev->masklength) {
> ret = sx9500_read_proximity(data, &indio_dev->channels[bit],
> &val);
>
next prev parent reply other threads:[~2015-03-07 19:15 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-02 19:03 [PATCH] iio: fix drivers that check buffer->scan_mask Octavian Purdila
2015-03-07 19:15 ` Jonathan Cameron [this message]
2015-03-07 19:16 ` Jonathan Cameron
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=54FB4E34.7010404@kernel.org \
--to=jic23@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=octavian.purdila@intel.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.