Commit 20fa7867 authored by Linus Torvalds's avatar Linus Torvalds

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

Pull staging fixes from Greg KH:
 "Here are 4 tiny staging and iio driver fixes for 3.12-rc4.  Nothing
  major, just some small fixes for reported issues"

* tag 'staging-3.12-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
  staging: comedi: ni_65xx: (bug fix) confine insn_bits to one subdevice
  iio:magnetometer: Bugfix magnetometer default output registers
  iio: Remove debugfs entries in iio_device_unregister()
  iio: amplifiers: ad8366: Remove regulator_put
parents a5c984cc 677a3156
...@@ -185,10 +185,8 @@ static int ad8366_remove(struct spi_device *spi) ...@@ -185,10 +185,8 @@ static int ad8366_remove(struct spi_device *spi)
iio_device_unregister(indio_dev); iio_device_unregister(indio_dev);
if (!IS_ERR(reg)) { if (!IS_ERR(reg))
regulator_disable(reg); regulator_disable(reg);
regulator_put(reg);
}
return 0; return 0;
} }
......
...@@ -852,7 +852,6 @@ static void iio_dev_release(struct device *device) ...@@ -852,7 +852,6 @@ static void iio_dev_release(struct device *device)
iio_device_unregister_trigger_consumer(indio_dev); iio_device_unregister_trigger_consumer(indio_dev);
iio_device_unregister_eventset(indio_dev); iio_device_unregister_eventset(indio_dev);
iio_device_unregister_sysfs(indio_dev); iio_device_unregister_sysfs(indio_dev);
iio_device_unregister_debugfs(indio_dev);
ida_simple_remove(&iio_ida, indio_dev->id); ida_simple_remove(&iio_ida, indio_dev->id);
kfree(indio_dev); kfree(indio_dev);
...@@ -1087,6 +1086,7 @@ void iio_device_unregister(struct iio_dev *indio_dev) ...@@ -1087,6 +1086,7 @@ void iio_device_unregister(struct iio_dev *indio_dev)
if (indio_dev->chrdev.dev) if (indio_dev->chrdev.dev)
cdev_del(&indio_dev->chrdev); cdev_del(&indio_dev->chrdev);
iio_device_unregister_debugfs(indio_dev);
iio_disable_all_buffers(indio_dev); iio_disable_all_buffers(indio_dev);
......
...@@ -29,9 +29,9 @@ ...@@ -29,9 +29,9 @@
#define ST_MAGN_NUMBER_DATA_CHANNELS 3 #define ST_MAGN_NUMBER_DATA_CHANNELS 3
/* DEFAULT VALUE FOR SENSORS */ /* DEFAULT VALUE FOR SENSORS */
#define ST_MAGN_DEFAULT_OUT_X_L_ADDR 0X04 #define ST_MAGN_DEFAULT_OUT_X_H_ADDR 0X03
#define ST_MAGN_DEFAULT_OUT_Y_L_ADDR 0X08 #define ST_MAGN_DEFAULT_OUT_Y_H_ADDR 0X07
#define ST_MAGN_DEFAULT_OUT_Z_L_ADDR 0X06 #define ST_MAGN_DEFAULT_OUT_Z_H_ADDR 0X05
/* FULLSCALE */ /* FULLSCALE */
#define ST_MAGN_FS_AVL_1300MG 1300 #define ST_MAGN_FS_AVL_1300MG 1300
...@@ -117,16 +117,16 @@ ...@@ -117,16 +117,16 @@
static const struct iio_chan_spec st_magn_16bit_channels[] = { static const struct iio_chan_spec st_magn_16bit_channels[] = {
ST_SENSORS_LSM_CHANNELS(IIO_MAGN, ST_SENSORS_LSM_CHANNELS(IIO_MAGN,
BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE), BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE),
ST_SENSORS_SCAN_X, 1, IIO_MOD_X, 's', IIO_LE, 16, 16, ST_SENSORS_SCAN_X, 1, IIO_MOD_X, 's', IIO_BE, 16, 16,
ST_MAGN_DEFAULT_OUT_X_L_ADDR), ST_MAGN_DEFAULT_OUT_X_H_ADDR),
ST_SENSORS_LSM_CHANNELS(IIO_MAGN, ST_SENSORS_LSM_CHANNELS(IIO_MAGN,
BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE), BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE),
ST_SENSORS_SCAN_Y, 1, IIO_MOD_Y, 's', IIO_LE, 16, 16, ST_SENSORS_SCAN_Y, 1, IIO_MOD_Y, 's', IIO_BE, 16, 16,
ST_MAGN_DEFAULT_OUT_Y_L_ADDR), ST_MAGN_DEFAULT_OUT_Y_H_ADDR),
ST_SENSORS_LSM_CHANNELS(IIO_MAGN, ST_SENSORS_LSM_CHANNELS(IIO_MAGN,
BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE), BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE),
ST_SENSORS_SCAN_Z, 1, IIO_MOD_Z, 's', IIO_LE, 16, 16, ST_SENSORS_SCAN_Z, 1, IIO_MOD_Z, 's', IIO_BE, 16, 16,
ST_MAGN_DEFAULT_OUT_Z_L_ADDR), ST_MAGN_DEFAULT_OUT_Z_H_ADDR),
IIO_CHAN_SOFT_TIMESTAMP(3) IIO_CHAN_SOFT_TIMESTAMP(3)
}; };
......
...@@ -369,28 +369,23 @@ static int ni_65xx_dio_insn_bits(struct comedi_device *dev, ...@@ -369,28 +369,23 @@ static int ni_65xx_dio_insn_bits(struct comedi_device *dev,
{ {
const struct ni_65xx_board *board = comedi_board(dev); const struct ni_65xx_board *board = comedi_board(dev);
struct ni_65xx_private *devpriv = dev->private; struct ni_65xx_private *devpriv = dev->private;
unsigned base_bitfield_channel; int base_bitfield_channel;
const unsigned max_ports_per_bitfield = 5;
unsigned read_bits = 0; unsigned read_bits = 0;
unsigned j; int last_port_offset = ni_65xx_port_by_channel(s->n_chan - 1);
int port_offset;
base_bitfield_channel = CR_CHAN(insn->chanspec); base_bitfield_channel = CR_CHAN(insn->chanspec);
for (j = 0; j < max_ports_per_bitfield; ++j) { for (port_offset = ni_65xx_port_by_channel(base_bitfield_channel);
const unsigned port_offset = port_offset <= last_port_offset; port_offset++) {
ni_65xx_port_by_channel(base_bitfield_channel) + j; unsigned port = sprivate(s)->base_port + port_offset;
const unsigned port = int base_port_channel = port_offset * ni_65xx_channels_per_port;
sprivate(s)->base_port + port_offset;
unsigned base_port_channel;
unsigned port_mask, port_data, port_read_bits; unsigned port_mask, port_data, port_read_bits;
int bitshift; int bitshift = base_port_channel - base_bitfield_channel;
if (port >= ni_65xx_total_num_ports(board))
if (bitshift >= 32)
break; break;
base_port_channel = port_offset * ni_65xx_channels_per_port;
port_mask = data[0]; port_mask = data[0];
port_data = data[1]; port_data = data[1];
bitshift = base_port_channel - base_bitfield_channel;
if (bitshift >= 32 || bitshift <= -32)
break;
if (bitshift > 0) { if (bitshift > 0) {
port_mask >>= bitshift; port_mask >>= bitshift;
port_data >>= bitshift; port_data >>= bitshift;
......
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