On Tue, Oct 27, 2026 at 03:44:08PM +0200, Nicolae-Daniel Deaconescu wrote: > From: Sergiu Cuciurean > > 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 > Co-developed-by: Nicolae-Daniel Deaconescu > Signed-off-by: Nicolae-Daniel Deaconescu > 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 > + - Nicolae-Daniel Deaconescu > + > +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 Why are we getting new devices with linear vendor prefixes? My understanding was that new devices from ADI subsidiaries were to use the adi vendor prefix. > + > + 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 Hmm, ltc2387-16 does not appear to have these signals? Well, it has "cnv" but "cnv" has "sample clock" as the input name so is the clocks property above and pwm-clock can be used if the provider is a pwm? Either there's some mutual exclusion missing here or the modelling in incorrect. "clk_gate" doesn't appear in either of the datasheets I looked at, what does that actually do? pw-bot: changes-requested > + > + 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 Please explain how this is not determinable from the compatible. Cheers, Conor. > + > + 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 > +M: Sergiu Cuciurean > +L: linux-iio@vger.kernel.org > +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 > M: Kim Seer Paller > -- > 2.34.1 >