mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 16:07:39 +00:00
staging:iio:accel: lis3l02dq add writing for calibscale and calibbias.
This was missed out in original chan_spec conversion. Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
01a99e1823
commit
1e8fa5b863
1 changed files with 29 additions and 0 deletions
|
@ -218,6 +218,34 @@ static int lis3l02dq_write_thresh(struct iio_dev *indio_dev,
|
||||||
value);
|
value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int lis3l02dq_write_raw(struct iio_dev *indio_dev,
|
||||||
|
struct iio_chan_spec const *chan,
|
||||||
|
int val,
|
||||||
|
int val2,
|
||||||
|
long mask)
|
||||||
|
{
|
||||||
|
int ret = -EINVAL, reg;
|
||||||
|
u8 uval;
|
||||||
|
s8 sval;
|
||||||
|
switch (mask) {
|
||||||
|
case (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE):
|
||||||
|
if (val > 255 || val < -256)
|
||||||
|
return -EINVAL;
|
||||||
|
sval = val;
|
||||||
|
reg = lis3l02dq_axis_map[LIS3L02DQ_BIAS][chan->address];
|
||||||
|
ret = lis3l02dq_spi_write_reg_8(indio_dev, reg, (u8 *)&sval);
|
||||||
|
break;
|
||||||
|
case (1 << IIO_CHAN_INFO_CALIBSCALE_SEPARATE):
|
||||||
|
if (val & ~0xFF)
|
||||||
|
return -EINVAL;
|
||||||
|
uval = val;
|
||||||
|
reg = lis3l02dq_axis_map[LIS3L02DQ_GAIN][chan->address];
|
||||||
|
ret = lis3l02dq_spi_write_reg_8(indio_dev, reg, &uval);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int lis3l02dq_read_raw(struct iio_dev *indio_dev,
|
static int lis3l02dq_read_raw(struct iio_dev *indio_dev,
|
||||||
struct iio_chan_spec const *chan,
|
struct iio_chan_spec const *chan,
|
||||||
int *val,
|
int *val,
|
||||||
|
@ -692,6 +720,7 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
|
||||||
st->help.indio_dev->channels = lis3l02dq_channels;
|
st->help.indio_dev->channels = lis3l02dq_channels;
|
||||||
st->help.indio_dev->num_channels = ARRAY_SIZE(lis3l02dq_channels);
|
st->help.indio_dev->num_channels = ARRAY_SIZE(lis3l02dq_channels);
|
||||||
st->help.indio_dev->read_raw = &lis3l02dq_read_raw;
|
st->help.indio_dev->read_raw = &lis3l02dq_read_raw;
|
||||||
|
st->help.indio_dev->write_raw = &lis3l02dq_write_raw;
|
||||||
st->help.indio_dev->read_event_value = &lis3l02dq_read_thresh;
|
st->help.indio_dev->read_event_value = &lis3l02dq_read_thresh;
|
||||||
st->help.indio_dev->write_event_value = &lis3l02dq_write_thresh;
|
st->help.indio_dev->write_event_value = &lis3l02dq_write_thresh;
|
||||||
st->help.indio_dev->write_event_config = &lis3l02dq_write_event_config;
|
st->help.indio_dev->write_event_config = &lis3l02dq_write_event_config;
|
||||||
|
|
Loading…
Reference in a new issue