Re: [RFC PATCH 0/8] iio: dac: introducing ad3552r-axi
From: Jonathan Cameron
Date: Sat Aug 31 2024 - 07:38:53 EST
On Thu, 29 Aug 2024 14:31:58 +0200
Angelo Dureghello <adureghello@xxxxxxxxxxxx> wrote:
> Hi, asking for comments for this patchset, that is mostly
> ready, at least feature-complete and functionally tested.
>
> I am introducing ad3552r-axi variant, controlled from a fpga-based
> AXI IP, as a platform driver, using the DAC backend. The patchset is
> actually based on linux-iio, since some needed DAC backend features
> was already there on that repo only, still to be merged in mainline.
>
> Comments i would like to ask are:
>
> - i added some devicetree bindings inside current ad3552r yaml,
> device is the same, so i wouldn't create a different yaml file.
Agreed. If same device, it's usually better to keep it in one file.
>
> - if it's ok adding the bus-type property in the DAC backend:
> actually, this platform driver uses a 4 lanes parallel bus, plus
> a clock line, similar to a qspi. This to read an write registers
> and as well to send samples at double data rate. Other DAC may
> need "parallel" or "lvds" in the future.
If it is for register read + write as well, sounds to me like you need
to treat this as a new bus type, possibly then combined with a
backend, or something similar to spi offload?
What bus does this currently sit on in your DT bindings?
(add an example)
>
> - adding the bus-type property vs. a boolean property vs. adding
> a new compatible string.
>
> - how external synchronization should be handled. Actually, i added
> 2 backend calls to enable or disable this external trigger.
That seems more or less fine. Is there any control over the external
trigger? This feels a bit like some of the complex stm32 hardware
triggers in that a 'hidden' trigger is being enabled.
If it is controllable or selectable (between say a PWM or an external
pin) then you may need to be careful how to expose that control.
>
> - is a read-only sampling-frequency useful ?
Yes. If it is easy to provide, it can be useful to userspace to
allow it to figure out how much data to expect.
Jonathan
>
> Thanks a lot for your feedbacks.
>
> To: Lars-Peter Clausen <lars@xxxxxxxxxx>
> To: Michael Hennerich <Michael.Hennerich@xxxxxxxxxx>
> To: Nuno Sá <nuno.sa@xxxxxxxxxx>
> To: Jonathan Cameron <jic23@xxxxxxxxxx>
> To: Rob Herring <robh@xxxxxxxxxx>
> To: Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>
> To: Conor Dooley <conor+dt@xxxxxxxxxx>
> To: Olivier Moysan <olivier.moysan@xxxxxxxxxxx>
> Cc: linux-iio@xxxxxxxxxxxxxxx
> Cc: devicetree@xxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> Cc: dlechner@xxxxxxxxxxxx
>
> Signed-off-by: Angelo Dureghello <adureghello@xxxxxxxxxxxx>
> ---
> Angelo Dureghello (8):
> dt-bindings: iio: dac: ad3552r: add io-backend property
> iio: backend: extend features
> iio: backend adi-axi-dac: backend features
> dt-bindings: iio: dac: add adi axi-dac bus property
> iio: dac: ad3552r: changes to use FIELD_PREP
> iio: dac: ad3552r: extract common code (no changes in behavior intended)
> iio: dac: ad3552r: add axi platform driver
> iio: ABI: add DAC sysfs synchronous_mode parameter
>
> Documentation/ABI/testing/sysfs-bus-iio-dac | 7 +
> .../devicetree/bindings/iio/dac/adi,ad3552r.yaml | 39 +-
> .../devicetree/bindings/iio/dac/adi,axi-dac.yaml | 9 +
> drivers/iio/dac/Kconfig | 11 +
> drivers/iio/dac/Makefile | 3 +-
> drivers/iio/dac/ad3552r-axi.c | 572 +++++++++++++++++++++
> drivers/iio/dac/ad3552r-common.c | 163 ++++++
> drivers/iio/dac/ad3552r.c | 394 +++-----------
> drivers/iio/dac/ad3552r.h | 199 +++++++
> drivers/iio/dac/adi-axi-dac.c | 250 ++++++++-
> drivers/iio/industrialio-backend.c | 151 ++++++
> include/linux/iio/backend.h | 24 +
> 12 files changed, 1494 insertions(+), 328 deletions(-)
> ---
> base-commit: 7ccb2c2db44572deadb795c4637273cdabbe8b66
> change-id: 20240829-wip-bl-ad3552r-axi-v0-b1e379c986d3
>
> Best regards,