linux/drivers/base
Greg Kroah-Hartman 7732ce06ed IIO: 1st set of new device support, features and cleanup for 6.10
The Analog Device team (Paul Cercueil and Nuno Sa) have been working on
 improving high speed device handling. They have had some support in their
 own tree for many years, so it is great to see them bring it to upstream.
 Some of that is seen here, with the first output device using the
 IIO dmaengine infrastructure and a new DAC backend FPGA IP driver.
 This makes use of a new set of interfaces to allow backend and
 front end driver communication in a fashion that in theory at least
 allows for a single driver for a given ADC / DAC independent of
 the IP to which is being used to deal with the data bus and DMA aspects
 of working with these devices. It is early days for this new
 generic way of handling split devices, but as it's kernel internals only
 we can merrily change anything about it as a wider diversity of devices
 show up and we get a better feel for what works.
 
 Alongside the usual set of new drivers and features we have
 the automatic cleanup of fwnode_handle_put() which didn't quite make
 it in last cycle. The equivalent DT version was merged by Rob Herring
 via the DT binding tree and one patch using that in IIO can also be
 found in this pull request. Rob has been making extensive use of that
 infrastructure in the DT core which is good to see and provides more
 evidence this basic approach is useful.
 
 In some cases, the IIO driver was converted over from DT only to
 using the generic firmware description handling of property.h
 including using the new macros. The general preference for IIO
 is to use this more generic handling where possible - a bunch of other
 drivers have been converted this cycle as well.
 
 New device support
 ==================
 
 adi,ad7173
 - New driver supporting AD7172-2, AD7172-4 AD7173-9, AD7175-2, AD7175-8,
   AD7176-2 and AD7177-2 ADCs.
 - Follow up fix for an accidental use of logic not instead of bitwise.
 
 adi,ad7944
 - New driver supporting AD7944, AD7985 and AD7986 pin compatible ADCs.
 - Later patch added use of new spi_optimize_message() to reduce overheads
   of setting up a reused message.
 - Additional changes later in series reduced code duplication.
 
 adi,ad9739a RF DAC
 - New driver for this 14-bit 2.5 GSPS DAC via an LVDS interface.
 
 adi,axi-dac
 - Support for this FPGA IP used to send data to high performance DACs over
   an interface such as JESD204B/C or parallel interfaces.  Used in
   conjunction with a DAC driver. The initial user is the ad9739a.
   The dmaengine-buffer needed various changes to make it bidirectional.
 
 avago,apds9306
 - New driver for this ambient light sensor.
 - Fix much later in this pull for an off by 1 error.
 
 New device IDs
 ==============
 
 For these at most an ID and a instance of chip specific data was needed.
 Always nice to see manufacturers sticking to an existing software interface
 for new parts.
 
 allwinner,sun20i
 - Add support for h616.
 invensense,mpu6050
 - Add support for ICM42688
 maxim,max30102
 - Add compatible for MAX30101
 ti,dac5571
 - Add compatible for DAC081C081
 
 General
 =======
 
 fwnode_handle
 - Support for cleanup.h based __free(fwnode_handle)
 - Loop macro using this for looping over child nodes without needing to
   call fwnode_handle_put() in ever early exit from the loop.
 - Used in:
   * adi,ad3552r
   * adi,ad4130
   * adi,ad5770r
   * adi,ad74413r
   * adi,ad7173
   * adi,adfm2000
   * linear,ltc2688
   * linear,ltc2983
   * maxim,max11410
   * microchip,pac1934
   * qcom,spmi-adc
   * renesas,rz2gl
   * st,ab8500
   * st,stm32 (Fix for failure to set return value precedes this patch,
     providing an example of why enabling direct returns makes bugs
     less likely)
 - Conversions to fwnode also using the cleanup logic
   * adi,ad7124
   * adi,ad7292
   * freescale,fsl-imx25-gcq
 
 - Other conversions to fwnode where the new cleanup handling isn't useful
   * adi,ad7192
   * avia,hx711
   * freescale,mma8452
   * nxp,fxls8962af
   * st,spear
   * ti,twl4030
 
 Features
 ========
 
 adi,adxl345
 - Support SPI_3WIRE mode.
 
 adi,ad9944
 - Support 3-wire mode, note this isn't normal 3-wire SPI (unlike the
   adxl345 change above), but rather   a wiring scheme where the SPI
   chip select is used to trigger conversions rather than using a
   separate pin.
 - Add some device specific documentation, mostly around the various wiring
   schemes.
 
 invensense,mpu6050
 - Add Wake on Motion support as an IIO event and as a wake-up source.
 
 linear,ltc2983
 - Add vdd-supply.
 
 ti,hdc3020
 - Add power management using trigger on demand mode and adding suspend and
   resume handling.
 - Use reset GPIO if available.
 
 Cleanup and fixes
 ================
 
 iio core
 - Use the various autocleanup and lock guards from cleanup.h to simplify
   the IIO core.
 - Don't set the pointer used for iio_priv() if it is zero sized as that
   points beyond the end of the allocation. No driver actually uses it
   in that case but good to clean this up.
 
 various drivers
 - Drop unnecessary casts of other pointer types to void *
 
 docs
 - Add missing ABI entry for in_temp_input.
 
 adi,adx345
 - General cleanup prior to adding spi-3wire mode.
 
 adi,axi-adc
 - Be more flexible and allow minor version changes as these are expected
   to be backwards compatible.
 
 avago,apds9300/9600
 - Merge near identical bindings. The drivers are quite different, but
   the bindings can be shared. The apds9306 binding introduced in this
   series uses this shared binding doc as well.
 - Add missing vdd-supply
 - Update binding to use IRQ_TYPE_LEVEL_LOW instead of 8.
 
 bosch,bmp280
 - Organize headers
 
 freescale,fxl-imx25-gcq
 - Use devm_ for remaining probe() time setup allowing dropping
   of specific error handling and remove() functions.
 
 infineon,dps310
 - Fix handling of negative temperatures
 - Bring style of other similar calls inline with the form needed
   for temperatures
 - Ensure error handling of regmap calls is consistent within the driver.
 - Simplify scale reading logic.
 
 invensense,mpu6050
 - Flip logic in binding to exclude devices without i2c-gate instead
   of opting in.  The list is expected to be much shorter as all recent
   devices support this feature.
 
 honeywell,hsc030pa
 - Use spi_read() instead of opening coding.
 
 renesas,rcar
 - Use device_for_each_child_of_node_scoped() to remove need to manually
   release. Left over from series the rest of which went in during 6.9.
 
 st,ab8500
 - Fix naming of function parameters in kernel-doc
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEbilms4eEBlKRJoGxVIU0mcT0FogFAmYmqVoRHGppYzIzQGtl
 cm5lbC5vcmcACgkQVIU0mcT0FogSaw/6A+8IHq9ox5wo9g2UUajFVXi6ToSs3DTv
 Dwi5OsPmuoimj8DDyxz6xuq/F6zbo+tbkVpbz7eu4L8/QNk07wgwyQrp7Z5EhVgx
 dAHxWOCrhKbkGzvcfyy+Epzvc1ETplfIZ6KdxgcB+k092jtQDknp9Os7NvAWYQp4
 7zFM1kptUe/Bnwe8oaTOfjtvl3kPTH0++yANE30r76PCD0Ra5v2MKHRNhtx3q0Et
 D02MDQWjvjT3+HbfT7ft8CtMAFqlj5t8KneS9KUlXsifupLnQrZIx3rjL7ooACIb
 aJVb0Vj3nQMlVlijH38jbxPI6z5OX230ySfX1mQXEzAkBouaWM6k9xcSzMC/ed/E
 OeiG9b/a0blGkq15bVA/LHh/uQ8MjBYa0SfdbAsvy/I6O73UaEHtzDR4Wua2grCr
 OzLVKvl9032+b9XUge500gH2Veb9OEnN0viRm6ApD+Ew9yRCA2og0OypDAVqvULM
 T/+lTu7MeYAe1K3wGu1PekeC3LK0lX3nGEX0vBybBh6gFUMOHaveoQ0qjy0DLvHn
 3Ua1ZlqZbT3pYe+2oHmV+ErRb7a7Fz5F2SkoqtHjtL6eF8/zHlywNb/l0Yp9FDgB
 W+yd+VrJC/XZOOFv6mcWOvTCK1VtY65cQRPdGbR2KHmIdtUpI0A4NGZ4rdrtD9iS
 TVtGiyb3hos=
 =dr8B
 -----END PGP SIGNATURE-----

