diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-07-17 13:04:05 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-07-17 13:04:05 +0300 |
commit | f6b35db072dcf25365972503ade853960da5c984 (patch) | |
tree | 244ad967bfd5bc34a36ca1912d35f6a7a96ec70c /drivers/iio/pressure | |
parent | 419317021ccc8957d9cf11bf2500c2cff37ca6c7 (diff) | |
parent | 62a30a292a8283b3022b602964ff7484d5824841 (diff) | |
download | linux-f6b35db072dcf25365972503ade853960da5c984.tar.xz |
Merge tag 'iio-for-5.9a-take2' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next
Jonathan writes:
First set of new device support, cleanups and features for IIO in the 5.9 cycle
Some new devices, but particularly good this time is the core rework coming
from Alexandru. Some of this has been in Analog's tree a long time, but other
parts are motivated by closing down common mistakes in new drivers.
Changes since first try at this pull request:
* Add missed patch to actually remove iio_priv_to_dev and as a result
also drop a few ingenic patches that need to be updated to take this
into account.
* Fix an ordering issue int he pollfunc attach in the core rework.
New device support
* qcom pmic7 adc
- New driver using common qcom-vadc library. Some associated cleanups and
refactors.
* invensense icm42600
- New driver supporting icm42600, icm42602, icm42605 and icm42622 via i2c
or spi. These are all 6 axis IMUs with gyro and accelerometers.
Driver supports buffered modes using the hardware fifo and interpolation
for accurate timestamps.
* sensirion scd30
- New driver for this carbon dioxide sensor including i2c and serial
interfaces + bindings.
Features
* ak8975
- Add reset gpio support.
* bma400
- Support SPI.
* bmc150
- Document and add support for bmc156b and bmm150b, tidy up _magn endings.
* bmi160
- Regulator and mount matrix support.
* mxc4005
- Add ID for mxc6655
* rockchip-saradc
- Triggered buffer support.
DT bindings
* qcom spmi-vadc converted to yaml + pmic7 bindings
* ak8975 tidy up and convert to yaml + add reset-gpio binding
* ingenic-adc -convert to yaml.
Core rework all carried through by Alexandru Ardelean.
* Assign parent device in the core rather than every driver. A few devices
need to provide specific non standard parents, so there is support for
overriding.
* Start to take parts of struct iio_dev opaque to the drivers.
This will be a long term job, but should reduce the number of drivers
we get that use parts that are currently only 'internal' by documentation.
* Move attach and detach of pollfunc to the core. Every triggered buffer
using driver had to do the same thing, so lets do it in the core. The
hard part here was getting all the drivers into canonical form so there
would be no functional changes in this final patch. That's taken quite
a lot of work over last couple of cycles!
Cleanups and minor fixes.
* docs
- Improve IIO_CONCENTRATION channel type description in ABI docs.
- Drop doubled word cases.
- Http to Https conversion.
* core
- Make iio_device_get_drvdata take a const struct iio_dev * avoiding some
nasty casts.
* ADCs
- Drop lots of users of of_match_ptr macro, includes of mod_devicetable.h
and CONFIG_OF protections. These prevent use of ACPI PRP0001 with these
drivers and get coppied into lots of new drivers.
* ad5380
- Constify iio_chan_spec_ext_info
* ad5592r
- Constify iio_chan_spec_ext_info
- Avoid use of iio_priv_to_dev (precursor to taking parts of iio_dev opaque)
* ad8366
- Make gpio optional as doesn't matter if its there or not.
* adis16480
- Use irq types instead of the flags.
* atlas-ezo-sensor
- Minimize scope of ret variable.
* at91-adc
- Add COMPILE_TEST dependency to driver to improve build coverage.
- Avoid use of iio_priv_to_dev (precursor to taking parts of iio_dev opaque)
* at91-sama5d2
- Avoid use of iio_priv_to_dev (precursor to taking parts of iio_dev opaque)
- Drop Ludovic as a co-maintaienr.
* cros_ec
- Reapply the range after resume.
- Add a read only frequency entry for legacy version.
- Typo fixes
* hts221
- Avoid use of iio_priv_to_dev (precursor to taking parts of iio_dev opaque)
* inv_mpu
- Drop double check on ACPI companion device.
* iqs621
- Avoid use of iio_priv_to_dev (precursor to taking parts of iio_dev opaque)
* iqs624
- Avoid use of iio_priv_to_dev (precursor to taking parts of iio_dev opaque)
* max11100
- Constify iio_chan_spec
* mmc35240
- Constify reg_default
* rockchip-saradc
- Move to managed allocators for everything in probe.
- Use more distinctive prefix for channel macros.
* stk3310
- Constify regmap_config.
* stm32-adc
- Avoid use of iio_priv_to_dev (precursor to taking parts of iio_dev opaque)
* stm32-dfsdm-adc
- Avoid use of iio_priv_to_dev (precursor to taking parts of iio_dev opaque)
* ti-am335x
- Use managed allocations where straight forward in probe function.
* tsl2563
- Avoid use of iio_priv_to_dev (precursor to taking parts of iio_dev opaque)
* tag 'iio-for-5.9a-take2' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio: (107 commits)
iio: buffer: fix attach/detach pollfunc order
iio: core: remove iio_priv_to_dev() helper
Replace HTTP links with HTTPS ones: drivers/iio
Replace HTTP links with HTTPS ones: Documentation/devicetree/bindings/iio
dt-bindings: iio/adc: Convert ingenic-adc docs to YAML.
iio: cros_ec_accel_legacy: Add Read Only frequency entries
MAINTAINERS: adc: at91-sama5d2_adc: remove myself as co-maintainer
iio: adc: ti_am335x_adc: alloc kfifo & IRQ via devm_ functions
iio: adc: ti_am335x_adc: alloc channels via devm_kcalloc()
iio:adc:ingenic: drop of_match_ptr protection and include mod_devicetable.h
iio:adc:ti-tlc4541: Drop CONFIG_OF and of_match_ptr protections.
iio:adc:ti-adc161s626: Drop of_match_ptr protection.
iio:adc:ti-adc084s021: drop of_match_ptr protection
iio:adc:ti-adc0832: drop CONFIG_OF and of_match_ptr protections
iio:adc:ti-adc081c: Drop of_match_ptr and change to mod_devicetable.h
iio:adc:sd_adc_modulator: Drop of_match_ptr and tweak includes
iio:adc:mcp3422: remove CONFIG_OF and of_match_ptr protections
iio:adc:mcp320x: Drop CONFIG_OF and of_match_ptr protections
iio:adc:max1118: Drop CONFIG_OF / of_match_ptr protections
iio:adc:max11100: Drop of_match_ptr protection / add mod_devicetable.h include
...
Diffstat (limited to 'drivers/iio/pressure')
-rw-r--r-- | drivers/iio/pressure/abp060mg.c | 1 | ||||
-rw-r--r-- | drivers/iio/pressure/bmp280-core.c | 1 | ||||
-rw-r--r-- | drivers/iio/pressure/cros_ec_baro.c | 8 | ||||
-rw-r--r-- | drivers/iio/pressure/dlhl60d.c | 4 | ||||
-rw-r--r-- | drivers/iio/pressure/dps310.c | 1 | ||||
-rw-r--r-- | drivers/iio/pressure/hid-sensor-press.c | 1 | ||||
-rw-r--r-- | drivers/iio/pressure/hp03.c | 1 | ||||
-rw-r--r-- | drivers/iio/pressure/hp206c.c | 1 | ||||
-rw-r--r-- | drivers/iio/pressure/icp10100.c | 1 | ||||
-rw-r--r-- | drivers/iio/pressure/mpl115.c | 1 | ||||
-rw-r--r-- | drivers/iio/pressure/mpl3115.c | 1 | ||||
-rw-r--r-- | drivers/iio/pressure/ms5611_core.c | 1 | ||||
-rw-r--r-- | drivers/iio/pressure/ms5637.c | 1 | ||||
-rw-r--r-- | drivers/iio/pressure/st_pressure_buffer.c | 26 | ||||
-rw-r--r-- | drivers/iio/pressure/t5403.c | 1 | ||||
-rw-r--r-- | drivers/iio/pressure/zpa2326.c | 28 |
16 files changed, 19 insertions, 59 deletions
diff --git a/drivers/iio/pressure/abp060mg.c b/drivers/iio/pressure/abp060mg.c index 267aad8af0a6..e1c3bdb371ee 100644 --- a/drivers/iio/pressure/abp060mg.c +++ b/drivers/iio/pressure/abp060mg.c @@ -194,7 +194,6 @@ static int abp060mg_probe(struct i2c_client *client, abp060mg_init_device(indio_dev, cfg_id); - indio_dev->dev.parent = &client->dev; indio_dev->name = dev_name(&client->dev); indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->info = &abp060mg_info; diff --git a/drivers/iio/pressure/bmp280-core.c b/drivers/iio/pressure/bmp280-core.c index 126a56d31b6e..6b7da40f99c8 100644 --- a/drivers/iio/pressure/bmp280-core.c +++ b/drivers/iio/pressure/bmp280-core.c @@ -1004,7 +1004,6 @@ int bmp280_common_probe(struct device *dev, mutex_init(&data->lock); data->dev = dev; - indio_dev->dev.parent = dev; indio_dev->name = name; indio_dev->channels = bmp280_channels; indio_dev->info = &bmp280_info; diff --git a/drivers/iio/pressure/cros_ec_baro.c b/drivers/iio/pressure/cros_ec_baro.c index c079b8960082..f0938b6fbba0 100644 --- a/drivers/iio/pressure/cros_ec_baro.c +++ b/drivers/iio/pressure/cros_ec_baro.c @@ -96,8 +96,11 @@ static int cros_ec_baro_write(struct iio_dev *indio_dev, /* Always roundup, so caller gets at least what it asks for. */ st->core.param.sensor_range.roundup = 1; - if (cros_ec_motion_send_host_cmd(&st->core, 0)) - ret = -EIO; + ret = cros_ec_motion_send_host_cmd(&st->core, 0); + if (ret == 0) { + st->core.range_updated = true; + st->core.curr_range = val; + } break; default: ret = cros_ec_sensors_core_write(&st->core, chan, val, val2, @@ -199,6 +202,7 @@ MODULE_DEVICE_TABLE(platform, cros_ec_baro_ids); static struct platform_driver cros_ec_baro_platform_driver = { .driver = { .name = "cros-ec-baro", + .pm = &cros_ec_sensors_pm_ops, }, .probe = cros_ec_baro_probe, .id_table = cros_ec_baro_ids, diff --git a/drivers/iio/pressure/dlhl60d.c b/drivers/iio/pressure/dlhl60d.c index b8c99e7bd6cf..ade73267d5eb 100644 --- a/drivers/iio/pressure/dlhl60d.c +++ b/drivers/iio/pressure/dlhl60d.c @@ -5,7 +5,7 @@ * Copyright (c) 2019 AVL DiTEST GmbH * Tomislav Denis <tomislav.denis@avl.com> * - * Datasheet: http://www.allsensors.com/cad/DS-0355_Rev_B.PDF + * Datasheet: https://www.allsensors.com/cad/DS-0355_Rev_B.PDF */ #include <linux/module.h> @@ -311,8 +311,6 @@ static int dlh_probe(struct i2c_client *client, st->use_interrupt = false; indio_dev->name = id->name; - indio_dev->dev.parent = &client->dev; - indio_dev->dev.of_node = client->dev.of_node; indio_dev->info = &dlh_info; indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->channels = dlh_channels; diff --git a/drivers/iio/pressure/dps310.c b/drivers/iio/pressure/dps310.c index 2c1943bbc433..0730380ceb69 100644 --- a/drivers/iio/pressure/dps310.c +++ b/drivers/iio/pressure/dps310.c @@ -732,7 +732,6 @@ static int dps310_probe(struct i2c_client *client, data->client = client; mutex_init(&data->lock); - iio->dev.parent = &client->dev; iio->name = id->name; iio->channels = dps310_channels; iio->num_channels = ARRAY_SIZE(dps310_channels); diff --git a/drivers/iio/pressure/hid-sensor-press.c b/drivers/iio/pressure/hid-sensor-press.c index 5e6663f757ae..5c458788f346 100644 --- a/drivers/iio/pressure/hid-sensor-press.c +++ b/drivers/iio/pressure/hid-sensor-press.c @@ -283,7 +283,6 @@ static int hid_press_probe(struct platform_device *pdev) indio_dev->num_channels = ARRAY_SIZE(press_channels); - indio_dev->dev.parent = &pdev->dev; indio_dev->info = &press_info; indio_dev->name = name; indio_dev->modes = INDIO_DIRECT_MODE; diff --git a/drivers/iio/pressure/hp03.c b/drivers/iio/pressure/hp03.c index 026ba15ef68f..e40b1d7dc129 100644 --- a/drivers/iio/pressure/hp03.c +++ b/drivers/iio/pressure/hp03.c @@ -224,7 +224,6 @@ static int hp03_probe(struct i2c_client *client, priv->client = client; mutex_init(&priv->lock); - indio_dev->dev.parent = dev; indio_dev->name = id->name; indio_dev->channels = hp03_channels; indio_dev->num_channels = ARRAY_SIZE(hp03_channels); diff --git a/drivers/iio/pressure/hp206c.c b/drivers/iio/pressure/hp206c.c index 1f931f5b7a65..986b7a59712e 100644 --- a/drivers/iio/pressure/hp206c.c +++ b/drivers/iio/pressure/hp206c.c @@ -378,7 +378,6 @@ static int hp206c_probe(struct i2c_client *client, indio_dev->info = &hp206c_info; indio_dev->name = id->name; - indio_dev->dev.parent = &client->dev; indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->channels = hp206c_channels; indio_dev->num_channels = ARRAY_SIZE(hp206c_channels); diff --git a/drivers/iio/pressure/icp10100.c b/drivers/iio/pressure/icp10100.c index 06cb5b63a189..90c0df068bbb 100644 --- a/drivers/iio/pressure/icp10100.c +++ b/drivers/iio/pressure/icp10100.c @@ -545,7 +545,6 @@ static int icp10100_probe(struct i2c_client *client, return -ENOMEM; i2c_set_clientdata(client, indio_dev); - indio_dev->dev.parent = &client->dev; indio_dev->name = client->name; indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->channels = icp10100_channels; diff --git a/drivers/iio/pressure/mpl115.c b/drivers/iio/pressure/mpl115.c index ca81a3dc5646..81f288312a28 100644 --- a/drivers/iio/pressure/mpl115.c +++ b/drivers/iio/pressure/mpl115.c @@ -160,7 +160,6 @@ int mpl115_probe(struct device *dev, const char *name, indio_dev->info = &mpl115_info; indio_dev->name = name; - indio_dev->dev.parent = dev; indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->channels = mpl115_channels; indio_dev->num_channels = ARRAY_SIZE(mpl115_channels); diff --git a/drivers/iio/pressure/mpl3115.c b/drivers/iio/pressure/mpl3115.c index d066f3c5a8a6..ccdb0b70e48c 100644 --- a/drivers/iio/pressure/mpl3115.c +++ b/drivers/iio/pressure/mpl3115.c @@ -241,7 +241,6 @@ static int mpl3115_probe(struct i2c_client *client, i2c_set_clientdata(client, indio_dev); indio_dev->info = &mpl3115_info; indio_dev->name = id->name; - indio_dev->dev.parent = &client->dev; indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->channels = mpl3115_channels; indio_dev->num_channels = ARRAY_SIZE(mpl3115_channels); diff --git a/drivers/iio/pressure/ms5611_core.c b/drivers/iio/pressure/ms5611_core.c index 2f598ad91621..d451bb9dffc8 100644 --- a/drivers/iio/pressure/ms5611_core.c +++ b/drivers/iio/pressure/ms5611_core.c @@ -435,7 +435,6 @@ int ms5611_probe(struct iio_dev *indio_dev, struct device *dev, st->pressure_osr = &ms5611_avail_pressure_osr[ARRAY_SIZE(ms5611_avail_pressure_osr) - 1]; - indio_dev->dev.parent = dev; indio_dev->name = name; indio_dev->info = &ms5611_info; indio_dev->channels = ms5611_channels; diff --git a/drivers/iio/pressure/ms5637.c b/drivers/iio/pressure/ms5637.c index f49c7003c72a..05e0ef7260d5 100644 --- a/drivers/iio/pressure/ms5637.c +++ b/drivers/iio/pressure/ms5637.c @@ -152,7 +152,6 @@ static int ms5637_probe(struct i2c_client *client, indio_dev->info = &ms5637_info; indio_dev->name = id->name; - indio_dev->dev.parent = &client->dev; indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->channels = ms5637_channels; indio_dev->num_channels = ARRAY_SIZE(ms5637_channels); diff --git a/drivers/iio/pressure/st_pressure_buffer.c b/drivers/iio/pressure/st_pressure_buffer.c index 418dbf9e6e1e..7cf6f06797e1 100644 --- a/drivers/iio/pressure/st_pressure_buffer.c +++ b/drivers/iio/pressure/st_pressure_buffer.c @@ -31,34 +31,12 @@ int st_press_trig_set_state(struct iio_trigger *trig, bool state) static int st_press_buffer_postenable(struct iio_dev *indio_dev) { - int err; - - err = iio_triggered_buffer_postenable(indio_dev); - if (err < 0) - return err; - - err = st_sensors_set_enable(indio_dev, true); - if (err < 0) - goto st_press_buffer_predisable; - - return 0; - -st_press_buffer_predisable: - iio_triggered_buffer_predisable(indio_dev); - return err; + return st_sensors_set_enable(indio_dev, true); } static int st_press_buffer_predisable(struct iio_dev *indio_dev) { - int err, err2; - - err = st_sensors_set_enable(indio_dev, false); - - err2 = iio_triggered_buffer_predisable(indio_dev); - if (!err) - err = err2; - - return err; + return st_sensors_set_enable(indio_dev, false); } static const struct iio_buffer_setup_ops st_press_buffer_setup_ops = { diff --git a/drivers/iio/pressure/t5403.c b/drivers/iio/pressure/t5403.c index 22abd28071b7..685fcf65334f 100644 --- a/drivers/iio/pressure/t5403.c +++ b/drivers/iio/pressure/t5403.c @@ -236,7 +236,6 @@ static int t5403_probe(struct i2c_client *client, i2c_set_clientdata(client, indio_dev); indio_dev->info = &t5403_info; indio_dev->name = id->name; - indio_dev->dev.parent = &client->dev; indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->channels = t5403_channels; indio_dev->num_channels = ARRAY_SIZE(t5403_channels); diff --git a/drivers/iio/pressure/zpa2326.c b/drivers/iio/pressure/zpa2326.c index 37fe851f89af..2b8796ef91ef 100644 --- a/drivers/iio/pressure/zpa2326.c +++ b/drivers/iio/pressure/zpa2326.c @@ -1242,19 +1242,17 @@ static int zpa2326_postenable_buffer(struct iio_dev *indio_dev) const struct zpa2326_private *priv = iio_priv(indio_dev); int err; - /* Plug our own trigger event handler. */ - err = iio_triggered_buffer_postenable(indio_dev); - if (err) - goto err; - if (!priv->waken) { /* * We were already power supplied. Just clear hardware FIFO to * get rid of samples acquired during previous rounds (if any). */ err = zpa2326_clear_fifo(indio_dev, 0); - if (err) - goto err_buffer_predisable; + if (err) { + zpa2326_err(indio_dev, + "failed to enable buffering (%d)", err); + return err; + } } if (!iio_trigger_using_own(indio_dev) && priv->waken) { @@ -1263,18 +1261,14 @@ static int zpa2326_postenable_buffer(struct iio_dev *indio_dev) * powered up: reconfigure one-shot mode. */ err = zpa2326_config_oneshot(indio_dev, priv->irq); - if (err) - goto err_buffer_predisable; + if (err) { + zpa2326_err(indio_dev, + "failed to enable buffering (%d)", err); + return err; + } } return 0; - -err_buffer_predisable: - iio_triggered_buffer_predisable(indio_dev); -err: - zpa2326_err(indio_dev, "failed to enable buffering (%d)", err); - - return err; } static int zpa2326_postdisable_buffer(struct iio_dev *indio_dev) @@ -1287,7 +1281,6 @@ static int zpa2326_postdisable_buffer(struct iio_dev *indio_dev) static const struct iio_buffer_setup_ops zpa2326_buffer_setup_ops = { .preenable = zpa2326_preenable_buffer, .postenable = zpa2326_postenable_buffer, - .predisable = iio_triggered_buffer_predisable, .postdisable = zpa2326_postdisable_buffer }; @@ -1601,7 +1594,6 @@ static struct iio_dev *zpa2326_create_managed_iiodev(struct device *device, /* Setup for userspace synchronous on demand sampling. */ indio_dev->modes = INDIO_DIRECT_MODE; - indio_dev->dev.parent = device; indio_dev->channels = zpa2326_channels; indio_dev->num_channels = ARRAY_SIZE(zpa2326_channels); indio_dev->name = name; |