[PATCH 1/2] dt-bindings: iio: adc: add lltc,ltc2387
From: Nicolae-Daniel Deaconescu
Date: Tue Oct 27 2026 - 09:45:27 EST
From: Sergiu Cuciurean <sergiu.cuciurean@xxxxxxxxxx>
Add bindings for the LTC2387-16 and LTC2387-18, 15 Msps SAR ADCs with
an LVDS data interface, and for the ADAQ23875, ADAQ23876 and ADAQ23878
uModule ADCs, which pair an LTC2387 die with a fully differential
amplifier front end.
Conversion start (CNV) and the gated LVDS clock are driven by two PWM
channels. Sample data is captured by an AXI ADC IP core, referenced
through io-backends. adi,use-two-lanes selects two-lane output, and
adi,gain-milli gives the front-end gain: fixed at 2 on the ADAQ23875,
set by pin strapping on the ADAQ23876 and ADAQ23878.
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>
Assisted-by: Claude:claude-opus-5-5
---
.../bindings/iio/adc/lltc,ltc2387.yaml | 138 ++++++++++++++++++
MAINTAINERS | 8 +
2 files changed, 146 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/adc/lltc,ltc2387.yaml
diff --git a/Documentation/devicetree/bindings/iio/adc/lltc,ltc2387.yaml b/Documentation/devicetree/bindings/iio/adc/lltc,ltc2387.yaml
new file mode 100644
index 000000000000..f912260c8f79
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/adc/lltc,ltc2387.yaml
@@ -0,0 +1,138 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2022 Analog Devices Inc.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/lltc,ltc2387.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Linear Technology / Analog Devices LTC2387 ADC
+
+maintainers:
+ - Sergiu Cuciurean <sergiu.cuciurean@xxxxxxxxxx>
+ - Nicolae-Daniel Deaconescu <Nicolae-daniel.Deaconescu@xxxxxxxxxx>
+
+description: |
+ The LTC2387-18 is a low noise, high speed, 18-bit 15Msps
+ successive approximation register (SAR) ADC ideally
+ suited for a wide range of applications.
+
+ https://www.analog.com/media/en/technical-documentation/data-sheets/238718fa.pdf
+ https://www.analog.com/media/en/technical-documentation/data-sheets/238716f.pdf
+
+properties:
+ compatible:
+ enum:
+ - adi,adaq23875
+ - adi,adaq23876
+ - adi,adaq23878
+ - lltc,ltc2387-16
+ - lltc,ltc2387-16-x4
+ - lltc,ltc2387-18
+ - lltc,ltc2387-18-x4
+
+ clocks:
+ description: Sampling clock
+ maxItems: 1
+
+ pwms:
+ maxItems: 2
+ description:
+ PWM signals used to synchronize the sampling procedure
+
+ pwm-names:
+ items:
+ - const: cnv
+ - const: clk_gate
+
+ io-backends:
+ description:
+ The AXI ADC IP block (axi_ltc2387) that captures the LVDS data stream.
+ maxItems: 1
+
+ vref-supply:
+ description:
+ External voltage reference. When absent the device's internal 4.096 V
+ reference is assumed.
+
+ adi,use-two-lanes:
+ description: The device uses two lanes for data transfer
+ type: boolean
+
+ adi,gain-milli:
+ description:
+ Gain of the fully-differential amplifier that the ADAQ2387x 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. The bare ltc2387-* parts have
+ no amplifier.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [370, 730, 870, 1380, 2000, 2250]
+
+required:
+ - compatible
+ - clocks
+ - io-backends
+ - pwms
+ - pwm-names
+
+allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - lltc,ltc2387-16
+ - lltc,ltc2387-16-x4
+ - lltc,ltc2387-18
+ - lltc,ltc2387-18-x4
+ then:
+ properties:
+ adi,gain-milli: false
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: adi,adaq23875
+ then:
+ properties:
+ adi,gain-milli:
+ const: 2000
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - adi,adaq23876
+ - adi,adaq23878
+ then:
+ properties:
+ adi,gain-milli:
+ enum: [370, 730, 870, 1380, 2250]
+ required:
+ - adi,gain-milli
+
+additionalProperties: false
+
+examples:
+ - |
+ adc {
+ compatible = "lltc,ltc2387-16";
+ clocks = <&clk 0>;
+ io-backends = <&axi_adc>;
+ pwms = <&pwm 0 0>, <&pwm 1 0>;
+ pwm-names = "cnv", "clk_gate";
+ vref-supply = <&vref>;
+ };
+ - |
+ adc {
+ compatible = "adi,adaq23878";
+ clocks = <&clk 0>;
+ io-backends = <&axi_adc>;
+ pwms = <&pwm 0 0>, <&pwm 1 0>;
+ pwm-names = "cnv", "clk_gate";
+ vref-supply = <&vref>;
+ adi,use-two-lanes;
+ adi,gain-milli = <870>;
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 52024397dc78..b871d7f25d76 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -15529,6 +15529,14 @@ W: https://ez.analog.com/linux-software-drivers
F: Documentation/devicetree/bindings/iio/adc/adi,ltc2378.yaml
F: drivers/iio/adc/ltc2378.c
+LTC2387 IIO ADC DRIVER
+M: Nicolae-Daniel Deaconescu <Nicolae-daniel.Deaconescu@xxxxxxxxxx>
+M: Sergiu Cuciurean <sergiu.cuciurean@xxxxxxxxxx>
+L: linux-iio@xxxxxxxxxxxxxxx
+S: Supported
+W: https://ez.analog.com/linux-software-drivers
+F: Documentation/devicetree/bindings/iio/adc/lltc,ltc2387.yaml
+
LTC2664 IIO DAC DRIVER
M: Michael Hennerich <michael.hennerich@xxxxxxxxxx>
M: Kim Seer Paller <kimseer.paller@xxxxxxxxxx>
--
2.34.1