Merge tag 'iio-for-6.10a' of https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-next

Jonathan writes:

IIO: 1st set of new device support, features and cleanup for 6.10

The Analog Device team (Paul Cercueil and Nuno Sa) have been working on
improving high speed device handling. They have had some support in their
own tree for many years, so it is great to see them bring it to upstream.
Some of that is seen here, with the first output device using the
IIO dmaengine infrastructure and a new DAC backend FPGA IP driver.
This makes use of a new set of interfaces to allow backend and
front end driver communication in a fashion that in theory at least
allows for a single driver for a given ADC / DAC independent of
the IP to which is being used to deal with the data bus and DMA aspects
of working with these devices. It is early days for this new
generic way of handling split devices, but as it's kernel internals only
we can merrily change anything about it as a wider diversity of devices
show up and we get a better feel for what works.

Alongside the usual set of new drivers and features we have
the automatic cleanup of fwnode_handle_put() which didn't quite make
it in last cycle. The equivalent DT version was merged by Rob Herring
via the DT binding tree and one patch using that in IIO can also be
found in this pull request. Rob has been making extensive use of that
infrastructure in the DT core which is good to see and provides more
evidence this basic approach is useful.

In some cases, the IIO driver was converted over from DT only to
using the generic firmware description handling of property.h
including using the new macros. The general preference for IIO
is to use this more generic handling where possible - a bunch of other
drivers have been converted this cycle as well.

