Commit ef1d17d7 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Merge tag 'iio-fixes-for-3.8a' of...

Merge tag 'iio-fixes-for-3.8a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-linus

Jonathan says:

	First round of fixes for IIO post 3.8-rc1.

	A set of worthy if rather dull little fixes.

	* A whole set of incorrect error handling on regulator voltage requests.
	* An error in the probe path for max1363.
	* A couple of Kconfig issues with missing/ignored dependencies.
	* A nasty shift vs compare typo in adf4350
	* Bug fixes for a silly error that prevents at91_adc driver building.
parents da849a92 678fb42e
...@@ -8,6 +8,7 @@ config HID_SENSOR_ACCEL_3D ...@@ -8,6 +8,7 @@ config HID_SENSOR_ACCEL_3D
select IIO_BUFFER select IIO_BUFFER
select IIO_TRIGGERED_BUFFER select IIO_TRIGGERED_BUFFER
select HID_SENSOR_IIO_COMMON select HID_SENSOR_IIO_COMMON
select HID_SENSOR_IIO_TRIGGER
tristate "HID Accelerometers 3D" tristate "HID Accelerometers 3D"
help help
Say yes here to build support for the HID SENSOR Say yes here to build support for the HID SENSOR
......
...@@ -411,7 +411,11 @@ static int __devinit ad7266_probe(struct spi_device *spi) ...@@ -411,7 +411,11 @@ static int __devinit ad7266_probe(struct spi_device *spi)
if (ret) if (ret)
goto error_put_reg; goto error_put_reg;
st->vref_uv = regulator_get_voltage(st->reg); ret = regulator_get_voltage(st->reg);
if (ret < 0)
goto error_disable_reg;
st->vref_uv = ret;
} else { } else {
/* Use internal reference */ /* Use internal reference */
st->vref_uv = 2500000; st->vref_uv = 2500000;
......
...@@ -80,7 +80,7 @@ static irqreturn_t at91_adc_trigger_handler(int irq, void *p) ...@@ -80,7 +80,7 @@ static irqreturn_t at91_adc_trigger_handler(int irq, void *p)
*timestamp = pf->timestamp; *timestamp = pf->timestamp;
} }
iio_push_to_buffers(indio_dev, (u8 *)st->buffer); iio_push_to_buffers(idev, (u8 *)st->buffer);
iio_trigger_notify_done(idev->trig); iio_trigger_notify_done(idev->trig);
......
...@@ -1605,19 +1605,20 @@ static int __devinit max1363_probe(struct i2c_client *client, ...@@ -1605,19 +1605,20 @@ static int __devinit max1363_probe(struct i2c_client *client,
return 0; return 0;
error_free_irq: error_free_irq:
free_irq(st->client->irq, indio_dev); if (client->irq)
free_irq(st->client->irq, indio_dev);
error_uninit_buffer: error_uninit_buffer:
iio_buffer_unregister(indio_dev); iio_buffer_unregister(indio_dev);
error_cleanup_buffer: error_cleanup_buffer:
max1363_buffer_cleanup(indio_dev); max1363_buffer_cleanup(indio_dev);
error_free_available_scan_masks: error_free_available_scan_masks:
kfree(indio_dev->available_scan_masks); kfree(indio_dev->available_scan_masks);
error_unregister_map:
iio_map_array_unregister(indio_dev, client->dev.platform_data);
error_disable_reg: error_disable_reg:
regulator_disable(st->reg); regulator_disable(st->reg);
error_put_reg: error_put_reg:
regulator_put(st->reg); regulator_put(st->reg);
error_unregister_map:
iio_map_array_unregister(indio_dev, client->dev.platform_data);
error_free_device: error_free_device:
iio_device_free(indio_dev); iio_device_free(indio_dev);
error_out: error_out:
...@@ -1635,10 +1636,8 @@ static int __devexit max1363_remove(struct i2c_client *client) ...@@ -1635,10 +1636,8 @@ static int __devexit max1363_remove(struct i2c_client *client)
iio_buffer_unregister(indio_dev); iio_buffer_unregister(indio_dev);
max1363_buffer_cleanup(indio_dev); max1363_buffer_cleanup(indio_dev);
kfree(indio_dev->available_scan_masks); kfree(indio_dev->available_scan_masks);
if (!IS_ERR(st->reg)) { regulator_disable(st->reg);
regulator_disable(st->reg); regulator_put(st->reg);
regulator_put(st->reg);
}
iio_map_array_unregister(indio_dev, client->dev.platform_data); iio_map_array_unregister(indio_dev, client->dev.platform_data);
iio_device_free(indio_dev); iio_device_free(indio_dev);
......
...@@ -6,7 +6,7 @@ menu "Hid Sensor IIO Common" ...@@ -6,7 +6,7 @@ menu "Hid Sensor IIO Common"
config HID_SENSOR_IIO_COMMON config HID_SENSOR_IIO_COMMON
tristate "Common modules for all HID Sensor IIO drivers" tristate "Common modules for all HID Sensor IIO drivers"
depends on HID_SENSOR_HUB depends on HID_SENSOR_HUB
select IIO_TRIGGER if IIO_BUFFER select HID_SENSOR_IIO_TRIGGER if IIO_BUFFER
help help
Say yes here to build support for HID sensor to use Say yes here to build support for HID sensor to use
HID sensor common processing for attributes and IIO triggers. HID sensor common processing for attributes and IIO triggers.
...@@ -14,6 +14,17 @@ config HID_SENSOR_IIO_COMMON ...@@ -14,6 +14,17 @@ config HID_SENSOR_IIO_COMMON
HID sensor drivers, this module contains processing for those HID sensor drivers, this module contains processing for those
attributes. attributes.
config HID_SENSOR_IIO_TRIGGER
tristate "Common module (trigger) for all HID Sensor IIO drivers"
depends on HID_SENSOR_HUB && HID_SENSOR_IIO_COMMON
select IIO_TRIGGER
help
Say yes here to build trigger support for HID sensors.
Triggers will be send if all requested attributes were read.
If this driver is compiled as a module, it will be named
hid-sensor-trigger.
config HID_SENSOR_ENUM_BASE_QUIRKS config HID_SENSOR_ENUM_BASE_QUIRKS
bool "ENUM base quirks for HID Sensor IIO drivers" bool "ENUM base quirks for HID Sensor IIO drivers"
depends on HID_SENSOR_IIO_COMMON depends on HID_SENSOR_IIO_COMMON
......
...@@ -3,4 +3,5 @@ ...@@ -3,4 +3,5 @@
# #
obj-$(CONFIG_HID_SENSOR_IIO_COMMON) += hid-sensor-iio-common.o obj-$(CONFIG_HID_SENSOR_IIO_COMMON) += hid-sensor-iio-common.o
hid-sensor-iio-common-y := hid-sensor-attributes.o hid-sensor-trigger.o obj-$(CONFIG_HID_SENSOR_IIO_TRIGGER) += hid-sensor-trigger.o
hid-sensor-iio-common-y := hid-sensor-attributes.o
...@@ -406,7 +406,11 @@ static int __devinit ad5380_probe(struct device *dev, struct regmap *regmap, ...@@ -406,7 +406,11 @@ static int __devinit ad5380_probe(struct device *dev, struct regmap *regmap,
goto error_free_reg; goto error_free_reg;
} }
st->vref = regulator_get_voltage(st->vref_reg); ret = regulator_get_voltage(st->vref_reg);
if (ret < 0)
goto error_disable_reg;
st->vref = ret;
} else { } else {
st->vref = st->chip_info->int_vref; st->vref = st->chip_info->int_vref;
ctrl |= AD5380_CTRL_INT_VREF_EN; ctrl |= AD5380_CTRL_INT_VREF_EN;
......
...@@ -226,7 +226,11 @@ static int __devinit ad5446_probe(struct device *dev, const char *name, ...@@ -226,7 +226,11 @@ static int __devinit ad5446_probe(struct device *dev, const char *name,
if (ret) if (ret)
goto error_put_reg; goto error_put_reg;
voltage_uv = regulator_get_voltage(reg); ret = regulator_get_voltage(reg);
if (ret < 0)
goto error_disable_reg;
voltage_uv = ret;
} }
indio_dev = iio_device_alloc(sizeof(*st)); indio_dev = iio_device_alloc(sizeof(*st));
......
...@@ -296,7 +296,11 @@ static int __devinit ad5504_probe(struct spi_device *spi) ...@@ -296,7 +296,11 @@ static int __devinit ad5504_probe(struct spi_device *spi)
if (ret) if (ret)
goto error_put_reg; goto error_put_reg;
voltage_uv = regulator_get_voltage(reg); ret = regulator_get_voltage(reg);
if (ret < 0)
goto error_disable_reg;
voltage_uv = ret;
} }
spi_set_drvdata(spi, indio_dev); spi_set_drvdata(spi, indio_dev);
......
...@@ -238,7 +238,11 @@ static int __devinit ad5624r_probe(struct spi_device *spi) ...@@ -238,7 +238,11 @@ static int __devinit ad5624r_probe(struct spi_device *spi)
if (ret) if (ret)
goto error_put_reg; goto error_put_reg;
voltage_uv = regulator_get_voltage(st->reg); ret = regulator_get_voltage(st->reg);
if (ret < 0)
goto error_disable_reg;
voltage_uv = ret;
} }
spi_set_drvdata(spi, indio_dev); spi_set_drvdata(spi, indio_dev);
......
...@@ -332,7 +332,11 @@ static int __devinit ad5686_probe(struct spi_device *spi) ...@@ -332,7 +332,11 @@ static int __devinit ad5686_probe(struct spi_device *spi)
if (ret) if (ret)
goto error_put_reg; goto error_put_reg;
voltage_uv = regulator_get_voltage(st->reg); ret = regulator_get_voltage(st->reg);
if (ret < 0)
goto error_disable_reg;
voltage_uv = ret;
} }
st->chip_info = st->chip_info =
......
...@@ -365,7 +365,11 @@ static int __devinit ad5791_probe(struct spi_device *spi) ...@@ -365,7 +365,11 @@ static int __devinit ad5791_probe(struct spi_device *spi)
if (ret) if (ret)
goto error_put_reg_pos; goto error_put_reg_pos;
pos_voltage_uv = regulator_get_voltage(st->reg_vdd); ret = regulator_get_voltage(st->reg_vdd);
if (ret < 0)
goto error_disable_reg_pos;
pos_voltage_uv = ret;
} }
st->reg_vss = regulator_get(&spi->dev, "vss"); st->reg_vss = regulator_get(&spi->dev, "vss");
...@@ -374,7 +378,11 @@ static int __devinit ad5791_probe(struct spi_device *spi) ...@@ -374,7 +378,11 @@ static int __devinit ad5791_probe(struct spi_device *spi)
if (ret) if (ret)
goto error_put_reg_neg; goto error_put_reg_neg;
neg_voltage_uv = regulator_get_voltage(st->reg_vss); ret = regulator_get_voltage(st->reg_vss);
if (ret < 0)
goto error_disable_reg_neg;
neg_voltage_uv = ret;
} }
st->pwr_down = true; st->pwr_down = true;
...@@ -428,6 +436,7 @@ static int __devinit ad5791_probe(struct spi_device *spi) ...@@ -428,6 +436,7 @@ static int __devinit ad5791_probe(struct spi_device *spi)
if (!IS_ERR(st->reg_vss)) if (!IS_ERR(st->reg_vss))
regulator_put(st->reg_vss); regulator_put(st->reg_vss);
error_disable_reg_pos:
if (!IS_ERR(st->reg_vdd)) if (!IS_ERR(st->reg_vdd))
regulator_disable(st->reg_vdd); regulator_disable(st->reg_vdd);
error_put_reg_pos: error_put_reg_pos:
......
...@@ -173,7 +173,7 @@ static int adf4350_set_freq(struct adf4350_state *st, unsigned long long freq) ...@@ -173,7 +173,7 @@ static int adf4350_set_freq(struct adf4350_state *st, unsigned long long freq)
} while ((st->r1_mod > ADF4350_MAX_MODULUS) && r_cnt); } while ((st->r1_mod > ADF4350_MAX_MODULUS) && r_cnt);
} while (r_cnt == 0); } while (r_cnt == 0);
tmp = freq * (u64)st->r1_mod + (st->fpfd > 1); tmp = freq * (u64)st->r1_mod + (st->fpfd >> 1);
do_div(tmp, st->fpfd); /* Div round closest (n + d/2)/d */ do_div(tmp, st->fpfd); /* Div round closest (n + d/2)/d */
st->r0_fract = do_div(tmp, st->r1_mod); st->r0_fract = do_div(tmp, st->r1_mod);
st->r0_int = tmp; st->r0_int = tmp;
......
...@@ -17,6 +17,7 @@ config HID_SENSOR_GYRO_3D ...@@ -17,6 +17,7 @@ config HID_SENSOR_GYRO_3D
select IIO_BUFFER select IIO_BUFFER
select IIO_TRIGGERED_BUFFER select IIO_TRIGGERED_BUFFER
select HID_SENSOR_IIO_COMMON select HID_SENSOR_IIO_COMMON
select HID_SENSOR_IIO_TRIGGER
tristate "HID Gyroscope 3D" tristate "HID Gyroscope 3D"
help help
Say yes here to build support for the HID SENSOR Say yes here to build support for the HID SENSOR
......
...@@ -47,6 +47,7 @@ config HID_SENSOR_ALS ...@@ -47,6 +47,7 @@ config HID_SENSOR_ALS
select IIO_BUFFER select IIO_BUFFER
select IIO_TRIGGERED_BUFFER select IIO_TRIGGERED_BUFFER
select HID_SENSOR_IIO_COMMON select HID_SENSOR_IIO_COMMON
select HID_SENSOR_IIO_TRIGGER
tristate "HID ALS" tristate "HID ALS"
help help
Say yes here to build support for the HID SENSOR Say yes here to build support for the HID SENSOR
......
...@@ -8,6 +8,7 @@ config HID_SENSOR_MAGNETOMETER_3D ...@@ -8,6 +8,7 @@ config HID_SENSOR_MAGNETOMETER_3D
select IIO_BUFFER select IIO_BUFFER
select IIO_TRIGGERED_BUFFER select IIO_TRIGGERED_BUFFER
select HID_SENSOR_IIO_COMMON select HID_SENSOR_IIO_COMMON
select HID_SENSOR_IIO_TRIGGER
tristate "HID Magenetometer 3D" tristate "HID Magenetometer 3D"
help help
Say yes here to build support for the HID SENSOR Say yes here to build support for the HID SENSOR
......
...@@ -27,8 +27,8 @@ config ADIS16130 ...@@ -27,8 +27,8 @@ config ADIS16130
config ADIS16260 config ADIS16260
tristate "Analog Devices ADIS16260 Digital Gyroscope Sensor SPI driver" tristate "Analog Devices ADIS16260 Digital Gyroscope Sensor SPI driver"
depends on SPI depends on SPI
select IIO_TRIGGER if IIO_BUFFER select IIO_ADIS_LIB
select IIO_SW_RING if IIO_BUFFER select IIO_ADIS_LIB_BUFFER if IIO_BUFFER
help help
Say yes here to build support for Analog Devices ADIS16260 ADIS16265 Say yes here to build support for Analog Devices ADIS16260 ADIS16265
ADIS16250 ADIS16255 and ADIS16251 programmable digital gyroscope sensors. ADIS16250 ADIS16255 and ADIS16251 programmable digital gyroscope sensors.
......
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