devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Nuno Sá" <noname.nuno@gmail.com>
To: David Lechner <dlechner@baylibre.com>,
	Antoniu Miclaus <antoniu.miclaus@analog.com>
Cc: "Jonathan Cameron" <jic23@kernel.org>,
	"Lars-Peter Clausen" <lars@metafoo.de>,
	"Michael Hennerich" <Michael.Hennerich@analog.com>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Nuno Sa" <nuno.sa@analog.com>,
	"Olivier Moysan" <olivier.moysan@foss.st.com>,
	"Uwe Kleine-König" <ukleinek@kernel.org>,
	"Andy Shevchenko" <andy@kernel.org>,
	"Marcelo Schmitt" <marcelo.schmitt@analog.com>,
	"Alisa-Dariana Roman" <alisadariana@gmail.com>,
	"AngeloGioacchino Del Regno"
	<angelogioacchino.delregno@collabora.com>,
	"Dumitru Ceclan" <mitrutzceclan@gmail.com>,
	"João Paulo Gonçalves" <joao.goncalves@toradex.com>,
	"Marius Cristea" <marius.cristea@microchip.com>,
	"Sergiu Cuciurean" <sergiu.cuciurean@analog.com>,
	"Dragos Bogdan" <dragos.bogdan@analog.com>,
	linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, linux-pwm@vger.kernel.org
Subject: Re: [PATCH 1/7] iio: backend: add API for interface get
Date: Thu, 26 Sep 2024 12:52:39 +0200	[thread overview]
Message-ID: <83cf3c3eb1cc5fcc06ce72cab14cc0da3bd817b6.camel@gmail.com> (raw)
In-Reply-To: <CAMknhBHmtpnX-nXxReF-rUW1ks1=iw3m_BmiRUTkf5XckPsvPw@mail.gmail.com>

On Thu, 2024-09-26 at 10:40 +0200, David Lechner wrote:
> On Mon, Sep 23, 2024 at 12:15 PM Antoniu Miclaus
> <antoniu.miclaus@analog.com> wrote:
> > 
> > Add backend support for obtaining the interface type used.
> > 
> > Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
> > ---
> >  drivers/iio/industrialio-backend.c | 24 ++++++++++++++++++++++++
> >  include/linux/iio/backend.h        | 10 ++++++++++
> >  2 files changed, 34 insertions(+)
> > 
> > diff --git a/drivers/iio/industrialio-backend.c b/drivers/iio/industrialio-
> > backend.c
> > index efe05be284b6..53ab6bc86a50 100644
> > --- a/drivers/iio/industrialio-backend.c
> > +++ b/drivers/iio/industrialio-backend.c
> > @@ -449,6 +449,30 @@ ssize_t iio_backend_ext_info_set(struct iio_dev *indio_dev,
> > uintptr_t private,
> >  }
> >  EXPORT_SYMBOL_NS_GPL(iio_backend_ext_info_set, IIO_BACKEND);
> > 
> > +/**
> > + * iio_backend_interface_type_get - get the interace type used.
> > + * @back: Backend device
> > + * @type: Interface type
> > + *
> > + * RETURNS:
> > + * 0 on success, negative error number on failure.
> > + */
> > +int iio_backend_interface_type_get(struct iio_backend *back,
> > +                                  enum iio_backend_interface_type *type)
> > +{
> > +       int ret;
> > +
> > +       ret = iio_backend_op_call(back, interface_type_get, type);
> > +       if (ret)
> > +               return ret;
> > +
> > +       if (*type > IIO_BACKEND_INTERFACE_CMOS)
> > +               return -EINVAL;
> > +
> > +       return 0;
> > +}
> > +EXPORT_SYMBOL_NS_GPL(iio_backend_interface_type_get, IIO_BACKEND);
> > +
> >  /**
> >   * iio_backend_extend_chan_spec - Extend an IIO channel
> >   * @indio_dev: IIO device
> > diff --git a/include/linux/iio/backend.h b/include/linux/iio/backend.h
> > index 8099759d7242..ba8ad30ac9ba 100644
> > --- a/include/linux/iio/backend.h
> > +++ b/include/linux/iio/backend.h
> > @@ -63,6 +63,11 @@ enum iio_backend_sample_trigger {
> >         IIO_BACKEND_SAMPLE_TRIGGER_MAX
> >  };
> > 
> > +enum iio_backend_interface_type {
> > +       IIO_BACKEND_INTERFACE_LVDS,
> > +       IIO_BACKEND_INTERFACE_CMOS
> > +};
> > +
> >  /**
> >   * struct iio_backend_ops - operations structure for an iio_backend
> >   * @enable: Enable backend.
> > @@ -81,6 +86,7 @@ enum iio_backend_sample_trigger {
> >   * @extend_chan_spec: Extend an IIO channel.
> >   * @ext_info_set: Extended info setter.
> >   * @ext_info_get: Extended info getter.
> > + * @interface_type_get: Interface type.
> >   **/
> >  struct iio_backend_ops {
> >         int (*enable)(struct iio_backend *back);
> > @@ -113,6 +119,8 @@ struct iio_backend_ops {
> >                             const char *buf, size_t len);
> >         int (*ext_info_get)(struct iio_backend *back, uintptr_t private,
> >                             const struct iio_chan_spec *chan, char *buf);
> > +       int (*interface_type_get)(struct iio_backend *back,
> > +                                 enum iio_backend_interface_type *type);
> >  };
> > 
> >  int iio_backend_chan_enable(struct iio_backend *back, unsigned int chan);
> > @@ -142,6 +150,8 @@ ssize_t iio_backend_ext_info_set(struct iio_dev *indio_dev,
> > uintptr_t private,
> >  ssize_t iio_backend_ext_info_get(struct iio_dev *indio_dev, uintptr_t private,
> >                                  const struct iio_chan_spec *chan, char *buf);
> > 
> > +int iio_backend_interface_type_get(struct iio_backend *back,
> > +                                  enum iio_backend_interface_type *type);
> >  int iio_backend_extend_chan_spec(struct iio_dev *indio_dev,
> >                                  struct iio_backend *back,
> >                                  struct iio_chan_spec *chan);
> > --
> > 2.46.0
> > 
> 
> This seems very specific to the AD485x chips and the AXI ADC backend.
> Since it is describing how the chip is wired to the AXI DAC IP block,
> I would be tempted to use the devicetree for this info instead of
> adding a new backend function.

Not sure If I'm following your point but I think this is the typical case where the
chip (being it a DAC or ADC) supports both CMOS and LVDS interfaces. Naturally you
only use one on your system and this is a synthesis parameter on the FPGA IP core.
Therefore, it makes sense for the frontend to have way to ask for this information to
the backend.

That said, we could also have a DT parameter but, ideally, we would then need a way
to match the parameter with the backend otherwise we could have DT stating LVDS and
the backend built with CMOS.

Other thing that we could think about is a new devm_iio_backend_get_with_info() where
the frontend would get some constant and static info about the backend (the interface
type would an ideal match for something like this). But I feel it's still early days
for something like this :)

