Commit 86a7a167 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'staging-3.18-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging

Pull staging driver fixes from Greg KH:
 "Here are some staging/iio fixes for 3.18-rc4.

  Nothing major, just a few bugfixes of things that have been reported"

* tag 'staging-3.18-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
  staging:iio:ade7758: Remove "raw" from channel name
  staging:iio:ade7758: Fix check if channels are enabled in prenable
  staging:iio:ade7758: Fix NULL pointer deref when enabling buffer
  iio: as3935: allocate correct iio_device size
  io: accel: kxcjk-1013: Fix iio_event_spec direction
  iio: tsl4531: Fix compiler error when CONFIG_PM_OPS is not defined
  iio: adc: mxs-lradc: Disable the clock on probe failure
  iio: st_sensors: Fix buffer copy
  staging:iio:ad5933: Drop "raw" from channel names
  staging:iio:ad5933: Fix NULL pointer deref when enabling buffer
parents 45a4c079 bce20b23
...@@ -894,7 +894,7 @@ static const struct attribute_group kxcjk1013_attrs_group = { ...@@ -894,7 +894,7 @@ static const struct attribute_group kxcjk1013_attrs_group = {
static const struct iio_event_spec kxcjk1013_event = { static const struct iio_event_spec kxcjk1013_event = {
.type = IIO_EV_TYPE_THRESH, .type = IIO_EV_TYPE_THRESH,
.dir = IIO_EV_DIR_RISING | IIO_EV_DIR_FALLING, .dir = IIO_EV_DIR_EITHER,
.mask_separate = BIT(IIO_EV_INFO_VALUE) | .mask_separate = BIT(IIO_EV_INFO_VALUE) |
BIT(IIO_EV_INFO_ENABLE) | BIT(IIO_EV_INFO_ENABLE) |
BIT(IIO_EV_INFO_PERIOD) BIT(IIO_EV_INFO_PERIOD)
......
...@@ -230,9 +230,12 @@ static int tsl4531_resume(struct device *dev) ...@@ -230,9 +230,12 @@ static int tsl4531_resume(struct device *dev)
return i2c_smbus_write_byte_data(to_i2c_client(dev), TSL4531_CONTROL, return i2c_smbus_write_byte_data(to_i2c_client(dev), TSL4531_CONTROL,
TSL4531_MODE_NORMAL); TSL4531_MODE_NORMAL);
} }
#endif
static SIMPLE_DEV_PM_OPS(tsl4531_pm_ops, tsl4531_suspend, tsl4531_resume); static SIMPLE_DEV_PM_OPS(tsl4531_pm_ops, tsl4531_suspend, tsl4531_resume);
#define TSL4531_PM_OPS (&tsl4531_pm_ops)
#else
#define TSL4531_PM_OPS NULL
#endif
static const struct i2c_device_id tsl4531_id[] = { static const struct i2c_device_id tsl4531_id[] = {
{ "tsl4531", 0 }, { "tsl4531", 0 },
...@@ -243,7 +246,7 @@ MODULE_DEVICE_TABLE(i2c, tsl4531_id); ...@@ -243,7 +246,7 @@ MODULE_DEVICE_TABLE(i2c, tsl4531_id);
static struct i2c_driver tsl4531_driver = { static struct i2c_driver tsl4531_driver = {
.driver = { .driver = {
.name = TSL4531_DRV_NAME, .name = TSL4531_DRV_NAME,
.pm = &tsl4531_pm_ops, .pm = TSL4531_PM_OPS,
.owner = THIS_MODULE, .owner = THIS_MODULE,
}, },
.probe = tsl4531_probe, .probe = tsl4531_probe,
......
...@@ -330,7 +330,7 @@ static int as3935_probe(struct spi_device *spi) ...@@ -330,7 +330,7 @@ static int as3935_probe(struct spi_device *spi)
return -EINVAL; return -EINVAL;
} }
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(st)); indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
if (!indio_dev) if (!indio_dev)
return -ENOMEM; return -ENOMEM;
......
...@@ -119,7 +119,6 @@ struct ade7758_state { ...@@ -119,7 +119,6 @@ struct ade7758_state {
u8 *tx; u8 *tx;
u8 *rx; u8 *rx;
struct mutex buf_lock; struct mutex buf_lock;
const struct iio_chan_spec *ade7758_ring_channels;
struct spi_transfer ring_xfer[4]; struct spi_transfer ring_xfer[4];
struct spi_message ring_msg; struct spi_message ring_msg;
/* /*
......
...@@ -634,9 +634,6 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -634,9 +634,6 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_VOLTAGE, .type = IIO_VOLTAGE,
.indexed = 1, .indexed = 1,
.channel = 0, .channel = 0,
.extend_name = "raw",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_A, AD7758_VOLTAGE), .address = AD7758_WT(AD7758_PHASE_A, AD7758_VOLTAGE),
.scan_index = 0, .scan_index = 0,
.scan_type = { .scan_type = {
...@@ -648,9 +645,6 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -648,9 +645,6 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_CURRENT, .type = IIO_CURRENT,
.indexed = 1, .indexed = 1,
.channel = 0, .channel = 0,
.extend_name = "raw",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_A, AD7758_CURRENT), .address = AD7758_WT(AD7758_PHASE_A, AD7758_CURRENT),
.scan_index = 1, .scan_index = 1,
.scan_type = { .scan_type = {
...@@ -662,9 +656,7 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -662,9 +656,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_POWER, .type = IIO_POWER,
.indexed = 1, .indexed = 1,
.channel = 0, .channel = 0,
.extend_name = "apparent_raw", .extend_name = "apparent",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_A, AD7758_APP_PWR), .address = AD7758_WT(AD7758_PHASE_A, AD7758_APP_PWR),
.scan_index = 2, .scan_index = 2,
.scan_type = { .scan_type = {
...@@ -676,9 +668,7 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -676,9 +668,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_POWER, .type = IIO_POWER,
.indexed = 1, .indexed = 1,
.channel = 0, .channel = 0,
.extend_name = "active_raw", .extend_name = "active",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_A, AD7758_ACT_PWR), .address = AD7758_WT(AD7758_PHASE_A, AD7758_ACT_PWR),
.scan_index = 3, .scan_index = 3,
.scan_type = { .scan_type = {
...@@ -690,9 +680,7 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -690,9 +680,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_POWER, .type = IIO_POWER,
.indexed = 1, .indexed = 1,
.channel = 0, .channel = 0,
.extend_name = "reactive_raw", .extend_name = "reactive",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_A, AD7758_REACT_PWR), .address = AD7758_WT(AD7758_PHASE_A, AD7758_REACT_PWR),
.scan_index = 4, .scan_index = 4,
.scan_type = { .scan_type = {
...@@ -704,9 +692,6 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -704,9 +692,6 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_VOLTAGE, .type = IIO_VOLTAGE,
.indexed = 1, .indexed = 1,
.channel = 1, .channel = 1,
.extend_name = "raw",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_B, AD7758_VOLTAGE), .address = AD7758_WT(AD7758_PHASE_B, AD7758_VOLTAGE),
.scan_index = 5, .scan_index = 5,
.scan_type = { .scan_type = {
...@@ -718,9 +703,6 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -718,9 +703,6 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_CURRENT, .type = IIO_CURRENT,
.indexed = 1, .indexed = 1,
.channel = 1, .channel = 1,
.extend_name = "raw",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_B, AD7758_CURRENT), .address = AD7758_WT(AD7758_PHASE_B, AD7758_CURRENT),
.scan_index = 6, .scan_index = 6,
.scan_type = { .scan_type = {
...@@ -732,9 +714,7 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -732,9 +714,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_POWER, .type = IIO_POWER,
.indexed = 1, .indexed = 1,
.channel = 1, .channel = 1,
.extend_name = "apparent_raw", .extend_name = "apparent",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_B, AD7758_APP_PWR), .address = AD7758_WT(AD7758_PHASE_B, AD7758_APP_PWR),
.scan_index = 7, .scan_index = 7,
.scan_type = { .scan_type = {
...@@ -746,9 +726,7 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -746,9 +726,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_POWER, .type = IIO_POWER,
.indexed = 1, .indexed = 1,
.channel = 1, .channel = 1,
.extend_name = "active_raw", .extend_name = "active",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_B, AD7758_ACT_PWR), .address = AD7758_WT(AD7758_PHASE_B, AD7758_ACT_PWR),
.scan_index = 8, .scan_index = 8,
.scan_type = { .scan_type = {
...@@ -760,9 +738,7 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -760,9 +738,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_POWER, .type = IIO_POWER,
.indexed = 1, .indexed = 1,
.channel = 1, .channel = 1,
.extend_name = "reactive_raw", .extend_name = "reactive",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_B, AD7758_REACT_PWR), .address = AD7758_WT(AD7758_PHASE_B, AD7758_REACT_PWR),
.scan_index = 9, .scan_index = 9,
.scan_type = { .scan_type = {
...@@ -774,9 +750,6 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -774,9 +750,6 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_VOLTAGE, .type = IIO_VOLTAGE,
.indexed = 1, .indexed = 1,
.channel = 2, .channel = 2,
.extend_name = "raw",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_C, AD7758_VOLTAGE), .address = AD7758_WT(AD7758_PHASE_C, AD7758_VOLTAGE),
.scan_index = 10, .scan_index = 10,
.scan_type = { .scan_type = {
...@@ -788,9 +761,6 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -788,9 +761,6 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_CURRENT, .type = IIO_CURRENT,
.indexed = 1, .indexed = 1,
.channel = 2, .channel = 2,
.extend_name = "raw",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_C, AD7758_CURRENT), .address = AD7758_WT(AD7758_PHASE_C, AD7758_CURRENT),
.scan_index = 11, .scan_index = 11,
.scan_type = { .scan_type = {
...@@ -802,9 +772,7 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -802,9 +772,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_POWER, .type = IIO_POWER,
.indexed = 1, .indexed = 1,
.channel = 2, .channel = 2,
.extend_name = "apparent_raw", .extend_name = "apparent",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_C, AD7758_APP_PWR), .address = AD7758_WT(AD7758_PHASE_C, AD7758_APP_PWR),
.scan_index = 12, .scan_index = 12,
.scan_type = { .scan_type = {
...@@ -816,9 +784,7 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -816,9 +784,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_POWER, .type = IIO_POWER,
.indexed = 1, .indexed = 1,
.channel = 2, .channel = 2,
.extend_name = "active_raw", .extend_name = "active",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_C, AD7758_ACT_PWR), .address = AD7758_WT(AD7758_PHASE_C, AD7758_ACT_PWR),
.scan_index = 13, .scan_index = 13,
.scan_type = { .scan_type = {
...@@ -830,9 +796,7 @@ static const struct iio_chan_spec ade7758_channels[] = { ...@@ -830,9 +796,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
.type = IIO_POWER, .type = IIO_POWER,
.indexed = 1, .indexed = 1,
.channel = 2, .channel = 2,
.extend_name = "reactive_raw", .extend_name = "reactive",
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
.address = AD7758_WT(AD7758_PHASE_C, AD7758_REACT_PWR), .address = AD7758_WT(AD7758_PHASE_C, AD7758_REACT_PWR),
.scan_index = 14, .scan_index = 14,
.scan_type = { .scan_type = {
...@@ -873,13 +837,14 @@ static int ade7758_probe(struct spi_device *spi) ...@@ -873,13 +837,14 @@ static int ade7758_probe(struct spi_device *spi)
goto error_free_rx; goto error_free_rx;
} }
st->us = spi; st->us = spi;
st->ade7758_ring_channels = &ade7758_channels[0];
mutex_init(&st->buf_lock); mutex_init(&st->buf_lock);
indio_dev->name = spi->dev.driver->name; indio_dev->name = spi->dev.driver->name;
indio_dev->dev.parent = &spi->dev; indio_dev->dev.parent = &spi->dev;
indio_dev->info = &ade7758_info; indio_dev->info = &ade7758_info;
indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->modes = INDIO_DIRECT_MODE;
indio_dev->channels = ade7758_channels;
indio_dev->num_channels = ARRAY_SIZE(ade7758_channels);
ret = ade7758_configure_ring(indio_dev); ret = ade7758_configure_ring(indio_dev);
if (ret) if (ret)
......
...@@ -85,17 +85,16 @@ static irqreturn_t ade7758_trigger_handler(int irq, void *p) ...@@ -85,17 +85,16 @@ static irqreturn_t ade7758_trigger_handler(int irq, void *p)
**/ **/
static int ade7758_ring_preenable(struct iio_dev *indio_dev) static int ade7758_ring_preenable(struct iio_dev *indio_dev)
{ {
struct ade7758_state *st = iio_priv(indio_dev);
unsigned channel; unsigned channel;
if (!bitmap_empty(indio_dev->active_scan_mask, indio_dev->masklength)) if (bitmap_empty(indio_dev->active_scan_mask, indio_dev->masklength))
return -EINVAL; return -EINVAL;
channel = find_first_bit(indio_dev->active_scan_mask, channel = find_first_bit(indio_dev->active_scan_mask,
indio_dev->masklength); indio_dev->masklength);
ade7758_write_waveform_type(&indio_dev->dev, ade7758_write_waveform_type(&indio_dev->dev,
st->ade7758_ring_channels[channel].address); indio_dev->channels[channel].address);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment