All of lore.kernel.org
 help / color / mirror / Atom feed
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á


  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.