Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ecb55b8 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge tag 'iio-fixes-for-3.19a' of...

Merge tag 'iio-fixes-for-3.19a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-linus

Jonathan writes:

First round of IIO fixes for the 3.19 cycle.

* ad799x fix ad7991/ad7995/ad7999 setup as they do not have a configuration
  register to write to.  It is written during the convesion sequence. As
  such we don't want to write to it at other times.
* Fix iio_channel_read utility function to return to ensure it is apparent
  if the relevant element is not there. This avoids using a wrong value
  if some channels have the element and others do not.
parents b7392d22 65de7654
Loading
Loading
Loading
Loading
+13 −2
Original line number Original line Diff line number Diff line
@@ -143,9 +143,15 @@ static int ad799x_write_config(struct ad799x_state *st, u16 val)
	case ad7998:
	case ad7998:
		return i2c_smbus_write_word_swapped(st->client, AD7998_CONF_REG,
		return i2c_smbus_write_word_swapped(st->client, AD7998_CONF_REG,
			val);
			val);
	default:
	case ad7992:
	case ad7993:
	case ad7994:
		return i2c_smbus_write_byte_data(st->client, AD7998_CONF_REG,
		return i2c_smbus_write_byte_data(st->client, AD7998_CONF_REG,
			val);
			val);
	default:
		/* Will be written when doing a conversion */
		st->config = val;
		return 0;
	}
	}
}
}


@@ -155,8 +161,13 @@ static int ad799x_read_config(struct ad799x_state *st)
	case ad7997:
	case ad7997:
	case ad7998:
	case ad7998:
		return i2c_smbus_read_word_swapped(st->client, AD7998_CONF_REG);
		return i2c_smbus_read_word_swapped(st->client, AD7998_CONF_REG);
	default:
	case ad7992:
	case ad7993:
	case ad7994:
		return i2c_smbus_read_byte_data(st->client, AD7998_CONF_REG);
		return i2c_smbus_read_byte_data(st->client, AD7998_CONF_REG);
	default:
		/* No readback support */
		return st->config;
	}
	}
}
}


+3 −0
Original line number Original line Diff line number Diff line
@@ -449,6 +449,9 @@ static int iio_channel_read(struct iio_channel *chan, int *val, int *val2,
	if (val2 == NULL)
	if (val2 == NULL)
		val2 = &unused;
		val2 = &unused;


	if(!iio_channel_has_info(chan->channel, info))
		return -EINVAL;

	if (chan->indio_dev->info->read_raw_multi) {
	if (chan->indio_dev->info->read_raw_multi) {
		ret = chan->indio_dev->info->read_raw_multi(chan->indio_dev,
		ret = chan->indio_dev->info->read_raw_multi(chan->indio_dev,
					chan->channel, INDIO_MAX_RAW_ELEMENTS,
					chan->channel, INDIO_MAX_RAW_ELEMENTS,