From: Guillaume Stols <gstols@baylibre.com>
To: "Uwe Kleine-König" <ukleinek@kernel.org>,
"Lars-Peter Clausen" <lars@metafoo.de>,
"Michael Hennerich" <Michael.Hennerich@analog.com>,
"Jonathan Cameron" <jic23@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
"Jonathan Corbet" <corbet@lwn.net>,
"Michal Marek" <mmarek@suse.com>
Cc: linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org,
Michael Hennerich <michael.hennerich@analog.com>,
linux-fbdev@vger.kernel.org, linux-iio@vger.kernel.org,
devicetree@vger.kernel.org, linux-doc@vger.kernel.org,
aardelean@baylibre.com, dlechner@baylibre.com,
Guillaume Stols <gstols@baylibre.com>,
jstephan@baylibre.com
Subject: [PATCH v2 00/10] Add iio backend compatibility for ad7606
Date: Fri, 20 Sep 2024 17:33:20 +0000 [thread overview]
Message-ID: <20240920-ad7606_add_iio_backend_support-v2-0-0e78782ae7d0@baylibre.com> (raw)
This series aims to add iio backend support for AD7606X ADCs.
In a nutshell, iio backend is a paradigm to shift the logic establishing
the connexion between iio buffers and backend buffers into the backend's
driver. This provides a more stable programming interface to the driver
developers, and give more flexibility in the way the hardware communicates.
The support will be first added on AD7606B, and on next patches AD7606C16
and AD7606C18 will be added. The series have been tested on a Zedboard,
using the latest HDL available, i.e
https://github.com/analogdevicesinc/hdl/commit/7d0a4cee1b5fa403f175af513d7eb804c3bd75d0
and an AD7606B FMCZ EKV. This HDL handles both the conversion trigger
(through a PWM), and the end of conversion interruption, and is compatible
with axi-adc, which is "iio-backendable".
More information about this HDL design can be found at:
https://wiki.analog.com/resources/eval/user-guides/ad7606x-fmc/hdl
The support is thus separated in two parts:
- PWM support was first added. My first intention was to make it available
for any version of the driver, but the time required to handle the
interruption is not neglectable, and I saw drifts that would eventually
cause an overlapping SPI read with a new conversion trigger, whith
catastrphic consequences. To mitigate this, CRC check must be
implemented, but indeed increasing the samplerate causes more sample to
be lost. Therefore, I decided to only allow PWM for iio-backend
powered device as a first intention, leaving open the possibility to
add the general compatibility afterwards.
- IIO backend support was added: Once the PWM support was ready, the driver
can be extended to iio-backend. The iio-backend powered version of the
driver is a platform driver, and an exemple devicetree node is available
in the bindings.
The following features will be added in subsequent patch series:
- software mode for iio backend
- 18 bits mode (AD7606C18)
- single read (IIO_CHAN_READ_RAW)
Signed-off-by: Guillaume Stols <gstols@baylibre.com>
---
Changes in v2:
- Logical change in dt-bindings, using a flag for the interface instead of
infering it from the value of the "reg" property.
- Removal of get_platform_match_data addition, instead the logic is
directly used in the file.
- Removal of use and export of pwm_get_state_hw, returning the configured
frequency instead of the running one.
- Correction on various typos, whitespaces, bad order of includes.
- Separation of SPI conditions and PWM disabling for no backend in other
commits.
- Link to v1: https://lore.kernel.org/r/20240815-ad7606_add_iio_backend_support-v1-0-cea3e11b1aa4@baylibre.com
---
Guillaume Stols (10):
dt-bindings: iio: adc: ad7606: Set the correct polarity
dt-bindings: iio: adc: ad7606: Make corrections on spi conditions
dt-bindings: iio: adc: ad7606: Add iio backend bindings
Documentation: iio: Document ad7606 driver
iio: adc: ad7606: Sort includes in alphabetical order
iio: adc: ad7606: Add PWM support for conversion trigger
iio: adc: ad7606: Add compatibility to fw_nodes
iio: adc: ad7606: Fix typo in the driver name
iio: adc: ad7606: Add iio-backend support
iio: adc: ad7606: Disable PWM usage for non backend version
.../devicetree/bindings/iio/adc/adi,ad7606.yaml | 97 ++++-
Documentation/iio/ad7606.rst | 143 +++++++
drivers/iio/adc/Kconfig | 4 +-
drivers/iio/adc/ad7606.c | 474 +++++++++++++++------
drivers/iio/adc/ad7606.h | 51 ++-
drivers/iio/adc/ad7606_par.c | 126 +++++-
drivers/iio/adc/ad7606_spi.c | 33 +-
7 files changed, 749 insertions(+), 179 deletions(-)
---
base-commit: 8bea3878a1511bceadc2fbf284b00bcc5a2ef28d
change-id: 20240725-ad7606_add_iio_backend_support-c401305a6924
Best regards,
--
Guillaume Stols <gstols@baylibre.com>
next reply other threads:[~2024-09-20 17:33 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-20 17:33 Guillaume Stols [this message]
2024-09-20 17:33 ` [PATCH v2 01/10] dt-bindings: iio: adc: ad7606: Set the correct polarity Guillaume Stols
2024-09-21 9:11 ` Uwe Kleine-König
2024-09-29 12:23 ` Jonathan Cameron
2024-09-20 17:33 ` [PATCH v2 02/10] dt-bindings: iio: adc: ad7606: Make corrections on spi conditions Guillaume Stols
2024-09-21 21:55 ` Conor Dooley
2024-09-24 14:41 ` Guillaume Stols
2024-09-24 14:59 ` Conor Dooley
2024-09-25 15:28 ` Guillaume Stols
2024-09-29 12:27 ` Jonathan Cameron
2024-09-20 17:33 ` [PATCH v2 03/10] dt-bindings: iio: adc: ad7606: Add iio backend bindings Guillaume Stols
2024-09-21 22:19 ` Conor Dooley
2024-09-20 17:33 ` [PATCH v2 04/10] Documentation: iio: Document ad7606 driver Guillaume Stols
2024-09-29 12:33 ` Jonathan Cameron
2024-09-20 17:33 ` [PATCH v2 05/10] iio: adc: ad7606: Sort includes in alphabetical order Guillaume Stols
2024-09-20 17:33 ` [PATCH v2 06/10] iio: adc: ad7606: Add PWM support for conversion trigger Guillaume Stols
2024-09-29 12:39 ` Jonathan Cameron
2024-09-20 17:33 ` [PATCH v2 07/10] iio: adc: ad7606: Add compatibility to fw_nodes Guillaume Stols
2024-09-24 15:28 ` David Lechner
2024-09-25 8:40 ` Guillaume Stols
2024-09-29 12:44 ` Jonathan Cameron
2024-10-02 0:12 ` Guillaume Stols
2024-10-04 14:25 ` Jonathan Cameron
2024-10-04 15:10 ` Guillaume Stols
2024-09-20 17:33 ` [PATCH v2 08/10] iio: adc: ad7606: Fix typo in the driver name Guillaume Stols
2024-09-29 12:44 ` Jonathan Cameron
2024-09-20 17:33 ` [PATCH v2 09/10] iio: adc: ad7606: Add iio-backend support Guillaume Stols
2024-09-23 9:40 ` David Lechner
2024-09-29 12:54 ` Jonathan Cameron
2024-09-20 17:33 ` [PATCH v2 10/10] iio: adc: ad7606: Disable PWM usage for non backend version Guillaume Stols
2024-09-23 8:34 ` David Lechner
2024-09-29 12:56 ` 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=20240920-ad7606_add_iio_backend_support-v2-0-0e78782ae7d0@baylibre.com \
--to=gstols@baylibre.com \
--cc=Michael.Hennerich@analog.com \
--cc=aardelean@baylibre.com \
--cc=conor+dt@kernel.org \
--cc=corbet@lwn.net \
--cc=devicetree@vger.kernel.org \
--cc=dlechner@baylibre.com \
--cc=gregkh@linuxfoundation.org \
--cc=jic23@kernel.org \
--cc=jstephan@baylibre.com \
--cc=krzk+dt@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=mmarek@suse.com \
--cc=rafael@kernel.org \
--cc=robh@kernel.org \
--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).