Re: [PATCH v2 4/5] dt-bindings: iio: adc: adi,ad7625: add LTC2387 and ADAQ2387x
From: Conor Dooley
Date: Wed Nov 04 2026 - 20:16:24 EST
On Wed, Nov 04, 2026 at 03:21:42PM +0200, Nicolae-Daniel Deaconescu wrote:
> From: Sergiu Cuciurean <sergiu.cuciurean@xxxxxxxxxx>
>
> Add the LTC2387-16, LTC2387-18, ADAQ23875, ADAQ23876 and ADAQ23878 to the
> binding. They are single channel differential ADCs like the AD762x and
> AD796x and are read the same way: CNV and CLK are driven by two PWMs and
> the LVDS data is captured by an AXI ADC. They differ in what is around the
> converter:
>
> - Their output is double data rate on one or two lanes, selected by the
> TWOLANES pin, described by adi,use-two-lanes.
> - They have no EN pins, and no clocks property, because the PWM provider
> reports the clock its waveforms are derived from. The second PWM is named
> clk, as that is the pin it drives, where the AD762x and AD796x name it
> clk_gate.
> - The supplies are VDD, VDDL and OVDD on the LTC2387, and VDD, VIO, VS+ and
> VS- on the ADAQ modules.
> - The ADAQ modules have a fully differential amplifier in front of the ADC.
> Its gain is fixed on the ADAQ23875 and set by pin strapping on the
> ADAQ23876 and ADAQ23878, described by adi,gain-milli.
>
> The properties and supplies of the two groups of parts are made exclusive.
> The gain is described in the devicetree as the pin strapping can't be read
> from the part. There is no fallback compatible, as a driver for one of the
> existing parts would read these wrongly: their output is double data rate
> and has other timing limits.
>
> Signed-off-by: Sergiu Cuciurean <sergiu.cuciurean@xxxxxxxxxx>
> Co-developed-by: Nicolae-Daniel Deaconescu <Nicolae-daniel.Deaconescu@xxxxxxxxxx>
> Signed-off-by: Nicolae-Daniel Deaconescu <Nicolae-daniel.Deaconescu@xxxxxxxxxx>
> ---
> .../bindings/iio/adc/adi,ad7625.yaml | 193 +++++++++++++++++-
> 1 file changed, 184 insertions(+), 9 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7625.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7625.yaml
> index 8848562af28f..dbdded88236c 100644
> --- a/Documentation/devicetree/bindings/iio/adc/adi,ad7625.yaml
> +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7625.yaml
> @@ -4,7 +4,7 @@
> $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
> +title: Analog Devices Fast PulSAR, LTC2387 and ADAQ2387x Analog to Digital Converters
>
> maintainers:
> - Michael Hennerich <Michael.Hennerich@xxxxxxxxxx>
> @@ -17,6 +17,11 @@ description: |
> * https://www.analog.com/en/products/ad7626.html
> * https://www.analog.com/en/products/ad7960.html
> * https://www.analog.com/en/products/ad7961.html
> + * https://www.analog.com/en/products/ltc2387-16.html
> + * https://www.analog.com/en/products/ltc2387-18.html
> + * https://www.analog.com/en/products/adaq23875.html
> + * https://www.analog.com/en/products/adaq23876.html
> + * https://www.analog.com/en/products/adaq23878.html
>
> properties:
> compatible:
> @@ -25,14 +30,37 @@ properties:
> - adi,ad7626
> - adi,ad7960
> - adi,ad7961
> + - adi,adaq23875
> + - adi,adaq23876
> + - adi,adaq23878
> + - adi,ltc2387-16
> + - adi,ltc2387-18
>
> vdd1-supply: true
> vdd2-supply: true
> vio-supply: true
>
> + vdd-supply:
> + description: 5V analog power supply (VDD), LTC2387 and ADAQ parts only.
> +
> + vddl-supply:
> + description: 2.5V analog power supply (VDDL), LTC2387 parts only.
> +
> + ovdd-supply:
> + description: 2.5V output power supply (OVDD), LTC2387 parts only.
> +
> + vs-p-supply:
> + description: Amplifier positive supply (VS+), ADAQ parts only.
> +
> + vs-n-supply:
> + description:
> + Amplifier negative supply (VS-), ADAQ parts only. Leave it out if VS-
> + is tied to ground.
> +
> ref-supply:
> description:
> - Voltage regulator for the external reference voltage (REF).
> + Voltage regulator for the external reference voltage (REF, or REFBUF
> + on the LTC2387 and ADAQ2387x).
>
> refin-supply:
> description:
> @@ -40,18 +68,23 @@ properties:
>
> clocks:
> description:
> - The clock connected to the CLK pins, gated by the clk_gate PWM.
> + The clock connected to the CLK pins, gated by the clk_gate PWM. Not
> + described for the LTC2387 and ADAQ parts.
> maxItems: 1
>
> pwms:
> items:
> - description: PWM connected to the CNV input on the ADC.
> - - description: PWM that gates the clock connected to the ADC's CLK input.
> + - description:
> + PWM that gates the clock connected to the ADC's CLK input, so that
> + it sees the burst of pulses for each conversion. It is named
> + clk_gate for the AD762x and AD796x, and clk for the LTC2387 and
> + ADAQ2387x.
>
> pwm-names:
> items:
> - const: cnv
> - - const: clk_gate
> + - enum: [clk_gate, clk]
>
> io-backends:
> description:
> @@ -91,6 +124,23 @@ properties:
> Indicates if EN3 is hard-wired to the high state. If neither this
> nor en3-gpios are present, then EN3 is hard-wired low.
>
> + adi,use-two-lanes:
> + $ref: /schemas/types.yaml#/definitions/flag
> + description:
> + Describes whether the TWOLANES pin of an LTC2387 or ADAQ part is set
> + high, selecting two-lane LVDS output, or low, selecting one-lane
> + output (the default).
> +
> + adi,gain-milli:
> + description:
> + Gain of the fully-differential amplifier that the ADAQ modules
> + integrate ahead of the LTC2387 die, expressed as gain * 1000. It is
> + fixed on the ADAQ23875 and set by pin strapping on the ADAQ23876 and
> + ADAQ23878, so it must match the board. Not allowed on the ADAQ23875,
> + whose gain is fixed at 2.
> + $ref: /schemas/types.yaml#/definitions/uint16
> + enum: [370, 730, 870, 1380, 2250]
> +
> en0-gpios:
> description:
> Configurable EN0 pin.
> @@ -109,10 +159,6 @@ properties:
>
> required:
> - compatible
> - - vdd1-supply
> - - vdd2-supply
> - - vio-supply
> - - clocks
> - pwms
> - pwm-names
> - io-backends
> @@ -157,6 +203,111 @@ allOf:
> - required: [ref-supply]
> - required: [refin-supply]
>
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - adi,ad7625
> + - adi,ad7626
> + - adi,ad7960
> + - adi,ad7961
> + then:
> + properties:
> + pwm-names:
> + items:
> + - const: cnv
> + - const: clk_gate
> + vdd-supply: false
> + vddl-supply: false
> + ovdd-supply: false
> + vs-p-supply: false
> + vs-n-supply: false
> + adi,use-two-lanes: false
> + adi,gain-milli: false
> + required:
> + - vdd1-supply
> + - vdd2-supply
> + - vio-supply
> + - clocks
> + else:
> + # The LTC2387 and ADAQ parts have no EN pins and no clock to describe.
> + properties:
> + pwm-names:
> + items:
> + - const: cnv
> + - const: clk
> + vdd1-supply: false
> + vdd2-supply: false
> + clocks: false
> + # REFIN is the bandgap output and the input of the reference buffer.
> + # An external reference goes to REFBUF, through ref-supply.
> + refin-supply: false
> + en0-gpios: false
> + en1-gpios: false
> + en2-gpios: false
> + en3-gpios: false
> + adi,en0-always-on: false
> + adi,en1-always-on: false
> + adi,en2-always-on: false
> + adi,en3-always-on: false
> + adi,no-dco: false
> + required:
> + - vdd-supply
Honestly, when the devices are this different, I don't think having a
shared binding is worth it. Shared driver perhaps, but when so many
properties don't apply the things should be kept in different binding
files I think, this is just confusingly different IMO.
Thanks for sorting out the clocks thing though.
Conor.
> +
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - adi,ltc2387-16
> + - adi,ltc2387-18
> + then:
> + properties:
> + vio-supply: false
> + vs-p-supply: false
> + vs-n-supply: false
> + adi,gain-milli: false
> + required:
> + - vddl-supply
> + - ovdd-supply
> +
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - adi,adaq23875
> + - adi,adaq23876
> + - adi,adaq23878
> + then:
> + properties:
> + vddl-supply: false
> + ovdd-supply: false
> + required:
> + - vio-supply
> + - vs-p-supply
> +
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: adi,adaq23875
> + then:
> + properties:
> + adi,gain-milli: false
> +
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - adi,adaq23876
> + - adi,adaq23878
> + then:
> + required:
> + - adi,gain-milli
> +
> additionalProperties: false
>
> examples:
> @@ -174,3 +325,27 @@ examples:
> en0-gpios = <&gpio0 86 GPIO_ACTIVE_HIGH>;
> en1-gpios = <&gpio0 87 GPIO_ACTIVE_HIGH>;
> };
> + - |
> + adc {
> + compatible = "adi,ltc2387-16";
> + io-backends = <&axi_adc>;
> + ovdd-supply = <&supply_2_5V>;
> + pwms = <&axi_pwm_gen 0 0 0>, <&axi_pwm_gen 1 0 0>;
> + pwm-names = "cnv", "clk";
> + ref-supply = <&supply_4_096V>;
> + vdd-supply = <&supply_5V>;
> + vddl-supply = <&supply_2_5V>;
> + };
> + - |
> + adc {
> + compatible = "adi,adaq23878";
> + io-backends = <&axi_adc>;
> + pwms = <&axi_pwm_gen 0 0 0>, <&axi_pwm_gen 1 0 0>;
> + pwm-names = "cnv", "clk";
> + vdd-supply = <&supply_5V>;
> + vio-supply = <&supply_2_5V>;
> + vs-n-supply = <&supply_0V>;
> + vs-p-supply = <&supply_5V>;
> + adi,gain-milli = /bits/ 16 <870>;
> + adi,use-two-lanes;
> + };
> --
> 2.34.1
>
Attachment:
signature.asc
Description: PGP signature