From: "Nuno Sá" <noname.nuno@gmail.com>
To: Angelo Dureghello <adureghello@baylibre.com>,
Lars-Peter Clausen <lars@metafoo.de>,
Michael Hennerich <Michael.Hennerich@analog.com>,
Nuno Sa <nuno.sa@analog.com>,
Jonathan Cameron <jic23@kernel.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Olivier Moysan <olivier.moysan@foss.st.com>
Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, dlechner@baylibre.com
Subject: Re: [PATCH v3 05/10] iio: backend: extend features
Date: Wed, 25 Sep 2024 13:59:18 +0200 [thread overview]
Message-ID: <fa2ab3b06dfb227de2f449c52b83ff6ffe1f79c2.camel@gmail.com> (raw)
In-Reply-To: <45f72533-ba1b-4531-890d-63d86a1f0ca4@baylibre.com>
On Tue, 2024-09-24 at 16:11 +0200, Angelo Dureghello wrote:
>
> On 20/09/24 14:50, Nuno Sá wrote:
> > On Thu, 2024-09-19 at 11:20 +0200, Angelo Dureghello wrote:
> > > From: Angelo Dureghello <adureghello@baylibre.com>
> > >
> > > Extend backend features with new calls needed later on this
> > > patchset from axi version of ad3552r.
> > >
> > > The follwoing calls are added:
> > >
> > > iio_backend_ext_sync_enable
> > > enable synchronize channels on external trigger
> > > iio_backend_ext_sync_disable
> > > disable synchronize channels on external trigger
> > > iio_backend_ddr_enable
> > > enable ddr bus transfer
> > > iio_backend_ddr_disable
> > > disable ddr bus transfer
> > > iio_backend_set_bus_mode
> > > select the type of bus, so that specific read / write
> > > operations are performed accordingly
> > > iio_backend_buffer_enable
> > > enable buffer
> > > iio_backend_buffer_disable
> > > disable buffer
> > > iio_backend_data_transfer_addr
> > > define the target register address where the DAC sample
> > > will be written.
> > >
> > > Signed-off-by: Angelo Dureghello <adureghello@baylibre.com>
> > > ---
> > > drivers/iio/industrialio-backend.c | 111
> > > +++++++++++++++++++++++++++++++++++++
> > > include/linux/iio/backend.h | 23 ++++++++
> > > 2 files changed, 134 insertions(+)
> > >
> > > diff --git a/drivers/iio/industrialio-backend.c
> > > b/drivers/iio/industrialio-
> > > backend.c
> > > index 20b3b5212da7..f4802c422dbf 100644
> > > --- a/drivers/iio/industrialio-backend.c
> > > +++ b/drivers/iio/industrialio-backend.c
> > > @@ -718,6 +718,117 @@ static int __devm_iio_backend_get(struct device
> > > *dev, struct
> > > iio_backend *back)
> > > return 0;
> > > }
> > >
> > > +/**
> > > + * iio_backend_ext_sync_enable - Enable external synchronization
> > > + * @back: Backend device
> > > + *
> > > + * Enable synchronization by external signal.
> > > + *
> > > + * RETURNS:
> > > + * 0 on success, negative error number on failure.
> > > + */
> > > +int iio_backend_ext_sync_enable(struct iio_backend *back)
> > > +{
> > > + return iio_backend_op_call(back, ext_sync_enable);
> > > +}
> > > +EXPORT_SYMBOL_NS_GPL(iio_backend_ext_sync_enable, IIO_BACKEND);
> > > +
> > > +/**
> > > + * iio_backend_ext_sync_disable - Disable external synchronization
> > > + * @back: Backend device
> > > + *
> > > + * Disable synchronization by external signal.
> > > + *
> > > + * RETURNS:
> > > + * 0 on success, negative error number on failure.
> > > + */
> > > +int iio_backend_ext_sync_disable(struct iio_backend *back)
> > > +{
> > > + return iio_backend_op_call(back, ext_sync_disable);
> > > +}
> > > +EXPORT_SYMBOL_NS_GPL(iio_backend_ext_sync_disable, IIO_BACKEND);
> > > +
> > > +/**
> > > + * iio_backend_ddr_enable - Enable interface DDR (Double Data Rate) mode
> > > + * @back: Backend device
> > > + *
> > > + * Enabling DDR, data is generated by the IP at each front
> > > + * (raising and falling) of the bus clock signal.
> > > + *
> > > + * RETURNS:
> > > + * 0 on success, negative error number on failure.
> > > + */
> > > +int iio_backend_ddr_enable(struct iio_backend *back)
> > > +{
> > > + return iio_backend_op_call(back, ddr_enable);
> > > +}
> > > +EXPORT_SYMBOL_NS_GPL(iio_backend_ddr_enable, IIO_BACKEND);
> > > +
> > > +/**
> > > + * iio_backend_ddr_disable - Disable interface DDR (Double Data Rate)
> > > mode
> > > + * @back: Backend device
> > > + *
> > > + * Disabling DDR data is generated byt the IP at rising or falling front
> > > + * of the interface clock signal (SDR, Single Data Rate).
> > > + *
> > > + * RETURNS:
> > > + * 0 on success, negative error number on failure.
> > > + */
> > > +int iio_backend_ddr_disable(struct iio_backend *back)
> > > +{
> > > + return iio_backend_op_call(back, ddr_disable);
> > > +}
> > > +EXPORT_SYMBOL_NS_GPL(iio_backend_ddr_disable, IIO_BACKEND);
> > > +
> > > +/**
> > > + * iio_backend_buffer_enable - Enable iio buffering
> > > + * @back: Backend device
> > > + *
> > > + * Enabling the buffer, buffer data is processed and sent out from the
> > > + * bus interface.
> > > + *
> > > + * RETURNS:
> > > + * 0 on success, negative error number on failure.
> > > + */
> > > +int iio_backend_buffer_enable(struct iio_backend *back)
> > > +{
> > > + return iio_backend_op_call(back, buffer_enable);
> > > +}
> > > +EXPORT_SYMBOL_NS_GPL(iio_backend_buffer_enable, IIO_BACKEND);
> > > +
> > > +/**
> > > + * iio_backend_buffer_disable - Disable iio buffering
> > > + * @back: Backend device
> > > + *
> > > + * Disabling the buffer, buffer data transfer on the bus interface
> > > + * is stopped.
> > > + *
> > > + * RETURNS:
> > > + * 0 on success, negative error number on failure.
> > > + */
> > > +int iio_backend_buffer_disable(struct iio_backend *back)
> > > +{
> > > + return iio_backend_op_call(back, buffer_disable);
> > > +}
> > > +EXPORT_SYMBOL_NS_GPL(iio_backend_buffer_disable, IIO_BACKEND);
> > > +
> > IIRC, both me and Jonathan had some comments about the above 2 calls? Aren't
> > they
> > about buffering? I think I mentioned something about using the same buffer
> > ops as
> > typical IIO devices use.
>
> i have now separated iio_backend_ops, keeping buffer enable/disable
> for axi-ad3352r case only,
>
> static const struct iio_backend_ops axi_dac_generic_ops = {
> .enable = axi_dac_enable,
> .disable = axi_dac_disable,
> .request_buffer = axi_dac_request_buffer,
> .free_buffer = axi_dac_free_buffer,
> .extend_chan_spec = axi_dac_extend_chan,
> .ext_info_set = axi_dac_ext_info_set,
> .ext_info_get = axi_dac_ext_info_get,
> .data_source_set = axi_dac_data_source_set,
> .set_sample_rate = axi_dac_set_sample_rate,
> .debugfs_reg_access = iio_backend_debugfs_ptr(axi_dac_reg_access),
> };
>
> static const struct iio_backend_ops axi_ad3552r_ops = {
> .enable = axi_dac_enable,
> .read_raw = axi_dac_read_raw,
> .request_buffer = axi_dac_request_buffer,
> .data_source_set = axi_dac_data_source_set,
> .ext_sync_enable = axi_dac_ext_sync_enable,
> .ext_sync_disable = axi_dac_ext_sync_disable,
> .ddr_enable = axi_dac_ddr_enable,
> .ddr_disable = axi_dac_ddr_disable,
> .buffer_enable = axi_dac_buffer_enable,
> .buffer_disable = axi_dac_buffer_disable,
> .data_format_set = axi_dac_data_format_set,
> .data_transfer_addr = axi_dac_data_transfer_addr,
> };
>
>
> could this be good ?
>
I think you're replying to the wrong email :). But yeah, I made a comment about
the above and that is something I'm also expecting.
Regarding the buffer_enable/disable() stuff, please go check past discussions (I
think on the RFC). I'm fairly sure I had (and Jonathan as well) some comments
about directly using IIO buffer options or replicating them in the backend_ops.
Likely the second option is the best one so we can take a reference to backend
object directly.
- Nuno Sá
next prev parent reply other threads:[~2024-09-25 11:55 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-19 9:19 [PATCH v3 00/10] iio: add support for the ad3552r AXI DAC IP Angelo Dureghello
2024-09-19 9:19 ` [PATCH v3 01/10] iio: backend: adi-axi-dac: fix wrong register bitfield Angelo Dureghello
2024-09-20 12:45 ` Nuno Sá
2024-09-29 10:38 ` Jonathan Cameron
2024-09-19 9:19 ` [PATCH v3 02/10] dt-bindings: iio: dac: axi-dac: add ad3552r axi variant Angelo Dureghello
2024-09-20 12:47 ` Nuno Sá
2024-09-22 20:59 ` Krzysztof Kozlowski
2024-09-29 10:46 ` Jonathan Cameron
2024-09-30 12:52 ` Angelo Dureghello
2024-09-30 13:15 ` Nuno Sá
2024-09-30 14:52 ` Jonathan Cameron
2024-09-19 9:19 ` [PATCH v3 03/10] dt-bindings: iio: dac: ad3552r: fix maximum spi speed Angelo Dureghello
2024-09-22 20:59 ` Krzysztof Kozlowski
2024-09-19 9:20 ` [PATCH v3 04/10] dt-bindings: iio: dac: ad3552r: add io-backend support Angelo Dureghello
2024-09-22 21:02 ` Krzysztof Kozlowski
2024-09-23 15:50 ` Angelo Dureghello
2024-09-24 8:02 ` Krzysztof Kozlowski
2024-09-24 12:27 ` Nuno Sá
2024-09-25 7:22 ` Krzysztof Kozlowski
2024-09-25 11:55 ` Nuno Sá
2024-09-28 12:20 ` Krzysztof Kozlowski
2024-09-29 10:59 ` Jonathan Cameron
2024-09-30 7:20 ` Nuno Sá
2024-09-30 7:31 ` Krzysztof Kozlowski
2024-09-30 8:24 ` Nuno Sá
2024-09-30 13:22 ` Angelo Dureghello
2024-09-30 15:09 ` Jonathan Cameron
2024-10-01 8:23 ` Nuno Sá
2024-10-01 18:29 ` Jonathan Cameron
2024-10-02 5:54 ` Krzysztof Kozlowski
2024-10-02 9:00 ` Nuno Sá
2024-09-29 10:51 ` Jonathan Cameron
2024-09-30 14:15 ` Angelo Dureghello
2024-09-30 14:49 ` Jonathan Cameron
2024-09-30 15:08 ` Angelo Dureghello
2024-09-30 19:20 ` David Lechner
2024-10-01 8:09 ` Angelo Dureghello
2024-09-19 9:20 ` [PATCH v3 05/10] iio: backend: extend features Angelo Dureghello
2024-09-20 12:50 ` Nuno Sá
2024-09-24 14:11 ` Angelo Dureghello
2024-09-25 11:59 ` Nuno Sá [this message]
2024-10-02 9:14 ` Angelo Dureghello
2024-09-29 11:05 ` Jonathan Cameron
2024-09-30 19:25 ` David Lechner
2024-10-01 8:14 ` Nuno Sá
2024-10-01 8:35 ` Angelo Dureghello
2024-10-01 18:32 ` Jonathan Cameron
2024-09-19 9:20 ` [PATCH v3 06/10] iio: backend: adi-axi-dac: " Angelo Dureghello
2024-09-20 13:10 ` Nuno Sá
2024-09-29 11:28 ` Jonathan Cameron
2024-09-19 9:20 ` [PATCH v3 07/10] iio: dac: ad3552r: changes to use FIELD_PREP Angelo Dureghello
2024-09-19 9:20 ` [PATCH v3 08/10] iio: dac: ad3552r: extract common code (no changes in behavior intended) Angelo Dureghello
2024-09-29 11:57 ` Jonathan Cameron
2024-10-02 15:50 ` Angelo Dureghello
2024-10-04 14:21 ` Jonathan Cameron
2024-09-19 9:20 ` [PATCH v3 09/10] iio: dac: ad3552r: add axi platform driver Angelo Dureghello
2024-09-29 12:17 ` Jonathan Cameron
2024-09-19 9:20 ` [PATCH v3 10/10] iio: backend: adi-axi-dac: add registering of child fdt node Angelo Dureghello
2024-09-29 12:21 ` Jonathan Cameron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fa2ab3b06dfb227de2f449c52b83ff6ffe1f79c2.camel@gmail.com \
--to=noname.nuno@gmail.com \
--cc=Michael.Hennerich@analog.com \
--cc=adureghello@baylibre.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dlechner@baylibre.com \
--cc=jic23@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nuno.sa@analog.com \
--cc=olivier.moysan@foss.st.com \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).