aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iio/magnetometer
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/magnetometer
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/magnetometer')
-rw-r--r--drivers/iio/magnetometer/st_magn.h3
-rw-r--r--drivers/iio/magnetometer/st_magn_core.c18
-rw-r--r--drivers/iio/magnetometer/st_magn_i2c.c3
-rw-r--r--drivers/iio/magnetometer/st_magn_spi.c3
4 files changed, 12 insertions, 15 deletions
diff --git a/drivers/iio/magnetometer/st_magn.h b/drivers/iio/magnetometer/st_magn.h
index 694e33e0fb72..7e81d00ef0c3 100644
--- a/drivers/iio/magnetometer/st_magn.h
+++ b/drivers/iio/magnetometer/st_magn.h
@@ -18,8 +18,7 @@
18#define LSM303DLM_MAGN_DEV_NAME "lsm303dlm_magn" 18#define LSM303DLM_MAGN_DEV_NAME "lsm303dlm_magn"
19#define LIS3MDL_MAGN_DEV_NAME "lis3mdl" 19#define LIS3MDL_MAGN_DEV_NAME "lis3mdl"
20 20
21int st_magn_common_probe(struct iio_dev *indio_dev, 21int st_magn_common_probe(struct iio_dev *indio_dev);
22 struct st_sensors_platform_data *pdata);
23void st_magn_common_remove(struct iio_dev *indio_dev); 22void st_magn_common_remove(struct iio_dev *indio_dev);
24 23
25#ifdef CONFIG_IIO_BUFFER 24#ifdef CONFIG_IIO_BUFFER
diff --git a/drivers/iio/magnetometer/st_magn_core.c b/drivers/iio/magnetometer/st_magn_core.c
index 68cae86dbd29..8ade473f99fe 100644
--- a/drivers/iio/magnetometer/st_magn_core.c
+++ b/drivers/iio/magnetometer/st_magn_core.c
@@ -149,7 +149,7 @@ static const struct iio_chan_spec st_magn_2_16bit_channels[] = {
149 IIO_CHAN_SOFT_TIMESTAMP(3) 149 IIO_CHAN_SOFT_TIMESTAMP(3)
150}; 150};
151 151
152static const struct st_sensors st_magn_sensors[] = { 152static const struct st_sensor_settings st_magn_sensors_settings[] = {
153 { 153 {
154 .wai = ST_MAGN_1_WAI_EXP, 154 .wai = ST_MAGN_1_WAI_EXP,
155 .sensors_supported = { 155 .sensors_supported = {
@@ -361,8 +361,7 @@ static const struct iio_info magn_info = {
361 .write_raw = &st_magn_write_raw, 361 .write_raw = &st_magn_write_raw,
362}; 362};
363 363
364int st_magn_common_probe(struct iio_dev *indio_dev, 364int st_magn_common_probe(struct iio_dev *indio_dev)
365 struct st_sensors_platform_data *pdata)
366{ 365{
367 struct st_sensor_data *mdata = iio_priv(indio_dev); 366 struct st_sensor_data *mdata = iio_priv(indio_dev);
368 int irq = mdata->get_irq_data_ready(indio_dev); 367 int irq = mdata->get_irq_data_ready(indio_dev);
@@ -374,20 +373,21 @@ int st_magn_common_probe(struct iio_dev *indio_dev,
374 st_sensors_power_enable(indio_dev); 373 st_sensors_power_enable(indio_dev);
375 374
376 err = st_sensors_check_device_support(indio_dev, 375 err = st_sensors_check_device_support(indio_dev,
377 ARRAY_SIZE(st_magn_sensors), st_magn_sensors); 376 ARRAY_SIZE(st_magn_sensors_settings),
377 st_magn_sensors_settings);
378 if (err < 0) 378 if (err < 0)
379 return err; 379 return err;
380 380
381 mdata->num_data_channels = ST_MAGN_NUMBER_DATA_CHANNELS; 381 mdata->num_data_channels = ST_MAGN_NUMBER_DATA_CHANNELS;
382 mdata->multiread_bit = mdata->sensor->multi_read_bit; 382 mdata->multiread_bit = mdata->sensor_settings->multi_read_bit;
383 indio_dev->channels = mdata->sensor->ch; 383 indio_dev->channels = mdata->sensor_settings->ch;
384 indio_dev->num_channels = ST_SENSORS_NUMBER_ALL_CHANNELS; 384 indio_dev->num_channels = ST_SENSORS_NUMBER_ALL_CHANNELS;
385 385
386 mdata->current_fullscale = (struct st_sensor_fullscale_avl *) 386 mdata->current_fullscale = (struct st_sensor_fullscale_avl *)
387 &mdata->sensor->fs.fs_avl[0]; 387 &mdata->sensor_settings->fs.fs_avl[0];
388 mdata->odr = mdata->sensor->odr.odr_avl[0].hz; 388 mdata->odr = mdata->sensor_settings->odr.odr_avl[0].hz;
389 389
390 err = st_sensors_init_sensor(indio_dev, pdata); 390 err = st_sensors_init_sensor(indio_dev, NULL);
391 if (err < 0) 391 if (err < 0)
392 return err; 392 return err;
393 393
diff --git a/drivers/iio/magnetometer/st_magn_i2c.c b/drivers/iio/magnetometer/st_magn_i2c.c
index 689250058442..92e5c15452a3 100644
--- a/drivers/iio/magnetometer/st_magn_i2c.c
+++ b/drivers/iio/magnetometer/st_magn_i2c.c
@@ -51,12 +51,11 @@ static int st_magn_i2c_probe(struct i2c_client *client,
51 return -ENOMEM; 51 return -ENOMEM;
52 52
53 mdata = iio_priv(indio_dev); 53 mdata = iio_priv(indio_dev);
54 mdata->dev = &client->dev;
55 st_sensors_of_i2c_probe(client, st_magn_of_match); 54 st_sensors_of_i2c_probe(client, st_magn_of_match);
56 55
57 st_sensors_i2c_configure(indio_dev, client, mdata); 56 st_sensors_i2c_configure(indio_dev, client, mdata);
58 57
59 err = st_magn_common_probe(indio_dev, NULL); 58 err = st_magn_common_probe(indio_dev);
60 if (err < 0) 59 if (err < 0)
61 return err; 60 return err;
62 61
diff --git a/drivers/iio/magnetometer/st_magn_spi.c b/drivers/iio/magnetometer/st_magn_spi.c
index a6143ea51dfc..7adacf160146 100644
--- a/drivers/iio/magnetometer/st_magn_spi.c
+++ b/drivers/iio/magnetometer/st_magn_spi.c
@@ -29,11 +29,10 @@ static int st_magn_spi_probe(struct spi_device *spi)
29 return -ENOMEM; 29 return -ENOMEM;
30 30
31 mdata = iio_priv(indio_dev); 31 mdata = iio_priv(indio_dev);
32 mdata->dev = &spi->dev;
33 32
34 st_sensors_spi_configure(indio_dev, spi, mdata); 33 st_sensors_spi_configure(indio_dev, spi, mdata);
35 34
36 err = st_magn_common_probe(indio_dev, NULL); 35 err = st_magn_common_probe(indio_dev);
37 if (err < 0) 36 if (err < 0)
38 return err; 37 return err;
39 38