New device support
==================

adi,ad7173
- New driver supporting AD7172-2, AD7172-4 AD7173-9, AD7175-2, AD7175-8,
  AD7176-2 and AD7177-2 ADCs.
- Follow up fix for an accidental use of logic not instead of bitwise.

adi,ad7944
- New driver supporting AD7944, AD7985 and AD7986 pin compatible ADCs.
- Later patch added use of new spi_optimize_message() to reduce overheads
  of setting up a reused message.
- Additional changes later in series reduced code duplication.

adi,ad9739a RF DAC
- New driver for this 14-bit 2.5 GSPS DAC via an LVDS interface.

adi,axi-dac
- Support for this FPGA IP used to send data to high performance DACs over
  an interface such as JESD204B/C or parallel interfaces.  Used in
  conjunction with a DAC driver. The initial user is the ad9739a.
  The dmaengine-buffer needed various changes to make it bidirectional.

avago,apds9306
- New driver for this ambient light sensor.
- Fix much later in this pull for an off by 1 error.

New device IDs
==============

For these at most an ID and a instance of chip specific data was needed.
Always nice to see manufacturers sticking to an existing software interface
for new parts.

allwinner,sun20i
- Add support for h616.
invensense,mpu6050
- Add support for ICM42688
maxim,max30102
- Add compatible for MAX30101
ti,dac5571
- Add compatible for DAC081C081

General
=======

fwnode_handle
- Support for cleanup.h based __free(fwnode_handle)
- Loop macro using this for looping over child nodes without needing to
  call fwnode_handle_put() in ever early exit from the loop.
- Used in:
  * adi,ad3552r
  * adi,ad4130
  * adi,ad5770r
  * adi,ad74413r
  * adi,ad7173
  * adi,adfm2000
  * linear,ltc2688
  * linear,ltc2983
  * maxim,max11410
  * microchip,pac1934
  * qcom,spmi-adc
  * renesas,rz2gl
  * st,ab8500
  * st,stm32 (Fix for failure to set return value precedes this patch,
    providing an example of why enabling direct returns makes bugs
    less likely)
- Conversions to fwnode also using the cleanup logic
  * adi,ad7124
  * adi,ad7292
  * freescale,fsl-imx25-gcq

