[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240803153540.17627489@jic23-huawei>
Date: Sat, 3 Aug 2024 15:35:40 +0100
From: Jonathan Cameron <jic23@...nel.org>
To: Trevor Gamblin <tgamblin@...libre.com>
Cc: Lars-Peter Clausen <lars@...afoo.de>, Michael Hennerich
<Michael.Hennerich@...log.com>, Nuno Sá <nuno.sa@...log.com>,
Rob Herring <robh@...nel.org>, Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>, Jonathan Corbet <corbet@....net>, David
Lechner <dlechner@...libre.com>, Uwe Kleine-Konig
<u.kleine-koenig@...libre.com>, linux-iio@...r.kernel.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-doc@...r.kernel.org, Linus Walleij <linus.walleij@...aro.org>,
Bartosz Golaszewski <brgl@...ev.pl>
Subject: Re: [PATCH RFC 1/3] dt-bindings: iio: adc: add AD762x/AD796x ADCs
On Wed, 31 Jul 2024 09:48:03 -0400
Trevor Gamblin <tgamblin@...libre.com> wrote:
> This adds a binding specification for the Analog Devices Inc. AD7625,
> AD7626, AD7960, and AD7961 ADCs.
Given the RFC question is effectively about the binding and may influence
it a lot - make sure it's talked about here!
>
> Signed-off-by: Trevor Gamblin <tgamblin@...libre.com>
> ---
> .../devicetree/bindings/iio/adc/adi,ad7625.yaml | 176 +++++++++++++++++++++
> MAINTAINERS | 9 ++
> 2 files changed, 185 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7625.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7625.yaml
> new file mode 100644
> index 000000000000..e88db0ac2534
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7625.yaml
> @@ -0,0 +1,176 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/iio/adc/adi,ad7625.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Analog Devices Fast PulSAR Analog to Digital Converters
> +
> +maintainers:
> + - Michael Hennerich <Michael.Hennerich@...log.com>
> + - Nuno Sá <nuno.sa@...log.com>
> +
> +description: |
> + A family of single channel differential analog to digital converters
> + in a LFCSP package. Note that these bindings are for the device when
> + used with the PulSAR LVDS project:
> + http://analogdevicesinc.github.io/hdl/projects/pulsar_lvds/index.html.
As per the discussion in the cover letter I think the need to represent
if the DCO+ is connected between ADC and LVDS converter strongly suggests
we shouldn't represent it as one aggregate device.
> +
> + * https://www.analog.com/en/products/ad7625.html
> + * https://www.analog.com/en/products/ad7626.html
> + * https://www.analog.com/en/products/ad7960.html
> + * https://www.analog.com/en/products/ad7961.html
> +
> +properties:
> + compatible:
> + enum:
> + - adi,ad7625
> + - adi,ad7626
> + - adi,ad7960
> + - adi,ad7961
> +
> + vdd1-supply:
> + description: A supply that powers the analog and digital circuitry.
Doesn't really tell us anything. I'd just go with
vdd1-supply: true
vdd2-supply: true
vio-supply: true
> +
> + vdd2-supply:
> + description: A supply that powers the analog and digital circuitry.
> +
> + vio-supply:
> + description: A supply for the inputs and outputs.
> +
> + ref-supply:
> + description:
> + Voltage regulator for the external reference voltage (REF).
> +
> + refin-supply:
> + description:
> + Voltage regulator for the reference buffer input (REFIN).
> +
> + clocks:
> + description:
> + The clock connected to the CLK pins, gated by the clk_gate PWM.
> + maxItems: 1
> +
> + pwms:
> + maxItems: 2
> +
> + pwm-names:
> + maxItems: 2
> + items:
> + - const: cnv
> + description: PWM connected to the CNV input on the ADC.
> + - const: clk_gate
> + description: PWM that gates the clock connected to the ADC's CLK input.
> +
> + io-backends:
> + description:
> + The AXI ADC IP block connected to the D+/- and DCO+/- lines of the ADC.
So you have a backend. Great - we have something to indicate a connection
to or not for the DCO+/o lines. It's a bit ugly to just repesent it as a clk
but that would I think work.
> + maxItems: 1
> +
> + adi,en0-always-on:
> + $ref: /schemas/types.yaml#/definitions/flag
> + description:
> + Indicates if EN0 is hard-wired to the high state. If neither this
> + nor en0-gpios are present, then EN0 is hard-wired low.
It's unfortunate there isn't a special 'fixed' gpio-chip option where we could
just query it is fixed and what the state of the pin is. This is getting
quite common so would be good to have a better solution.
Linus, Bartosz - is there a better way to do this?
> +
> + adi,en1-always-on:
> + $ref: /schemas/types.yaml#/definitions/flag
> + description:
> + Indicates if EN1 is hard-wired to the high state. If neither this
> + nor en1-gpios are present, then EN1 is hard-wired low.
> +
> + adi,en2-always-on:
> + $ref: /schemas/types.yaml#/definitions/flag
> + description:
> + Indicates if EN2 is hard-wired to the high state. If neither this
> + nor en2-gpios are present, then EN2 is hard-wired low.
> +
> + adi,en3-always-on:
> + $ref: /schemas/types.yaml#/definitions/flag
> + description:
> + Indicates if EN3 is hard-wired to the high state. If neither this
> + nor en3-gpios are present, then EN3 is hard-wired low.
> +
> + en0-gpios:
> + description:
> + Configurable EN0 pin.
> +
> + en1-gpios:
> + description:
> + Configurable EN1 pin.
> +
> + en2-gpios:
> + description:
> + Configurable EN2 pin.
> +
> + en3-gpios:
> + description:
> + Configurable EN3 pin.
> +
> +required:
> + - compatible
> + - vdd1-supply
> + - vdd2-supply
> + - vio-supply
> + - clocks
> + - pwms
> + - pwm-names
> + - io-backends
> +
> +- if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - adi,ad7625
> + - adi,ad7626
> + then:
> + properties:
> + en2-gpios: false
> + en3-gpios: false
> + adi,en2-always-on: false
> + adi,en3-always-on: false
> + allOf:
> + # ref-supply and refin-supply are mutually-exclusive (neither is also
> + # valid)
> + - if:
> + required:
> + - ref-supply
> + then:
> + properties:
> + refin-supply: false
> + - if:
> + required:
> + - refin-supply
> + then:
> + properties:
> + ref-supply: false
> +
> +- if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - adi,ad7960
> + - adi,ad7961
> + then:
> + oneOf:
> + required:
> + - ref-supply
> + required:
> + - refin-supply
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + adc {
> + compatible = "adi,ad7625";
> + vdd1-supply = <&supply_5V>;
> + vdd2-supply = <&supply_2_5V>;
> + vio-supply = <&supply_2_5V>;
> + io-backends = <&axi_adc>;
> + clock = <&ref_clk>;
> + pwms = <&axi_pwm_gen 0 0>, <&axi_pwm_gen 1 0>;
> + pwm-names = "cnv", "clk_gate";
> + };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 42decde38320..2361f92751dd 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1260,6 +1260,15 @@ F: Documentation/devicetree/bindings/iio/addac/adi,ad74413r.yaml
> F: drivers/iio/addac/ad74413r.c
> F: include/dt-bindings/iio/addac/adi,ad74413r.h
>
> +ANALOG DEVICES INC AD7625 DRIVER
> +M: Michael Hennerich <Michael.Hennerich@...log.com>
> +M: Nuno Sá <nuno.sa@...log.com>
> +R: Trevor Gamblin <tgamblin@...libre.com>
> +S: Supported
> +W: https://ez.analog.com/linux-software-drivers
> +W: http://analogdevicesinc.github.io/hdl/projects/pulsar_lvds/index.html
> +F: Documentation/devicetree/bindings/iio/adc/adi,ad7625.yaml
> +
> ANALOG DEVICES INC AD7768-1 DRIVER
> M: Michael Hennerich <Michael.Hennerich@...log.com>
> L: linux-iio@...r.kernel.org
>
Powered by blists - more mailing lists