|
@@ -460,10 +460,14 @@ static int tsl2563_write_raw(struct iio_dev *indio_dev,
|
|
|
{
|
|
|
struct tsl2563_chip *chip = iio_priv(indio_dev);
|
|
|
|
|
|
- if (chan->channel == IIO_MOD_LIGHT_BOTH)
|
|
|
+ if (mask != IIO_CHAN_INFO_CALIBSCALE)
|
|
|
+ return -EINVAL;
|
|
|
+ if (chan->channel2 == IIO_MOD_LIGHT_BOTH)
|
|
|
chip->calib0 = calib_from_sysfs(val);
|
|
|
- else
|
|
|
+ else if (chan->channel2 == IIO_MOD_LIGHT_IR)
|
|
|
chip->calib1 = calib_from_sysfs(val);
|
|
|
+ else
|
|
|
+ return -EINVAL;
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -472,14 +476,14 @@ static int tsl2563_read_raw(struct iio_dev *indio_dev,
|
|
|
struct iio_chan_spec const *chan,
|
|
|
int *val,
|
|
|
int *val2,
|
|
|
- long m)
|
|
|
+ long mask)
|
|
|
{
|
|
|
int ret = -EINVAL;
|
|
|
u32 calib0, calib1;
|
|
|
struct tsl2563_chip *chip = iio_priv(indio_dev);
|
|
|
|
|
|
mutex_lock(&chip->lock);
|
|
|
- switch (m) {
|
|
|
+ switch (mask) {
|
|
|
case IIO_CHAN_INFO_RAW:
|
|
|
case IIO_CHAN_INFO_PROCESSED:
|
|
|
switch (chan->type) {
|
|
@@ -498,7 +502,7 @@ static int tsl2563_read_raw(struct iio_dev *indio_dev,
|
|
|
ret = tsl2563_get_adc(chip);
|
|
|
if (ret)
|
|
|
goto error_ret;
|
|
|
- if (chan->channel == 0)
|
|
|
+ if (chan->channel2 == IIO_MOD_LIGHT_BOTH)
|
|
|
*val = chip->data0;
|
|
|
else
|
|
|
*val = chip->data1;
|
|
@@ -510,7 +514,7 @@ static int tsl2563_read_raw(struct iio_dev *indio_dev,
|
|
|
break;
|
|
|
|
|
|
case IIO_CHAN_INFO_CALIBSCALE:
|
|
|
- if (chan->channel == 0)
|
|
|
+ if (chan->channel2 == IIO_MOD_LIGHT_BOTH)
|
|
|
*val = calib_to_sysfs(chip->calib0);
|
|
|
else
|
|
|
*val = calib_to_sysfs(chip->calib1);
|