- Other conversions to fwnode where the new cleanup handling isn't useful
  * adi,ad7192
  * avia,hx711
  * freescale,mma8452
  * nxp,fxls8962af
  * st,spear
  * ti,twl4030

Features
========

adi,adxl345
- Support SPI_3WIRE mode.

adi,ad9944
- Support 3-wire mode, note this isn't normal 3-wire SPI (unlike the
  adxl345 change above), but rather   a wiring scheme where the SPI
  chip select is used to trigger conversions rather than using a
  separate pin.
- Add some device specific documentation, mostly around the various wiring
  schemes.

invensense,mpu6050
- Add Wake on Motion support as an IIO event and as a wake-up source.

linear,ltc2983
- Add vdd-supply.

ti,hdc3020
- Add power management using trigger on demand mode and adding suspend and
  resume handling.
- Use reset GPIO if available.

Cleanup and fixes
================

iio core
- Use the various autocleanup and lock guards from cleanup.h to simplify
  the IIO core.
- Don't set the pointer used for iio_priv() if it is zero sized as that
  points beyond the end of the allocation. No driver actually uses it
  in that case but good to clean this up.

various drivers
- Drop unnecessary casts of other pointer types to void *

docs
- Add missing ABI entry for in_temp_input.

adi,adx345
- General cleanup prior to adding spi-3wire mode.

adi,axi-adc
- Be more flexible and allow minor version changes as these are expected
  to be backwards compatible.

avago,apds9300/9600
- Merge near identical bindings. The drivers are quite different, but
  the bindings can be shared. The apds9306 binding introduced in this
  series uses this shared binding doc as well.
- Add missing vdd-supply
- Update binding to use IRQ_TYPE_LEVEL_LOW instead of 8.

bosch,bmp280
- Organize headers

freescale,fxl-imx25-gcq
- Use devm_ for remaining probe() time setup allowing dropping
  of specific error handling and remove() functions.

infineon,dps310
- Fix handling of negative temperatures
- Bring style of other similar calls inline with the form needed
  for temperatures
- Ensure error handling of regmap calls is consistent within the driver.
- Simplify scale reading logic.

invensense,mpu6050
- Flip logic in binding to exclude devices without i2c-gate instead
  of opting in.  The list is expected to be much shorter as all recent
  devices support this feature.

honeywell,hsc030pa
- Use spi_read() instead of opening coding.

renesas,rcar
- Use device_for_each_child_of_node_scoped() to remove need to manually
  release. Left over from series the rest of which went in during 6.9.

st,ab8500
- Fix naming of function parameters in kernel-doc

* tag 'iio-for-6.10a' of https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio: (108 commits)
  iio: adc: ti-ads131e08: Use device_for_each_child_node_scoped() to simplify error paths.
  iio: adc: adi-axi-adc: only error out in major version mismatch
  iio: dac: support the ad9739a RF DAC
  iio: dac: add support for AXI DAC IP core
  iio: backend: add new functionality
  dt-bindings: iio: dac: add docs for AD9739A
  dt-bindings: iio: dac: add docs for AXI DAC IP
  iio: buffer-dmaengine: Enable write support
  iio: buffer-dmaengine: Support specifying buffer direction
  iio: buffer-dma: Enable buffer write support
  iio: buffer-dma: Rename iio_dma_buffer_data_available()
  iio: buffer-dma: add iio_dmaengine_buffer_setup()
  iio: pressure: dps310: simplify scale factor reading
  iio: pressure: dps310: consistently check return value of `regmap_read`
  iio: pressure: dps310: introduce consistent error handling
  iio: pressure: dps310: support negative temperature values
  dt-bindings: iio: adc: Add GPADC for Allwinner H616
  iio: dac: ad5755: make use of of_device_id table
  iio: imu: inv_icm42600: add support of ICM-42688-P
  dt-bindings: iio: imu: add icm42688 inside inv_icm42600
  ...
