The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0: Linux 6.10-rc1 (2024-05-26 15:20:12 -0700) are available in the Git repository at: https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git tags/iio-for-6.11a for you to fetch changes up to 07d4d0bb4a8ddcc463ed599b22f510d5926c2495: iio: imu: inv_icm42600: add support of accel low-power mode (2024-06-13 19:19:26 +0100) ---------------------------------------------------------------- IIO: 1st set of new device support, cleanups etc for 6.11 Lots of new device support and 3 entirely new drivers. Early pull request this cycle to allow for clean picking up of fixes that are dependencies for some queued patch sets. Device support ============== adi,ad3552r - Add AD3541R and AD3551R - single output variants of already supported DACs. adi,ad7192 - Add support for ad7194 24-bit ADC with integrated PGA. adi,ad7380 - New ADC driver built up in a number of steps. Supports - 2 channel differential ADCs: AD7380, AD7381 - 4 channel differential ADCs: AD7380-4, AD7381-4 - 2 channel pseudo-differential ADCs: AD7383, AD7384 - 4 channel pseudo-differential ADCs: AD7383-4, AD7384-4 adi,adis16475 - Support ADS16501 variant - ID and some different scale factors from parts already supported. - Driver refactoring then enables support for 6 more IMUs: - ADIS16575-[2,3] - ADIS16576-[2,3] - ADIS16577-[2,3] adi,adsi16480 - Driver refactoring and feature additions leading to support for 6 more IMUs - with new delta angle and delta velocity feature: - ADIS16545-[1,2,3] - ADIS16547-[1,2,3] bosch,bmi160 - Support for the bmi120 IMU: ID only. Also relax ID checking to warn only on mismatch allowing use of fallback compatibles for new devices. sciosense,ens160 - New driver for this metal oxide multi-gas sensor for indoor air quality monitoring. sensortek,stk3110 - Support for stk3311a and stk3311s34 light sensor variants. Relax ID checking to warn only on a mismatch allowing use of fallback compatibles for new devices. vishay,veml6040 - New driver for this RGBW light sensor. Note that whilst the register interface is very different, the dt-binding similar enough that it is shared with the existing vishay,veml6075 binding x-powers,axp20x - Add support for axp192, very similar to another supported PMIC ADC variant but with a few more GPIO channels. Dt-binding only =============== ti,ads1015 - Add binding (no driver support yet) for ti,tla2021 New features ============ core - Variable scan type support. We have papered over this for a long time so good to finally resolve it. Some devices will change their data output format (typically resolution) dependent on settings such as oversampling. A new callback is added to enable this. First used in the ad7380 driver. - Harden the core against missing callback functions. dt-binding: - Add a single-channel property that can be used in per channel nodes instead of reg to indicate which device channel. This is important in devices with a mixture of differential and single ended channels as reg already just acted as an index for the differential channels making things inconsistent if it had more meaning for single ended channels. adi,ad7380 - Use spi_optimize_message() to reduce reading message setup overhead. - Add oversampling support using the new core functionality to allow a device support multiple scan types. invense,icm42600 - Support for low-power accelerometer modes. When a given sampling frequency is only supported at one power mode, use that. Otherwise default to low power at the cost of some noise unless overridden via a new sysfs attribute. silicon-labs,si70720 - Add control of the heater. Cleanups and minor fixes ======================== core - Cleanup use of sizeof(struct xxxx) in favor of sizeof(*variable) Makefile - Resort the iio/adc/Makefile which has drifted away from alphabetical order. gts library - Fix sorting of lists with a zero in the middle. Doesn't happen with upstream drivers, but good to harden this code. Add a related unit test. multiple drivers - Add missing MODULE_DESCRIPTION() - Drop some unused structure fields. - Drop some entirely unused structure definitions. - Stop pointless initialization of i2c_device_id::driver_data to 0 in drivers where it isn't used. - Use spi_get_device_match_data() to replace open-coded equivalent. adi,ad3552r - Fix dt gain parameter names to reflect what the driver does. Note discussion in patch to justify fixing it in the binding not the driver. - Tidy up some naming. adi,ad7192 - Use read_avail() callback to handle the low pass filter. - Add an aincom supply for pseudo differential operation. adi,ad7606 - Use iio_device_claim_direct_scoped() to simplify error paths. adi,ad7944 - Drop an unused function parameter. adi,adrf6780 - Drop unused header. adi,ad9467 - Use a DMA safe buffer for SPI transfers. - Stop using tabs to pad structure field names. It was creating a lot of noise. adi,axi-adc - Prevent races between enable and disable calls. - Ensure the DRP (dynamic reconfiguration port) is locked. Not used in most real designs, but better safe than sorry. - Limit build to COMPILE_TEST or platforms for which the IP exists. adi,axi-dac - Limit build to COMPILE_TEST or platforms for which the IP exists. ams,iaq - Use __packed instead of ___attribute__((__packed__)) bosch,bmp280 - White space cleanup. - Use BME280 prefix for registers that do not exist on the BMP280. - Add parameter names to callback function definitions. - Rename measure function to better reflect what it does which is wait for a measurement to happen. - Drop a redundant error check. - Improve error messages - Make error checks consistent as if (ret) - Use unsigned types for inherently unsigned data. - Refactor reading functions to not rely on a hidden t_fine variable. - Make use of cleanup.h freescale,mma7660 - Add mount matrix support. invense,icm42600 - Enable the regmap cache to reduce bus accesses. amlogic,meson-saradc - Add dt-binding support for power-domains. ti,adc161s626 - Use iio_device_claim_direct_scoped() to simplify error handling. ---------------------------------------------------------------- Aidan MacDonald (1): iio: adc: axp20x_adc: Add support for AXP192 Alisa-Dariana Roman (6): iio: adc: ad7192: Use standard attribute dt-bindings: iio: adc: ad7192: Add aincom supply iio: adc: ad7192: Add aincom supply dt-bindings: iio: adc: Add single-channel property dt-bindings: iio: adc: ad7192: Add AD7194 support iio: adc: ad7192: Add AD7194 support Angelo Dureghello (6): dt-bindings: iio: dac: fix ad3552r gain parameter names dt-bindings: iio: dac: add ad35xxr single output variants iio: dac: ad3552r: add model data structure iio: dac: ad3552r: add support for ad3541r and ad3551r iio: dac: ad3552r: change AD3552R_NUM_CH define name iio: dac: ad3552r: uniform structure names Antoni Pokusinski (1): iio: humidity: si7020: add heater support Antoniu Miclaus (1): iio: frequency: adrf6780: rm clk provider include Arthur Becker (2): iio: light: driver for Vishay VEML6040 dt-bindings: iio: light: add VEML6040 RGBW-LS Barnabás Czémán (3): iio: light: stk3310: relax failure to match id iio: light: stk3310: make chip id check expandable iio: light: stk3310: support more stk3311 variants Bruna Bispo (1): iio: chemical: ams-iaq-core: clean up codestyle warning Chenyuan Yang (1): iio: Fix the sorting functionality in iio_gts_build_avail_time_table Christophe JAILLET (4): iio: temperature: max30208: Remove an unused field in struct max30208_data iio: multiplexer: Remove an unused field in struct mux iio: tmag5273: Remove some unused field in struct tmag5273_data iio: light: gp2ap020a00f: Remove some unused field in struct gp2ap020a00f_data Danila Tikhonov (2): iio: imu: bmi160: add support for bmi120 dt-bindings: iio: imu: bmi160: add bmi120 David Lechner (10): iio: adc: sort Makefile iio: adc: ad7944: remove unused parameter dt-bindings: iio: adc: Add binding for AD7380 ADCs iio: adc: ad7380: new driver for AD7380 ADCs dt-bindings: iio: adc: ad7380: add pseudo-differential parts iio: adc: ad7380: add support for pseudo-differential parts iio: introduce struct iio_scan_type iio: buffer: use struct iio_scan_type to simplify code iio: add support for multiple scan types per channel iio: adc: ad7380: use spi_optimize_message() Denis Benato (1): iio: imu: bmi323: Use iio read_acpi_mount_matrix() helper Dimitri Fedrau (1): iio: temperature: mcp9600: add threshold events support Dr. David Alan Gilbert (4): iio: accel: bmi088: remove unused struct 'bmi088_scale_info' iio: adc: pac1934: remove unused struct 'samp_rate_mapping' iio: light: rohm-bu27034: remove unused struct 'bu27034_result' staging: iio: adt7316: remove unused struct 'adt7316_limit_regs' Erick Archer (1): iio: event: use sizeof(*pointer) instead of sizeof(type) Gustavo Silva (6): dt-bindings: vendor-prefixes: add ScioSense dt-bindings: iio: chemical: add ENS160 sensor iio: chemical: add driver for ENS160 sensor iio: chemical: ens160: add triggered buffer support iio: chemical: ens160: add power management support MAINTAINERS: Add ScioSense ENS160 Gustavo Ueti Fukunaga (1): iio: adc: ti-adc161s626: make use of iio_device_claim_direct_scoped() Jean-Baptiste Maneyrol (3): iio: imu: inv_icm42600: add register caching in the regmap iio: document inv_icm42600 driver private sysfs attributes iio: imu: inv_icm42600: add support of accel low-power mode Jeff Johnson (1): iio: add missing MODULE_DESCRIPTION() macros Jorge Harrisonn (1): iio: adc: ad7606: using claim_direct_scoped for code simplification Josua Mayer (1): dt-bindings: iio: adc: ti,ads1015: add compatible for tla2021 Julien Stephan (5): iio: adc: ad7380: prepare for parts with more channels dt-bindings: iio: adc: ad7380: add support for ad738x-4 4 channels variants iio: adc: ad7380: add support for ad738x-4 4 channels variants iio: adc: ad7380: add oversampling support driver: iio: add missing checks on iio_info's callback access Krzysztof Kozlowski (8): iio: accel: adxl313: simplify with spi_get_device_match_data() iio: accel: adxl355: simplify with spi_get_device_match_data() iio: adc: max11205: simplify with spi_get_device_match_data() iio: adc: ti-ads131e08: simplify with spi_get_device_match_data() iio: adc: ti-tsc2046: simplify with spi_get_device_match_data() iio: addac: ad74413r: simplify with spi_get_device_match_data() iio: dac: max5522: simplify with spi_get_device_match_data() iio: adc: mcp3564: drop redundant open-coded spi_get_device_match_data() Matti Vaittinen (1): iio: test: gts: test available times and gains sorting Neil Armstrong (1): dt-bindings: iio: adc: amlogic,meson-saradc: add optional power-domains Nuno Sa (6): iio: adc: ad9467: use DMA safe buffer for spi iio: adc: ad9467: change struct members padding iio: adc: adi-axi-adc: don't allow concurrent enable/disable calls iio: adc: adi-axi-adc: make sure DRP is locked on enable iio: adc: adi-axi-adc: add platform dependencies iio: dac: adi-axi-dac: add platform dependencies Ramona Gradinariu (15): dt-bindings: iio: imu: Add ADIS16501 compatibles drivers: iio: imu: Add support for ADIS16501 iio: imu: adis_buffer: Add buffer setup API with buffer attributes iio: imu: adis16475: Create push single sample API drivers: iio: imu: adis16475: generic computation for sample rate iio: imu: adis_trigger: Allow level interrupts for FIFO readings iio: imu: adis16475: Re-define ADIS16475_DATA dt-bindings: iio: imu: Add ADIS1657X family devices compatibles drivers: iio: imu: Add support for adis1657x family iio: adis16480: make the burst_max_speed configurable iio: imu: adis16480.c: Add delta angle and delta velocity channels dt-bindings: iio: imu: Add ADIS16545/47 compatibles iio: adis16480: add support for adis16545/7 families docs: iio: add documentation for interfacing tools docs: iio: add documentation for adis16480 driver Uwe Kleine-König (2): iio: Drop explicit initialization of struct i2c_device_id::driver_data to 0 staging: iio: Drop explicit initialization of struct i2c_device_id::driver_data to 0 Val Packett (1): iio: accel: mma7660: add mount-matrix support Vasileios Amoiridis (10): iio: pressure: bmp280: Improve indentation and line wrapping iio: pressure: bmp280: Use BME prefix for BME280 specifics iio: pressure: bmp280: Add identifier names in function definitions iio: pressure: bmp280: Add more intuitive name for bmp180_measure() iio: pressure: bmp280: Remove dead error checks iio: pressure: bmp280: Remove, add and update error messages iio: pressure: bmp280: Make error checks consistent iio: pressure: bmp280: Use unsigned data types for raw sensor data iio: pressure: bmp280: Refactorize reading functions iio: pressure: bmp280: Introduce new cleanup routines .../ABI/testing/sysfs-bus-iio-inv_icm42600 | 18 + Documentation/devicetree/bindings/iio/adc/adc.yaml | 19 + .../devicetree/bindings/iio/adc/adi,ad7192.yaml | 95 +++ .../devicetree/bindings/iio/adc/adi,ad7380.yaml | 148 ++++ .../bindings/iio/adc/amlogic,meson-saradc.yaml | 3 + .../devicetree/bindings/iio/adc/ti,ads1015.yaml | 1 + .../bindings/iio/chemical/sciosense,ens160.yaml | 70 ++ .../devicetree/bindings/iio/dac/adi,ad3552r.yaml | 43 +- .../devicetree/bindings/iio/imu/adi,adis16475.yaml | 31 + .../devicetree/bindings/iio/imu/adi,adis16480.yaml | 6 + .../devicetree/bindings/iio/imu/bosch,bmi160.yaml | 6 +- .../bindings/iio/light/vishay,veml6075.yaml | 9 +- .../devicetree/bindings/vendor-prefixes.yaml | 2 + Documentation/iio/adis16475.rst | 23 +- Documentation/iio/adis16480.rst | 443 +++++++++++ Documentation/iio/iio_tools.rst | 27 + Documentation/iio/index.rst | 2 + MAINTAINERS | 19 + drivers/iio/accel/adxl313_spi.c | 8 +- drivers/iio/accel/adxl355_spi.c | 10 +- drivers/iio/accel/adxl367_i2c.c | 4 +- drivers/iio/accel/adxl372_i2c.c | 2 +- drivers/iio/accel/bma400_i2c.c | 2 +- drivers/iio/accel/bmi088-accel-core.c | 5 - drivers/iio/accel/da311.c | 2 +- drivers/iio/accel/dmard06.c | 6 +- drivers/iio/accel/dmard09.c | 4 +- drivers/iio/accel/dmard10.c | 2 +- drivers/iio/accel/kxsd9-i2c.c | 4 +- drivers/iio/accel/mc3230.c | 2 +- drivers/iio/accel/mma7455_i2c.c | 4 +- drivers/iio/accel/mma7660.c | 52 +- drivers/iio/accel/mma9551.c | 2 +- drivers/iio/accel/mma9553.c | 4 +- drivers/iio/accel/mxc4005.c | 6 +- drivers/iio/accel/mxc6255.c | 4 +- drivers/iio/accel/stk8312.c | 4 +- drivers/iio/accel/stk8ba50.c | 2 +- drivers/iio/adc/Kconfig | 28 +- drivers/iio/adc/Makefile | 25 +- drivers/iio/adc/ad7192.c | 273 +++++-- drivers/iio/adc/ad7291.c | 2 +- drivers/iio/adc/ad7380.c | 833 +++++++++++++++++++++ drivers/iio/adc/ad7606.c | 19 +- drivers/iio/adc/ad7944.c | 8 +- drivers/iio/adc/ad9467.c | 103 ++- drivers/iio/adc/adi-axi-adc.c | 18 +- drivers/iio/adc/axp20x_adc.c | 279 +++++++ drivers/iio/adc/ingenic-adc.c | 1 + drivers/iio/adc/ltc2485.c | 2 +- drivers/iio/adc/max11205.c | 5 +- drivers/iio/adc/mcp3564.c | 6 - drivers/iio/adc/nau7802.c | 2 +- drivers/iio/adc/pac1934.c | 5 - drivers/iio/adc/ti-adc161s626.c | 18 +- drivers/iio/adc/ti-ads131e08.c | 4 +- drivers/iio/adc/ti-ads7924.c | 2 +- drivers/iio/adc/ti-tsc2046.c | 7 +- drivers/iio/adc/xilinx-ams.c | 1 + drivers/iio/addac/ad74413r.c | 13 +- drivers/iio/buffer/kfifo_buf.c | 1 + drivers/iio/chemical/Kconfig | 20 + drivers/iio/chemical/Makefile | 3 + drivers/iio/chemical/ams-iaq-core.c | 4 +- drivers/iio/chemical/bme680_i2c.c | 4 +- drivers/iio/chemical/ccs811.c | 2 +- drivers/iio/chemical/ens160.h | 10 + drivers/iio/chemical/ens160_core.c | 367 +++++++++ drivers/iio/chemical/ens160_i2c.c | 62 ++ drivers/iio/chemical/ens160_spi.c | 61 ++ drivers/iio/dac/Kconfig | 1 + drivers/iio/dac/ad3552r.c | 140 ++-- drivers/iio/dac/max5522.c | 11 +- drivers/iio/dac/mcp4728.c | 2 +- drivers/iio/frequency/adrf6780.c | 1 - drivers/iio/gyro/bmg160_i2c.c | 6 +- drivers/iio/gyro/fxas21002c_i2c.c | 2 +- drivers/iio/gyro/itg3200_core.c | 2 +- drivers/iio/health/afe4404.c | 2 +- drivers/iio/health/max30100.c | 2 +- drivers/iio/humidity/am2315.c | 2 +- drivers/iio/humidity/hdc100x.c | 12 +- drivers/iio/humidity/si7005.c | 4 +- drivers/iio/humidity/si7020.c | 141 +++- drivers/iio/imu/Kconfig | 4 +- drivers/iio/imu/adis16475.c | 807 +++++++++++++++++--- drivers/iio/imu/adis16480.c | 393 ++++++++-- drivers/iio/imu/adis_buffer.c | 32 +- drivers/iio/imu/adis_trigger.c | 37 +- drivers/iio/imu/bmi160/bmi160_core.c | 26 +- drivers/iio/imu/bmi160/bmi160_i2c.c | 5 +- drivers/iio/imu/bmi160/bmi160_spi.c | 3 + drivers/iio/imu/bmi323/bmi323_core.c | 8 +- drivers/iio/imu/bno055/bno055_i2c.c | 2 +- drivers/iio/imu/fxos8700_i2c.c | 2 +- drivers/iio/imu/inv_icm42600/inv_icm42600.h | 4 + drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c | 124 ++- drivers/iio/imu/inv_icm42600/inv_icm42600_core.c | 71 ++ drivers/iio/imu/kmx61.c | 2 +- drivers/iio/industrialio-buffer.c | 129 +++- drivers/iio/industrialio-core.c | 7 +- drivers/iio/industrialio-event.c | 13 +- drivers/iio/industrialio-gts-helper.c | 7 +- drivers/iio/inkern.c | 32 +- drivers/iio/light/Kconfig | 11 + drivers/iio/light/Makefile | 1 + drivers/iio/light/adjd_s311.c | 2 +- drivers/iio/light/adux1020.c | 2 +- drivers/iio/light/al3320a.c | 2 +- drivers/iio/light/apds9300.c | 2 +- drivers/iio/light/apds9960.c | 2 +- drivers/iio/light/bh1780.c | 4 +- drivers/iio/light/cm3232.c | 2 +- drivers/iio/light/cm3323.c | 2 +- drivers/iio/light/cm36651.c | 2 +- drivers/iio/light/gp2ap002.c | 4 +- drivers/iio/light/gp2ap020a00f.c | 3 +- drivers/iio/light/isl29028.c | 4 +- drivers/iio/light/isl29125.c | 2 +- drivers/iio/light/jsa1212.c | 2 +- drivers/iio/light/lv0104cs.c | 2 +- drivers/iio/light/max44000.c | 2 +- drivers/iio/light/max44009.c | 2 +- drivers/iio/light/noa1305.c | 2 +- drivers/iio/light/opt3001.c | 2 +- drivers/iio/light/pa12203001.c | 2 +- drivers/iio/light/rohm-bu27034.c | 6 - drivers/iio/light/rpr0521.c | 2 +- drivers/iio/light/si1133.c | 2 +- drivers/iio/light/stk3310.c | 37 +- drivers/iio/light/tcs3414.c | 2 +- drivers/iio/light/tcs3472.c | 2 +- drivers/iio/light/tsl4531.c | 2 +- drivers/iio/light/us5182d.c | 2 +- drivers/iio/light/vcnl4035.c | 2 +- drivers/iio/light/veml6030.c | 2 +- drivers/iio/light/veml6040.c | 281 +++++++ drivers/iio/light/veml6070.c | 2 +- drivers/iio/light/vl6180.c | 2 +- drivers/iio/light/zopt2201.c | 2 +- drivers/iio/magnetometer/af8133j.c | 2 +- drivers/iio/magnetometer/ak8974.c | 8 +- drivers/iio/magnetometer/bmc150_magn_i2c.c | 6 +- drivers/iio/magnetometer/mag3110.c | 2 +- drivers/iio/magnetometer/mmc35240.c | 2 +- drivers/iio/magnetometer/tmag5273.c | 2 - drivers/iio/multiplexer/iio-mux.c | 1 - drivers/iio/potentiostat/lmp91000.c | 4 +- drivers/iio/pressure/bmp280-core.c | 783 +++++++++++-------- drivers/iio/pressure/bmp280-regmap.c | 8 +- drivers/iio/pressure/bmp280-spi.c | 4 +- drivers/iio/pressure/bmp280.h | 65 +- drivers/iio/pressure/dps310.c | 2 +- drivers/iio/pressure/hp03.c | 4 +- drivers/iio/pressure/icp10100.c | 2 +- drivers/iio/pressure/mpl115_i2c.c | 2 +- drivers/iio/pressure/mpl3115.c | 2 +- drivers/iio/pressure/t5403.c | 2 +- drivers/iio/pressure/zpa2326_i2c.c | 4 +- drivers/iio/proximity/isl29501.c | 2 +- drivers/iio/proximity/pulsedlight-lidar-lite-v2.c | 6 +- drivers/iio/proximity/rfd77402.c | 2 +- drivers/iio/proximity/sx9500.c | 4 +- drivers/iio/proximity/vl53l0x-i2c.c | 2 +- drivers/iio/temperature/max30208.c | 1 - drivers/iio/temperature/mcp9600.c | 363 ++++++++- drivers/iio/temperature/mlx90632.c | 2 +- drivers/iio/temperature/tmp006.c | 2 +- drivers/iio/temperature/tmp007.c | 2 +- drivers/iio/temperature/tsys01.c | 2 +- drivers/iio/temperature/tsys02d.c | 2 +- drivers/iio/test/iio-test-gts.c | 8 +- drivers/staging/iio/addac/adt7316-i2c.c | 12 +- drivers/staging/iio/addac/adt7316.c | 9 - drivers/staging/iio/impedance-analyzer/ad5933.c | 4 +- include/linux/iio/iio.h | 94 ++- include/linux/iio/imu/adis.h | 21 +- 177 files changed, 6041 insertions(+), 1125 deletions(-) create mode 100644 Documentation/ABI/testing/sysfs-bus-iio-inv_icm42600 create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml create mode 100644 Documentation/devicetree/bindings/iio/chemical/sciosense,ens160.yaml create mode 100644 Documentation/iio/adis16480.rst create mode 100644 Documentation/iio/iio_tools.rst create mode 100644 drivers/iio/adc/ad7380.c create mode 100644 drivers/iio/chemical/ens160.h create mode 100644 drivers/iio/chemical/ens160_core.c create mode 100644 drivers/iio/chemical/ens160_i2c.c create mode 100644 drivers/iio/chemical/ens160_spi.c create mode 100644 drivers/iio/light/veml6040.c