aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iio/accel
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-11-05 14:42:48 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-11-05 14:42:48 -0500
commitbe61a0d78449f53519905640ac3a9f24c197cbaf (patch)
tree216a7655e2d6dc8f751214aa93a4863a27954a98 /drivers/iio/accel
parent7be921a226dcbbbd8fb6f5d63bea4856b3a11624 (diff)
parent4e4cd14e7cbead5ca20465f4a7ce973d42434a2f (diff)
Merge tag 'iio-for-3.19a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next
Jonathan writes: First round of new drivers, features and cleanups for IIO in the 3.19 cycle. New drivers / supported parts * rockchip - rk3066-tsadc variant * si7020 humidity and temperature sensor * mcp320x - add mcp3001, mcp3002, mcp3004, mcp3008, mcp3201, mcp3202 * bmp280 pressure and temperature sensor * Qualcomm SPMI PMIC current ADC driver * Exynos_adc - support exynos7 New features * vf610-adc - add temperature sensor support * Documentation of current attributes, scaled pressure, offset and scaled humidity, RGBC intensity gain factor and scale applied to differential voltage channels. * Bring iio_event_monitor up to date with newer modifiers. * Add of_xlate function to allow for complex channel mappings from the device tree. * Add -g parameter to generic_buffer example to allow for devices with directly fed (no trigger) buffers. * Move exynos driver over to syscon for PMU register access. Cleanups, fixes for new drivers * lis3l02dq drop an unneeded else. * st sensors - renam st_sensors to st_sensor_settings (for clarity) * st sensors - drop an unused parameter from all the probe utility functions. * vf610 better error handling and tidy up. * si7020 - cleanups following merge * as3935 - drop some unnecessary semicolons. * bmp280 - fix the pressure calculation.
Diffstat (limited to 'drivers/iio/accel')
-rw-r--r--drivers/iio/accel/st_accel.h3
-rw-r--r--drivers/iio/accel/st_accel_core.c22
-rw-r--r--drivers/iio/accel/st_accel_i2c.c3
-rw-r--r--drivers/iio/accel/st_accel_spi.c3
4 files changed, 14 insertions, 17 deletions
diff --git a/drivers/iio/accel/st_accel.h b/drivers/iio/accel/st_accel.h
index c3877630b2e4..fa9646034305 100644
--- a/drivers/iio/accel/st_accel.h
+++ b/drivers/iio/accel/st_accel.h
@@ -33,8 +33,7 @@ static const struct st_sensors_platform_data default_accel_pdata = {
33 .drdy_int_pin = 1, 33 .drdy_int_pin = 1,
34}; 34};
35 35
36int st_accel_common_probe(struct iio_dev *indio_dev, 36int st_accel_common_probe(struct iio_dev *indio_dev);
37 struct st_sensors_platform_data *pdata);
38void st_accel_common_remove(struct iio_dev *indio_dev); 37void st_accel_common_remove(struct iio_dev *indio_dev);
39 38
40#ifdef CONFIG_IIO_BUFFER 39#ifdef CONFIG_IIO_BUFFER
diff --git a/drivers/iio/accel/st_accel_core.c b/drivers/iio/accel/st_accel_core.c
index 087864854c61..53f32629283a 100644
--- a/drivers/iio/accel/st_accel_core.c
+++ b/drivers/iio/accel/st_accel_core.c
@@ -161,7 +161,7 @@ static const struct iio_chan_spec st_accel_16bit_channels[] = {
161 IIO_CHAN_SOFT_TIMESTAMP(3) 161 IIO_CHAN_SOFT_TIMESTAMP(3)
162}; 162};
163 163
164static const struct st_sensors st_accel_sensors[] = { 164static const struct st_sensor_settings st_accel_sensors_settings[] = {
165 { 165 {
166 .wai = ST_ACCEL_1_WAI_EXP, 166 .wai = ST_ACCEL_1_WAI_EXP,
167 .sensors_supported = { 167 .sensors_supported = {
@@ -457,8 +457,7 @@ static const struct iio_trigger_ops st_accel_trigger_ops = {
457#define ST_ACCEL_TRIGGER_OPS NULL 457#define ST_ACCEL_TRIGGER_OPS NULL
458#endif 458#endif
459 459
460int st_accel_common_probe(struct iio_dev *indio_dev, 460int st_accel_common_probe(struct iio_dev *indio_dev)
461 struct st_sensors_platform_data *plat_data)
462{ 461{
463 struct st_sensor_data *adata = iio_priv(indio_dev); 462 struct st_sensor_data *adata = iio_priv(indio_dev);
464 int irq = adata->get_irq_data_ready(indio_dev); 463 int irq = adata->get_irq_data_ready(indio_dev);
@@ -470,24 +469,25 @@ int st_accel_common_probe(struct iio_dev *indio_dev,
470 st_sensors_power_enable(indio_dev); 469 st_sensors_power_enable(indio_dev);
471 470
472 err = st_sensors_check_device_support(indio_dev, 471 err = st_sensors_check_device_support(indio_dev,
473 ARRAY_SIZE(st_accel_sensors), st_accel_sensors); 472 ARRAY_SIZE(st_accel_sensors_settings),
473 st_accel_sensors_settings);
474 if (err < 0) 474 if (err < 0)
475 return err; 475 return err;
476 476
477 adata->num_data_channels = ST_ACCEL_NUMBER_DATA_CHANNELS; 477 adata->num_data_channels = ST_ACCEL_NUMBER_DATA_CHANNELS;
478 adata->multiread_bit = adata->sensor->multi_read_bit; 478 adata->multiread_bit = adata->sensor_settings->multi_read_bit;
479 indio_dev->channels = adata->sensor->ch; 479 indio_dev->channels = adata->sensor_settings->ch;
480 indio_dev->num_channels = ST_SENSORS_NUMBER_ALL_CHANNELS; 480 indio_dev->num_channels = ST_SENSORS_NUMBER_ALL_CHANNELS;
481 481
482 adata->current_fullscale = (struct st_sensor_fullscale_avl *) 482 adata->current_fullscale = (struct st_sensor_fullscale_avl *)
483 &adata->sensor->fs.fs_avl[0]; 483 &adata->sensor_settings->fs.fs_avl[0];
484 adata->odr = adata->sensor->odr.odr_avl[0].hz; 484 adata->odr = adata->sensor_settings->odr.odr_avl[0].hz;
485 485
486 if (!plat_data) 486 if (!adata->dev->platform_data)
487 plat_data = 487 adata->dev->platform_data =
488 (struct st_sensors_platform_data *)&default_accel_pdata; 488 (struct st_sensors_platform_data *)&default_accel_pdata;
489 489
490 err = st_sensors_init_sensor(indio_dev, plat_data); 490 err = st_sensors_init_sensor(indio_dev, adata->dev->platform_data);
491 if (err < 0) 491 if (err < 0)
492 return err; 492 return err;
493 493
diff --git a/drivers/iio/accel/st_accel_i2c.c b/drivers/iio/accel/st_accel_i2c.c
index 7164aeff3ab1..c7246bdd30b9 100644
--- a/drivers/iio/accel/st_accel_i2c.c
+++ b/drivers/iio/accel/st_accel_i2c.c
@@ -79,12 +79,11 @@ static int st_accel_i2c_probe(struct i2c_client *client,
79 return -ENOMEM; 79 return -ENOMEM;
80 80
81 adata = iio_priv(indio_dev); 81 adata = iio_priv(indio_dev);
82 adata->dev = &client->dev;
83 st_sensors_of_i2c_probe(client, st_accel_of_match); 82 st_sensors_of_i2c_probe(client, st_accel_of_match);
84 83
85 st_sensors_i2c_configure(indio_dev, client, adata); 84 st_sensors_i2c_configure(indio_dev, client, adata);
86 85
87 err = st_accel_common_probe(indio_dev, client->dev.platform_data); 86 err = st_accel_common_probe(indio_dev);
88 if (err < 0) 87 if (err < 0)
89 return err; 88 return err;
90 89
diff --git a/drivers/iio/accel/st_accel_spi.c b/drivers/iio/accel/st_accel_spi.c
index 195639646e34..12ec29389e4b 100644
--- a/drivers/iio/accel/st_accel_spi.c
+++ b/drivers/iio/accel/st_accel_spi.c
@@ -29,11 +29,10 @@ static int st_accel_spi_probe(struct spi_device *spi)
29 return -ENOMEM; 29 return -ENOMEM;
30 30
31 adata = iio_priv(indio_dev); 31 adata = iio_priv(indio_dev);
32 adata->dev = &spi->dev;
33 32
34 st_sensors_spi_configure(indio_dev, spi, adata); 33 st_sensors_spi_configure(indio_dev, spi, adata);
35 34
36 err = st_accel_common_probe(indio_dev, spi->dev.platform_data); 35 err = st_accel_common_probe(indio_dev);
37 if (err < 0) 36 if (err < 0)
38 return err; 37 return err;
39 38