2024-04-23 20:19:37 -07:00
..
firmware_loader firmware_loader: Suppress warning on FW_OPT_NO_WARN flag 2024-03-07 22:05:09 +00:00
power Power management updates for 6.9-rc1 2024-03-13 11:40:06 -07:00
regmap regmap: maple: Fix uninitialized symbol 'ret' warnings 2024-03-29 16:32:26 +00:00
test drivers: base: test: Make property entry API test modular 2023-10-05 13:11:44 +02:00
arch_numa.c arm64: irq: set the correct node for VMAP stack 2023-12-05 14:26:50 +00:00
arch_topology.c topology: Set capacity_freq_ref in all cases 2024-01-30 16:01:22 -08:00
attribute_container.c
auxiliary.c driver core: mark remaining local bus_type variables as const 2023-12-21 13:56:30 +01:00
base.h block: make block_class constant 2024-03-06 08:29:20 -07:00
bus.c driver core: bus: constantify subsys_register() calls 2023-12-21 13:55:38 +01:00
cacheinfo.c mm and cache_info: remove unnecessary CPU cache info update 2024-02-22 10:24:41 -08:00
class.c class: fix use-after-free in class_register() 2024-01-04 17:13:04 +01:00
component.c driver core: component: fix spellos 2024-01-30 15:58:06 -08:00
container.c driver core: container: make container_subsys const 2023-12-21 13:56:10 +01:00
core.c driver core: Introduce device_link_wait_removal() 2024-03-26 15:32:32 -05:00
cpu.c Driver core changes for 6.9-rc1 2024-03-21 13:34:15 -07:00
dd.c device: core: Log warning for devices pending deferred probe on timeout 2024-03-07 22:10:31 +00:00
devcoredump.c devcoredump: Send uevent once devcd is ready 2023-11-28 19:39:18 +00:00
devres.c drivers/base: use ARCH_DMA_MINALIGN instead of ARCH_KMALLOC_MINALIGN 2023-06-19 16:19:20 -07:00
devtmpfs.c driver core: clean up the logic to determine which /sys/dev/ directory to use 2023-03-31 17:45:07 +02:00
driver.c driver core: create bus_is_registered() 2023-02-09 10:43:35 +01:00
firmware.c
hypervisor.c
init.c drivers: base: Move cpu_dev_init() after node_dev_init() 2023-12-06 12:41:49 +09:00
isa.c driver core: mark remaining local bus_type variables as const 2023-12-21 13:56:30 +01:00
Kconfig driver core: Add CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT 2023-03-28 18:45:59 +02:00
Makefile genirq: Get rid of GENERIC_MSI_IRQ_DOMAIN 2022-11-17 15:15:20 +01:00
map.c driver: base: Prefer unsigned int to bare use of unsigned 2021-07-21 17:30:09 +02:00
memory.c mm/memory_hotplug: introduce MEM_PREPARE_ONLINE/MEM_FINISH_OFFLINE notifiers 2024-02-21 16:00:01 -08:00
module.c
node.c cxl/region: Deal with numa nodes not enumerated by SRAT 2024-03-12 14:54:03 -07:00
physical_location.c driver core: location: Free struct acpi_pld_info *pld before return false 2023-01-20 14:20:30 +01:00
physical_location.h driver core: physical_location.h remove extern from function prototypes 2023-03-24 15:35:48 +01:00
pinctrl.c
platform-msi.c Driver core changes for 6.9-rc1 2024-03-21 13:34:15 -07:00
platform.c driver core: platform: Annotate struct irq_affinity_devres with __counted_by 2023-10-07 18:13:09 +02:00
property.c device property: Move fwnode_handle_put() into property.h 2024-03-25 19:50:08 +00:00
soc.c driver core: mark remaining local bus_type variables as const 2023-12-21 13:56:30 +01:00
swnode.c device property: Don't use "proxy" headers 2024-03-07 22:07:26 +00:00
syscore.c
topology.c drivers/base: fix userspace break from using bin_attributes for cpumap and cpulist 2022-07-15 17:36:33 +02:00
trace.c
trace.h
transport_class.c drivers: base: transport_class: fix resource leak when transport_add_device() fails 2023-01-20 14:22:53 +01:00