diff options
| -rw-r--r-- | drivers/iio/adc/ti_am335x_adc.c | 1 | ||||
| -rw-r--r-- | drivers/iio/dac/ad7303.c | 4 | ||||
| -rw-r--r-- | drivers/iio/industrialio-trigger.c | 2 | ||||
| -rw-r--r-- | drivers/iio/inkern.c | 2 | ||||
| -rw-r--r-- | drivers/iio/pressure/st_pressure_core.c | 6 | ||||
| -rw-r--r-- | drivers/staging/iio/accel/lis3l02dq_core.c | 2 | ||||
| -rw-r--r-- | drivers/staging/iio/adc/ad7291.c | 1 | ||||
| -rw-r--r-- | drivers/staging/iio/adc/mxs-lradc.c | 18 | ||||
| -rw-r--r-- | include/linux/iio/iio.h | 4 |
9 files changed, 22 insertions, 18 deletions
diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c index 4427e8e46a7f..0ad208a69c29 100644 --- a/drivers/iio/adc/ti_am335x_adc.c +++ b/drivers/iio/adc/ti_am335x_adc.c | |||
| @@ -183,6 +183,7 @@ static int tiadc_read_raw(struct iio_dev *indio_dev, | |||
| 183 | 183 | ||
| 184 | static const struct iio_info tiadc_info = { | 184 | static const struct iio_info tiadc_info = { |
| 185 | .read_raw = &tiadc_read_raw, | 185 | .read_raw = &tiadc_read_raw, |
| 186 | .driver_module = THIS_MODULE, | ||
| 186 | }; | 187 | }; |
| 187 | 188 | ||
| 188 | static int tiadc_probe(struct platform_device *pdev) | 189 | static int tiadc_probe(struct platform_device *pdev) |
diff --git a/drivers/iio/dac/ad7303.c b/drivers/iio/dac/ad7303.c index 85aeef60dc5f..d546f50f9258 100644 --- a/drivers/iio/dac/ad7303.c +++ b/drivers/iio/dac/ad7303.c | |||
| @@ -235,8 +235,10 @@ static int ad7303_probe(struct spi_device *spi) | |||
| 235 | 235 | ||
| 236 | if (ext_ref) { | 236 | if (ext_ref) { |
| 237 | st->vref_reg = regulator_get(&spi->dev, "REF"); | 237 | st->vref_reg = regulator_get(&spi->dev, "REF"); |
| 238 | if (IS_ERR(st->vref_reg)) | 238 | if (IS_ERR(st->vref_reg)) { |
| 239 | ret = PTR_ERR(st->vref_reg); | ||
| 239 | goto err_disable_vdd_reg; | 240 | goto err_disable_vdd_reg; |
| 241 | } | ||
| 240 | 242 | ||
| 241 | ret = regulator_enable(st->vref_reg); | 243 | ret = regulator_enable(st->vref_reg); |
| 242 | if (ret) | 244 | if (ret) |
diff --git a/drivers/iio/industrialio-trigger.c b/drivers/iio/industrialio-trigger.c index 4d6c7d84e155..ea8a4146620d 100644 --- a/drivers/iio/industrialio-trigger.c +++ b/drivers/iio/industrialio-trigger.c | |||
| @@ -104,7 +104,7 @@ void iio_trigger_unregister(struct iio_trigger *trig_info) | |||
| 104 | 104 | ||
| 105 | ida_simple_remove(&iio_trigger_ida, trig_info->id); | 105 | ida_simple_remove(&iio_trigger_ida, trig_info->id); |
| 106 | /* Possible issue in here */ | 106 | /* Possible issue in here */ |
| 107 | device_unregister(&trig_info->dev); | 107 | device_del(&trig_info->dev); |
| 108 | } | 108 | } |
| 109 | EXPORT_SYMBOL(iio_trigger_unregister); | 109 | EXPORT_SYMBOL(iio_trigger_unregister); |
| 110 | 110 | ||
diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c index 98ddc323add0..0cf5f8e06cfc 100644 --- a/drivers/iio/inkern.c +++ b/drivers/iio/inkern.c | |||
| @@ -451,7 +451,7 @@ static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan, | |||
| 451 | int ret; | 451 | int ret; |
| 452 | 452 | ||
| 453 | ret = iio_channel_read(chan, &offset, NULL, IIO_CHAN_INFO_OFFSET); | 453 | ret = iio_channel_read(chan, &offset, NULL, IIO_CHAN_INFO_OFFSET); |
| 454 | if (ret == 0) | 454 | if (ret >= 0) |
| 455 | raw64 += offset; | 455 | raw64 += offset; |
| 456 | 456 | ||
| 457 | scale_type = iio_channel_read(chan, &scale_val, &scale_val2, | 457 | scale_type = iio_channel_read(chan, &scale_val, &scale_val2, |
diff --git a/drivers/iio/pressure/st_pressure_core.c b/drivers/iio/pressure/st_pressure_core.c index 9c343b40665e..3ffbc56917b4 100644 --- a/drivers/iio/pressure/st_pressure_core.c +++ b/drivers/iio/pressure/st_pressure_core.c | |||
| @@ -28,7 +28,9 @@ | |||
| 28 | #include <linux/iio/common/st_sensors.h> | 28 | #include <linux/iio/common/st_sensors.h> |
| 29 | #include "st_pressure.h" | 29 | #include "st_pressure.h" |
| 30 | 30 | ||
| 31 | #define ST_PRESS_MBAR_TO_KPASCAL(x) (x * 10) | 31 | #define ST_PRESS_LSB_PER_MBAR 4096UL |
| 32 | #define ST_PRESS_KPASCAL_NANO_SCALE (100000000UL / \ | ||
| 33 | ST_PRESS_LSB_PER_MBAR) | ||
| 32 | #define ST_PRESS_NUMBER_DATA_CHANNELS 1 | 34 | #define ST_PRESS_NUMBER_DATA_CHANNELS 1 |
| 33 | 35 | ||
| 34 | /* DEFAULT VALUE FOR SENSORS */ | 36 | /* DEFAULT VALUE FOR SENSORS */ |
| @@ -51,8 +53,8 @@ | |||
| 51 | #define ST_PRESS_1_FS_ADDR 0x23 | 53 | #define ST_PRESS_1_FS_ADDR 0x23 |
| 52 | #define ST_PRESS_1_FS_MASK 0x30 | 54 | #define ST_PRESS_1_FS_MASK 0x30 |
| 53 | #define ST_PRESS_1_FS_AVL_1260_VAL 0x00 | 55 | #define ST_PRESS_1_FS_AVL_1260_VAL 0x00 |
| 54 | #define ST_PRESS_1_FS_AVL_1260_GAIN ST_PRESS_MBAR_TO_KPASCAL(244141) | ||
| 55 | #define ST_PRESS_1_FS_AVL_TEMP_GAIN 2083000 | 56 | #define ST_PRESS_1_FS_AVL_TEMP_GAIN 2083000 |
| 57 | #define ST_PRESS_1_FS_AVL_1260_GAIN ST_PRESS_KPASCAL_NANO_SCALE | ||
| 56 | #define ST_PRESS_1_BDU_ADDR 0x20 | 58 | #define ST_PRESS_1_BDU_ADDR 0x20 |
| 57 | #define ST_PRESS_1_BDU_MASK 0x04 | 59 | #define ST_PRESS_1_BDU_MASK 0x04 |
| 58 | #define ST_PRESS_1_DRDY_IRQ_ADDR 0x22 | 60 | #define ST_PRESS_1_DRDY_IRQ_ADDR 0x22 |
diff --git a/drivers/staging/iio/accel/lis3l02dq_core.c b/drivers/staging/iio/accel/lis3l02dq_core.c index 1bfe5d81792b..8ed75a94f465 100644 --- a/drivers/staging/iio/accel/lis3l02dq_core.c +++ b/drivers/staging/iio/accel/lis3l02dq_core.c | |||
| @@ -257,6 +257,8 @@ static int lis3l02dq_read_raw(struct iio_dev *indio_dev, | |||
| 257 | ret = lis3l02dq_read_reg_s16(indio_dev, reg, val); | 257 | ret = lis3l02dq_read_reg_s16(indio_dev, reg, val); |
| 258 | } | 258 | } |
| 259 | mutex_unlock(&indio_dev->mlock); | 259 | mutex_unlock(&indio_dev->mlock); |
| 260 | if (ret < 0) | ||
| 261 | goto error_ret; | ||
| 260 | return IIO_VAL_INT; | 262 | return IIO_VAL_INT; |
| 261 | case IIO_CHAN_INFO_SCALE: | 263 | case IIO_CHAN_INFO_SCALE: |
| 262 | *val = 0; | 264 | *val = 0; |
diff --git a/drivers/staging/iio/adc/ad7291.c b/drivers/staging/iio/adc/ad7291.c index 3fc79e582750..a2e61c2fc8d1 100644 --- a/drivers/staging/iio/adc/ad7291.c +++ b/drivers/staging/iio/adc/ad7291.c | |||
| @@ -517,6 +517,7 @@ static const struct iio_info ad7291_info = { | |||
| 517 | .read_event_value = &ad7291_read_event_value, | 517 | .read_event_value = &ad7291_read_event_value, |
| 518 | .write_event_value = &ad7291_write_event_value, | 518 | .write_event_value = &ad7291_write_event_value, |
| 519 | .event_attrs = &ad7291_event_attribute_group, | 519 | .event_attrs = &ad7291_event_attribute_group, |
| 520 | .driver_module = THIS_MODULE, | ||
| 520 | }; | 521 | }; |
| 521 | 522 | ||
| 522 | static int ad7291_probe(struct i2c_client *client, | 523 | static int ad7291_probe(struct i2c_client *client, |
diff --git a/drivers/staging/iio/adc/mxs-lradc.c b/drivers/staging/iio/adc/mxs-lradc.c index d92c97a59d61..9f52a2857929 100644 --- a/drivers/staging/iio/adc/mxs-lradc.c +++ b/drivers/staging/iio/adc/mxs-lradc.c | |||
| @@ -234,7 +234,6 @@ static int mxs_lradc_read_raw(struct iio_dev *iio_dev, | |||
| 234 | { | 234 | { |
| 235 | struct mxs_lradc *lradc = iio_priv(iio_dev); | 235 | struct mxs_lradc *lradc = iio_priv(iio_dev); |
| 236 | int ret; | 236 | int ret; |
| 237 | unsigned long mask; | ||
| 238 | 237 | ||
| 239 | if (m != IIO_CHAN_INFO_RAW) | 238 | if (m != IIO_CHAN_INFO_RAW) |
| 240 | return -EINVAL; | 239 | return -EINVAL; |
| @@ -243,12 +242,6 @@ static int mxs_lradc_read_raw(struct iio_dev *iio_dev, | |||
| 243 | if (chan->channel > LRADC_MAX_TOTAL_CHANS) | 242 | if (chan->channel > LRADC_MAX_TOTAL_CHANS) |
| 244 | return -EINVAL; | 243 | return -EINVAL; |
| 245 | 244 | ||
| 246 | /* Validate the channel if it doesn't intersect with reserved chans. */ | ||
| 247 | bitmap_set(&mask, chan->channel, 1); | ||
| 248 | ret = iio_validate_scan_mask_onehot(iio_dev, &mask); | ||
| 249 | if (ret) | ||
| 250 | return -EINVAL; | ||
| 251 | |||
| 252 | /* | 245 | /* |
| 253 | * See if there is no buffered operation in progess. If there is, simply | 246 | * See if there is no buffered operation in progess. If there is, simply |
| 254 | * bail out. This can be improved to support both buffered and raw IO at | 247 | * bail out. This can be improved to support both buffered and raw IO at |
| @@ -661,12 +654,13 @@ static int mxs_lradc_trigger_init(struct iio_dev *iio) | |||
| 661 | { | 654 | { |
| 662 | int ret; | 655 | int ret; |
| 663 | struct iio_trigger *trig; | 656 | struct iio_trigger *trig; |
| 657 | struct mxs_lradc *lradc = iio_priv(iio); | ||
| 664 | 658 | ||
| 665 | trig = iio_trigger_alloc("%s-dev%i", iio->name, iio->id); | 659 | trig = iio_trigger_alloc("%s-dev%i", iio->name, iio->id); |
| 666 | if (trig == NULL) | 660 | if (trig == NULL) |
| 667 | return -ENOMEM; | 661 | return -ENOMEM; |
| 668 | 662 | ||
| 669 | trig->dev.parent = iio->dev.parent; | 663 | trig->dev.parent = lradc->dev; |
| 670 | iio_trigger_set_drvdata(trig, iio); | 664 | iio_trigger_set_drvdata(trig, iio); |
| 671 | trig->ops = &mxs_lradc_trigger_ops; | 665 | trig->ops = &mxs_lradc_trigger_ops; |
| 672 | 666 | ||
| @@ -676,15 +670,17 @@ static int mxs_lradc_trigger_init(struct iio_dev *iio) | |||
| 676 | return ret; | 670 | return ret; |
| 677 | } | 671 | } |
| 678 | 672 | ||
| 679 | iio->trig = trig; | 673 | lradc->trig = trig; |
| 680 | 674 | ||
| 681 | return 0; | 675 | return 0; |
| 682 | } | 676 | } |
| 683 | 677 | ||
| 684 | static void mxs_lradc_trigger_remove(struct iio_dev *iio) | 678 | static void mxs_lradc_trigger_remove(struct iio_dev *iio) |
| 685 | { | 679 | { |
| 686 | iio_trigger_unregister(iio->trig); | 680 | struct mxs_lradc *lradc = iio_priv(iio); |
| 687 | iio_trigger_free(iio->trig); | 681 | |
| 682 | iio_trigger_unregister(lradc->trig); | ||
| 683 | iio_trigger_free(lradc->trig); | ||
| 688 | } | 684 | } |
| 689 | 685 | ||
| 690 | static int mxs_lradc_buffer_preenable(struct iio_dev *iio) | 686 | static int mxs_lradc_buffer_preenable(struct iio_dev *iio) |
diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h index 8d171f427632..3d35b7023591 100644 --- a/include/linux/iio/iio.h +++ b/include/linux/iio/iio.h | |||
| @@ -211,8 +211,8 @@ struct iio_chan_spec { | |||
| 211 | static inline bool iio_channel_has_info(const struct iio_chan_spec *chan, | 211 | static inline bool iio_channel_has_info(const struct iio_chan_spec *chan, |
| 212 | enum iio_chan_info_enum type) | 212 | enum iio_chan_info_enum type) |
| 213 | { | 213 | { |
| 214 | return (chan->info_mask_separate & type) | | 214 | return (chan->info_mask_separate & BIT(type)) | |
| 215 | (chan->info_mask_shared_by_type & type); | 215 | (chan->info_mask_shared_by_type & BIT(type)); |
| 216 | } | 216 | } |
| 217 | 217 | ||
| 218 | #define IIO_ST(si, rb, sb, sh) \ | 218 | #define IIO_ST(si, rb, sb, sh) \ |
