[PATCH v2 4/5] dt-bindings: iio: adc: adi,ad7625: add LTC2387 and ADAQ2387x
From: Nicolae-Daniel Deaconescu
Date: Wed Nov 04 2026 - 08:24:10 EST
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
+
+ - 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