mbox series

[v11,0/7] iio: add new backend framework

Message ID 20240210-iio-backend-v11-0-f5242a5fb42a@analog.com (mailing list archive)
Headers show
Series iio: add new backend framework | expand

Message

Nuno Sa via B4 Relay Feb. 10, 2024, 8:57 p.m. UTC
v1:
 https://lore.kernel.org/linux-iio/20231204144925.4fe9922f@jic23-huawei/T/#m222f5175273b81dbfe40b7f0daffcdc67d6cb8ff

v2:
 https://lore.kernel.org/r/20231208-dev-iio-backend-v2-0-5450951895e1@analog.com

v3:
 https://lore.kernel.org/linux-iio/20231213-dev-iio-backend-v3-0-bb9f12a5c6dc@analog.com/

v4:
 https://lore.kernel.org/r/20231220-iio-backend-v4-0-998e9148b692@analog.com

v5:
 https://lore.kernel.org/r/20240112-iio-backend-v5-0-bdecad041ab4@analog.com

v6:
 https://lore.kernel.org/r/20240119-iio-backend-v6-0-189536c35a05@analog.com

v7
 https://lore.kernel.org/r/20240123-iio-backend-v7-0-1bff236b8693@analog.com

v8:
 https://lore.kernel.org/r/20240202-iio-backend-v8-0-f65ee8c8203d@analog.com

v9:
 https://lore.kernel.org/r/20240206-iio-backend-v9-0-df66d159c000@analog.com

v10:
 https://lore.kernel.org/r/20240209-iio-backend-v10-0-3ed842064318@analog.com/

Changes in v11:
 - Patch 6
   * Directly use dev in devm_iio_backend_get();
   * Move comment above the proper place.
 - Patch 7
   * Added blank line between includes (to logically separate them);
   * Move back to 10 millisecond sleep;
   * Constify expected_ver and removed unneeded cast.

Jonathan, the series is based on next-20240202 since it already includes
the io-channels fix Rob applied in his tree. I guess it should land in rc3 so
after you rebase, all patches should apply cleanly (if applying them of course
:)). Let me know if anything fails...

Keeping the block diagram  so we don't have to follow links
to check one of the typical setups.

                                           -------------------------------------------------------
 ------------------                        | -----------         ------------      -------  FPGA |
 |     ADC        |------------------------| | AXI ADC |---------| DMA CORE |------| RAM |       |
 | (Frontend/IIO) | Serial Data (eg: LVDS) | |(backend)|---------|          |------|     |       |
 |                |------------------------| -----------         ------------      -------       |
 ------------------                        -------------------------------------------------------

---
Nuno Sa (6):
      dt-bindings: adc: ad9467: add new io-backend property
      dt-bindings: adc: axi-adc: update bindings for backend framework
      iio: buffer-dmaengine: export buffer alloc and free functions
      iio: add the IIO backend framework
      iio: adc: ad9467: convert to backend framework
      iio: adc: adi-axi-adc: move to backend framework

Olivier Moysan (1):
      of: property: add device link support for io-backends

 .../devicetree/bindings/iio/adc/adi,ad9467.yaml    |   4 +
 .../devicetree/bindings/iio/adc/adi,axi-adc.yaml   |   8 +-
 MAINTAINERS                                        |   8 +
 drivers/iio/Kconfig                                |   9 +
 drivers/iio/Makefile                               |   1 +
 drivers/iio/adc/Kconfig                            |   4 +-
 drivers/iio/adc/ad9467.c                           | 267 ++++++++-----
 drivers/iio/adc/adi-axi-adc.c                      | 385 +++++--------------
 drivers/iio/buffer/industrialio-buffer-dmaengine.c |   8 +-
 drivers/iio/industrialio-backend.c                 | 418 +++++++++++++++++++++
 drivers/of/property.c                              |   2 +
 include/linux/iio/adc/adi-axi-adc.h                |  68 ----
 include/linux/iio/backend.h                        |  72 ++++
 include/linux/iio/buffer-dmaengine.h               |   3 +
 14 files changed, 802 insertions(+), 455 deletions(-)
---
base-commit: 076d56d74f17e625b3d63cf4743b3d7d02180379
change-id: 20231219-iio-backend-a3dc1a6a7a58
--

Thanks!
- Nuno Sá

Comments

Andy Shevchenko Feb. 11, 2024, 4:55 p.m. UTC | #1
On Sat, Feb 10, 2024 at 10:57 PM Nuno Sa via B4 Relay
<devnull+nuno.sa.analog.com@kernel.org> wrote:

> Changes in v11:
>  - Patch 6
>    * Directly use dev in devm_iio_backend_get();
>    * Move comment above the proper place.
>  - Patch 7
>    * Added blank line between includes (to logically separate them);
>    * Move back to 10 millisecond sleep;
>    * Constify expected_ver and removed unneeded cast.

Assuming that the fwnode vs. device reference count is fine (as we
expect the backends to call respective APIs and hence have backend
device pointer valid despote fwnode reference being dropped before
getting the device) and timeout thingy had been reverted to the
original value, FWIW,
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
for patches 4-7 (OF is not my area of interest at all :).

> Jonathan, the series is based on next-20240202 since it already includes
> the io-channels fix Rob applied in his tree. I guess it should land in rc3 so
> after you rebase, all patches should apply cleanly (if applying them of course
> :)). Let me know if anything fails...
>
> Keeping the block diagram  so we don't have to follow links
> to check one of the typical setups.
>
>                                            -------------------------------------------------------
>  ------------------                        | -----------         ------------      -------  FPGA |
>  |     ADC        |------------------------| | AXI ADC |---------| DMA CORE |------| RAM |       |
>  | (Frontend/IIO) | Serial Data (eg: LVDS) | |(backend)|---------|          |------|     |       |
>  |                |------------------------| -----------         ------------      -------       |
>  ------------------                        -------------------------------------------------------
Nuno Sá Feb. 14, 2024, 12:38 p.m. UTC | #2
On Sun, 2024-02-11 at 18:55 +0200, Andy Shevchenko wrote:
> On Sat, Feb 10, 2024 at 10:57 PM Nuno Sa via B4 Relay
> <devnull+nuno.sa.analog.com@kernel.org> wrote:
> 
> > Changes in v11:
> >  - Patch 6
> >    * Directly use dev in devm_iio_backend_get();
> >    * Move comment above the proper place.
> >  - Patch 7
> >    * Added blank line between includes (to logically separate them);
> >    * Move back to 10 millisecond sleep;
> >    * Constify expected_ver and removed unneeded cast.
> 
> Assuming that the fwnode vs. device reference count is fine (as we
> expect the backends to call respective APIs and hence have backend
> device pointer valid despote fwnode reference being dropped before
> getting the device) and timeout thingy had been reverted to the
> original value, FWIW,
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> for patches 4-7 (OF is not my area of interest at all :).
> 

Thanks for the ack!

If I understood the above correctly, we should be fine. Unless the fwnode
refcount can reach 0 without unbinding the device from it's driver (which I
don't think it's possible). Note the backend will be freed on the unbind path
and through devlinks, we guarantee that all the consumers are unbound before
us...

- Nuno Sá
>