From: Conor Dooley <conor@kernel.org>
To: Marcelo Schmitt <marcelo.schmitt1@gmail.com>
Cc: Marcelo Schmitt <marcelo.schmitt@analog.com>,
linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
linux-doc@vger.kernel.org, linux-pwm@vger.kernel.org,
linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org,
jic23@kernel.org, ukleinek@kernel.org,
michael.hennerich@analog.com, nuno.sa@analog.com,
eblanc@baylibre.com, dlechner@baylibre.com, andy@kernel.org,
robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org,
corbet@lwn.net
Subject: Re: [PATCH v4 7/8] dt-bindings: iio: adc: adi,ad4030: Add ADAQ4216 and ADAQ4224
Date: Fri, 10 Oct 2025 15:39:28 +0100 [thread overview]
Message-ID: <20251010-donut-agreeable-07f3367416d5@spud> (raw)
In-Reply-To: <aOgw95ebGWWhahUx@debian-BULLSEYE-live-builder-AMD64>
[-- Attachment #1: Type: text/plain, Size: 6260 bytes --]
On Thu, Oct 09, 2025 at 07:02:31PM -0300, Marcelo Schmitt wrote:
> On 10/08, Conor Dooley wrote:
> > On Wed, Oct 08, 2025 at 10:51:37AM -0300, Marcelo Schmitt wrote:
> > > ADAQ4216 and ADAQ4224 are similar to AD4030 except that ADAQ devices have a
> > > PGA (programmable gain amplifier) that scales the input signal prior to it
> > > reaching the ADC inputs. The PGA is controlled through a couple of pins (A0
> > > and A1) that set one of four possible signal gain configurations.
> > >
> > > Signed-off-by: Marcelo Schmitt <marcelo.schmitt@analog.com>
> > > ---
> > > Change log v3 -> v4
> > > - Now only documenting GPIO setup to control ADAQ PGA pins.
> > >
> > > Pin strapped/hardwired connections to PGA pins may benefit from a "fixed-gpios"
> > > driver which may (or may not?) use the shared GPIO abstraction layer [1]. I may
> > > propose support for pin-strapped/hardwired connections when I get a working
> > > fixed-gpios implementation.
> >
> > What is a "fixed-gpio" as compared to a hog, from a dt point of view?
> > Is it purely a software change?
>
>
> Short answer:
>
> I think "fixed-gpio" and gpio-hog would mean the same from dt point of view.
> Yes, it's mainly related to software.
Long answer is wasted on me, what you I just wanted to know if you were
proposing something new on the dt side or just able to use hogs :)
Well, wasted in an official capacity, obviously new features in the
kernel are also interesting to learn about.
Cheers,
Conor.
>
>
> Long answer:
>
> We would like to read the state of a pin from the GPIO client driver. Maybe we
> are already able to read gpio-hog states from client drivers and just didn't
> find out how.
>
> The idea is to standardize and simplify the dt bindings when peripheral pins can
> either be connected GPIOs or hard-wired to some logic level.
>
> For the particular example of ADAQ4216, it can have PGA control pins connected
> to GPIOs.
>
> +-------------+ +-------------+
> | ADC | | HOST |
> | | | |
> | SPI lines |<=======>| SPI lines |
> | | | |
> | A0 |<--------| GPIO_A |
> | A1 |<--------| GPIO_B |
> +-------------+ +-------------+
>
> But the pins might instead be hard-wired, like
>
> +-------------+ +-------------+
> | ADC | | HOST |
> | | | |
> | SPI lines |<=======>| SPI lines |
> | | +-------------+
> | A0 |<-----+
> | A1 |<-----+
> +-------------+ |
> VIO
>
> or
>
> +-------------+ +-------------+
> | ADC | | HOST |
> | | | |
> | SPI lines |<=======>| SPI lines |
> | | +-------------+
> | A0 |<--------- VIO
> | A1 |<-----+
> +-------------+ |
> GND
>
> Or even, possibly, a mix of GPIO and hard-wired.
>
> +-------------+ +-------------+
> | ADC | | HOST |
> | | | |
> | SPI lines |<=======>| SPI lines |
> | | | |
> | A0 |<--------| GPIO_A |
> | | +-------------+
> | A1 |<-----+
> +-------------+ |
> GND
>
> We have bindings (like adi,ad7191.yaml [1]) describing the hard-wired setups
> with function specific properties. E.g.
> adi,pga-value:
> $ref: /schemas/types.yaml#/definitions/uint32
> description: |
> Should be present if PGA pins are pin-strapped. Possible values:
> Gain 1 (PGA1=0, PGA2=0)
> Gain 8 (PGA1=0, PGA2=1)
> Gain 64 (PGA1=1, PGA2=0)
> Gain 128 (PGA1=1, PGA2=1)
> If defined, pga-gpios must be absent.
> enum: [1, 8, 64, 128]
>
> This approach works fine, but it requires documenting device-specific values
> (e.g. gain 1, gain 8, ..., gain X) for each new series of ADCs because each
> each series has different hardware properties.
>
> Sometimes peripherals have pins with different functions that are also either
> hard-wired or connected to GPIOs (like adi,ad7606.yaml [2] and adi,ad7625.yaml [3]).
> Software wants to know about the state of those pins. When they are connected
> to GPIOs, we can just read the GPIO value. But when the pins are hard-wired,
> we have to set additional dt properties (e.g. adi,pga-value) and then software
> figures out the state of the pins from the value read from dt.
> What we wonder is whether it would be possible to have both the GPIO and
> hard-wired cases described by gpio properties.
>
> [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/iio/adc/adi,ad7191.yaml#n77
> [2]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml#n127
> [3]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/iio/adc/adi,ad7625.yaml#n70
>
> For example, instead of having
>
> /* All GPIOs case */
> pga-gpios = <&gpio 23 GPIO_ACTIVE_HIGH>, <&gpio 24 GPIO_ACTIVE_HIGH>;
>
> and
>
> /* All hard-wired (pin-strapped) case */
> adi,pga-value = <1>;
>
> maybe we could have something like
>
> /* All gpios */
> pga-gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>,
> <&gpio0 1 GPIO_ACTIVE_HIGH>;
> /* or all hard-wired */
> pga-gpios = <&fixed_gpio GPIO_FIXED_LOW>,
> <&fixed_gpio GPIO_FIXED_LOW>;
>
> as suggested by David [4].
>
> Though, I'm also a bit worried about such way of describing the hard-wired
> connections being potentially confusing as those "fixed-gpios" would not
> necessarily mean any actual GPIO.
>
> [4]: https://lore.kernel.org/linux-iio/CAMknhBHzXLjkbKAjkgRwEps=0YrOgUcdvRpuPRrcPkwfwWo88w@mail.gmail.com/
>
>
> With best regards,
> Marcelo
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
next prev parent reply other threads:[~2025-10-10 14:39 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-08 13:49 [PATCH v4 0/8] Add SPI offload support to AD4030 Marcelo Schmitt
2025-10-08 13:49 ` [PATCH v4 1/8] pwm: Declare waveform stubs for when PWM is not reachable Marcelo Schmitt
2025-10-09 16:58 ` Uwe Kleine-König
2025-10-10 16:34 ` David Lechner
2025-10-13 8:58 ` Uwe Kleine-König
2025-10-08 13:50 ` [PATCH v4 2/8] dt-bindings: iio: adc: adi,ad4030: Reference spi-peripheral-props Marcelo Schmitt
2025-10-08 13:50 ` [PATCH v4 3/8] Docs: iio: ad4030: Add double PWM SPI offload doc Marcelo Schmitt
2025-10-08 13:50 ` [PATCH v4 4/8] dt-bindings: iio: adc: adi,ad4030: Add PWM Marcelo Schmitt
2025-10-08 13:50 ` [PATCH v4 5/8] iio: adc: ad4030: Use BIT macro to improve code readability Marcelo Schmitt
2025-10-08 13:51 ` [PATCH v4 6/8] iio: adc: ad4030: Add SPI offload support Marcelo Schmitt
2025-10-10 11:19 ` Nuno Sá
2025-10-10 16:18 ` David Lechner
2025-10-10 18:46 ` Nuno Sá
2025-10-10 17:39 ` David Lechner
2025-10-08 13:51 ` [PATCH v4 7/8] dt-bindings: iio: adc: adi,ad4030: Add ADAQ4216 and ADAQ4224 Marcelo Schmitt
2025-10-08 21:04 ` Conor Dooley
2025-10-09 16:24 ` Marcelo Schmitt
2025-10-08 21:07 ` Conor Dooley
2025-10-09 22:02 ` Marcelo Schmitt
2025-10-10 14:39 ` Conor Dooley [this message]
2025-10-12 17:40 ` Jonathan Cameron
2025-10-08 13:51 ` [PATCH v4 8/8] iio: adc: ad4030: Add support for " Marcelo Schmitt
2025-10-10 18:12 ` David Lechner
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=20251010-donut-agreeable-07f3367416d5@spud \
--to=conor@kernel.org \
--cc=andy@kernel.org \
--cc=conor+dt@kernel.org \
--cc=corbet@lwn.net \
--cc=devicetree@vger.kernel.org \
--cc=dlechner@baylibre.com \
--cc=eblanc@baylibre.com \
--cc=jic23@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=marcelo.schmitt1@gmail.com \
--cc=marcelo.schmitt@analog.com \
--cc=michael.hennerich@analog.com \
--cc=nuno.sa@analog.com \
--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).