- Nuno Sá

  reply	other threads:[~2024-09-26 10:52 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-23 10:10 [PATCH 0/7] *** Add support for AD485x DAS Family *** Antoniu Miclaus
2024-09-23 10:10 ` [PATCH 1/7] iio: backend: add API for interface get Antoniu Miclaus
2024-09-26  8:40   ` David Lechner
2024-09-26 10:52     ` Nuno Sá [this message]
2024-09-28 17:23       ` Jonathan Cameron
2024-09-30  6:46         ` Nuno Sá
2024-09-23 10:10 ` [PATCH 2/7] iio: backend: add support for data size set Antoniu Miclaus
2024-09-23 11:17   ` Andy Shevchenko
2024-09-26  9:10   ` David Lechner
2024-09-28 17:24   ` Jonathan Cameron
2024-09-23 10:10 ` [PATCH 3/7] iio: adc: adi-axi-adc: add interface type Antoniu Miclaus
2024-09-23 10:10 ` [PATCH 4/7] iio: adc: adi-axi-adc: set data format Antoniu Miclaus
2024-09-26  9:08   ` David Lechner
2024-09-23 10:10 ` [PATCH 5/7] dt-bindings: iio: adc: add ad458x Antoniu Miclaus
2024-09-23 21:20   ` Conor Dooley
2024-09-24 13:42   ` David Lechner
2024-09-24 22:32   ` Rob Herring
2024-09-23 10:10 ` [PATCH 6/7] iio: adc: ad485x: add ad485x driver Antoniu Miclaus
2024-09-23 11:43   ` Andy Shevchenko
2024-09-24 16:08   ` kernel test robot
2024-09-26 14:39   ` David Lechner
2024-09-26 15:00     ` Andy Shevchenko
2024-09-28 17:30     ` Jonathan Cameron
2024-09-29 19:21       ` Andy Shevchenko
2024-09-30  7:05       ` Nuno Sá
2024-10-05 17:26         ` Jonathan Cameron
2024-10-11 10:23           ` Nuno Sá
2024-10-12 10:31             ` Jonathan Cameron
2024-09-28 17:47   ` Jonathan Cameron
2024-10-01 11:53     ` Miclaus, Antoniu
2024-10-01 12:54       ` Andy Shevchenko
2024-10-01 13:51         ` Miclaus, Antoniu
2024-10-01 14:08           ` David Lechner
2024-10-03 10:14             ` Miclaus, Antoniu
2024-10-03 10:35               ` Andy Shevchenko
2024-10-03 13:08               ` David Lechner
2024-10-04 14:07                 ` Miclaus, Antoniu
2024-10-05 17:27                   ` Jonathan Cameron
2024-09-23 10:10 ` [PATCH 7/7] Documentation: ABI: testing: ad485x: add ABI docs Antoniu Miclaus
2024-09-23 11:45   ` Andy Shevchenko
2024-09-28 17:32   ` Jonathan Cameron
2024-09-23 11:14 ` [PATCH 0/7] *** Add support for AD485x DAS Family *** Andy Shevchenko

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=83cf3c3eb1cc5fcc06ce72cab14cc0da3bd817b6.camel@gmail.com \
    --to=noname.nuno@gmail.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=alisadariana@gmail.com \
    --cc=andy@kernel.org \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=antoniu.miclaus@analog.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=dragos.bogdan@analog.com \
    --cc=jic23@kernel.org \
    --cc=joao.goncalves@toradex.com \
    --cc=krzk+dt@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=marcelo.schmitt@analog.com \
    --cc=marius.cristea@microchip.com \
    --cc=mitrutzceclan@gmail.com \
    --cc=nuno.sa@analog.com \
    --cc=olivier.moysan@foss.st.com \
    --cc=robh@kernel.org \
    --cc=sergiu.cuciurean@analog.com \
    --cc=ukleinek@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).