Commit 6e5c4f13 authored by Linus Torvalds's avatar Linus Torvalds

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

Pull staging and IIO fixes from Greg KH:
 "Here are a few small staging and iio driver fixes for 4.7-rc6.

  Nothing major here, just a number of small fixes, all have been in
  linux-next for a while, and the full details are in the shortlog"

* tag 'staging-4.7-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
  iio:ad7266: Fix probe deferral for vref
  iio:ad7266: Fix support for optional regulators
  iio:ad7266: Fix broken regulator error handling
  iio: accel: kxsd9: fix the usage of spi_w8r8()
  staging: iio: accel: fix error check
  staging: iio: ad5933: fix order of cycle conditions
  staging: iio: fix ad7606_spi regression
  iio: inv_mpu6050: Fix use-after-free in ACPI code
parents 756c0aec d8397221
...@@ -81,7 +81,7 @@ static int kxsd9_write_scale(struct iio_dev *indio_dev, int micro) ...@@ -81,7 +81,7 @@ static int kxsd9_write_scale(struct iio_dev *indio_dev, int micro)
mutex_lock(&st->buf_lock); mutex_lock(&st->buf_lock);
ret = spi_w8r8(st->us, KXSD9_READ(KXSD9_REG_CTRL_C)); ret = spi_w8r8(st->us, KXSD9_READ(KXSD9_REG_CTRL_C));
if (ret) if (ret < 0)
goto error_ret; goto error_ret;
st->tx[0] = KXSD9_WRITE(KXSD9_REG_CTRL_C); st->tx[0] = KXSD9_WRITE(KXSD9_REG_CTRL_C);
st->tx[1] = (ret & ~KXSD9_FS_MASK) | i; st->tx[1] = (ret & ~KXSD9_FS_MASK) | i;
...@@ -163,7 +163,7 @@ static int kxsd9_read_raw(struct iio_dev *indio_dev, ...@@ -163,7 +163,7 @@ static int kxsd9_read_raw(struct iio_dev *indio_dev,
break; break;
case IIO_CHAN_INFO_SCALE: case IIO_CHAN_INFO_SCALE:
ret = spi_w8r8(st->us, KXSD9_READ(KXSD9_REG_CTRL_C)); ret = spi_w8r8(st->us, KXSD9_READ(KXSD9_REG_CTRL_C));
if (ret) if (ret < 0)
goto error_ret; goto error_ret;
*val2 = kxsd9_micro_scales[ret & KXSD9_FS_MASK]; *val2 = kxsd9_micro_scales[ret & KXSD9_FS_MASK];
ret = IIO_VAL_INT_PLUS_MICRO; ret = IIO_VAL_INT_PLUS_MICRO;
......
...@@ -396,8 +396,8 @@ static int ad7266_probe(struct spi_device *spi) ...@@ -396,8 +396,8 @@ static int ad7266_probe(struct spi_device *spi)
st = iio_priv(indio_dev); st = iio_priv(indio_dev);
st->reg = devm_regulator_get(&spi->dev, "vref"); st->reg = devm_regulator_get_optional(&spi->dev, "vref");
if (!IS_ERR_OR_NULL(st->reg)) { if (!IS_ERR(st->reg)) {
ret = regulator_enable(st->reg); ret = regulator_enable(st->reg);
if (ret) if (ret)
return ret; return ret;
...@@ -408,6 +408,9 @@ static int ad7266_probe(struct spi_device *spi) ...@@ -408,6 +408,9 @@ static int ad7266_probe(struct spi_device *spi)
st->vref_mv = ret / 1000; st->vref_mv = ret / 1000;
} else { } else {
/* Any other error indicates that the regulator does exist */
if (PTR_ERR(st->reg) != -ENODEV)
return PTR_ERR(st->reg);
/* Use internal reference */ /* Use internal reference */
st->vref_mv = 2500; st->vref_mv = 2500;
} }
......
...@@ -56,6 +56,7 @@ static int asus_acpi_get_sensor_info(struct acpi_device *adev, ...@@ -56,6 +56,7 @@ static int asus_acpi_get_sensor_info(struct acpi_device *adev,
int i; int i;
acpi_status status; acpi_status status;
union acpi_object *cpm; union acpi_object *cpm;
int ret;
status = acpi_evaluate_object(adev->handle, "CNF0", NULL, &buffer); status = acpi_evaluate_object(adev->handle, "CNF0", NULL, &buffer);
if (ACPI_FAILURE(status)) if (ACPI_FAILURE(status))
...@@ -82,10 +83,10 @@ static int asus_acpi_get_sensor_info(struct acpi_device *adev, ...@@ -82,10 +83,10 @@ static int asus_acpi_get_sensor_info(struct acpi_device *adev,
} }
} }
} }
ret = cpm->package.count;
kfree(buffer.pointer); kfree(buffer.pointer);
return cpm->package.count; return ret;
} }
static int acpi_i2c_check_resource(struct acpi_resource *ares, void *data) static int acpi_i2c_check_resource(struct acpi_resource *ares, void *data)
......
...@@ -594,7 +594,7 @@ static ssize_t sca3000_read_frequency(struct device *dev, ...@@ -594,7 +594,7 @@ static ssize_t sca3000_read_frequency(struct device *dev,
goto error_ret_mut; goto error_ret_mut;
ret = sca3000_read_ctrl_reg(st, SCA3000_REG_CTRL_SEL_OUT_CTRL); ret = sca3000_read_ctrl_reg(st, SCA3000_REG_CTRL_SEL_OUT_CTRL);
mutex_unlock(&st->lock); mutex_unlock(&st->lock);
if (ret) if (ret < 0)
goto error_ret; goto error_ret;
val = ret; val = ret;
if (base_freq > 0) if (base_freq > 0)
......
...@@ -21,7 +21,7 @@ static int ad7606_spi_read_block(struct device *dev, ...@@ -21,7 +21,7 @@ static int ad7606_spi_read_block(struct device *dev,
{ {
struct spi_device *spi = to_spi_device(dev); struct spi_device *spi = to_spi_device(dev);
int i, ret; int i, ret;
unsigned short *data; unsigned short *data = buf;
__be16 *bdata = buf; __be16 *bdata = buf;
ret = spi_read(spi, buf, count * 2); ret = spi_read(spi, buf, count * 2);
......
...@@ -444,10 +444,10 @@ static ssize_t ad5933_store(struct device *dev, ...@@ -444,10 +444,10 @@ static ssize_t ad5933_store(struct device *dev,
st->settling_cycles = val; st->settling_cycles = val;
/* 2x, 4x handling, see datasheet */ /* 2x, 4x handling, see datasheet */
if (val > 511) if (val > 1022)
val = (val >> 1) | (1 << 9);
else if (val > 1022)
val = (val >> 2) | (3 << 9); val = (val >> 2) | (3 << 9);
else if (val > 511)
val = (val >> 1) | (1 << 9);
dat = cpu_to_be16(val); dat = cpu_to_be16(val);
ret = ad5933_i2c_write(st->client, ret = ad5933_i2c_write(st->client,
......
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