Re: [PATCH v3 1/5] dt-bindings: iio: adc: Add ltc2378

From: Conor Dooley

Date: Wed Jun 17 2026 - 17:17:34 EST


On Wed, Jun 17, 2026 at 02:14:32PM -0300, Marcelo Schmitt wrote:
> On 06/17, Conor Dooley wrote:
> > On Tue, Jun 16, 2026 at 11:03:11PM -0300, Marcelo Schmitt wrote:
> > > Document how to describe LTC2378-20 and similar ADCs in device tree.
> > >
> > > Signed-off-by: Marcelo Schmitt <marcelo.schmitt@xxxxxxxxxx>
> > > ---
> > > Change log v2 -> v3:
> > > - Re-added device tree fallback compatibles for LTC2378 chips, now with options
> > > to provide a single compatible string or a pair of single compatible string
> > > plus a fallback string to a slower sample rate spec in case a driver for the
> > > specific part is not found.
> > >
> > > .../bindings/iio/adc/adi,ltc2378.yaml | 160 ++++++++++++++++++
> > > MAINTAINERS | 7 +
> > > 2 files changed, 167 insertions(+)
> > > create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ltc2378.yaml
> > >
> > > diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ltc2378.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ltc2378.yaml
> > > new file mode 100644
> > > index 000000000000..7d30a2cade8f
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/iio/adc/adi,ltc2378.yaml
> > > @@ -0,0 +1,160 @@
> > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/iio/adc/adi,ltc2378.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Analog Devices LTC2378 and similar Analog to Digital Converters
> > > +
> > > +maintainers:
> > > + - Marcelo Schmitt <marcelo.schmitt@xxxxxxxxxx>
> > > +
> > > +description: |
> > > + Analog Devices LTC2378 series of ADCs.
> > > + Specifications can be found at:
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/233818fa.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/236416fa.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/236418f.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/236716fa.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/236718f.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/236816f.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/236818f.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/236918fa.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/237016fa.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/237616fa.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/237618fa.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/237620fb.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/237716fa.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/237718fa.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/237720fb.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/237816fa.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/237818fa.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/237820fb.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/237918fb.pdf
> > > + https://www.analog.com/media/en/technical-documentation/data-sheets/238016fb.pdf
> > > +
> > > +$ref: /schemas/spi/spi-peripheral-props.yaml#
> > > +
> > > +properties:
> > > + compatible:
> > > + oneOf:
> > > + # Single compatible string match.
> > > + - enum:
> > > + - adi,ltc2338-18
> > > + - adi,ltc2364-16
> > > + - adi,ltc2364-18
> > > + - adi,ltc2367-16
> > > + - adi,ltc2367-18
> > > + - adi,ltc2368-16
> > > + - adi,ltc2368-18
> > > + - adi,ltc2369-18
> > > + - adi,ltc2370-16
> > > + - adi,ltc2376-16
> > > + - adi,ltc2376-18
> > > + - adi,ltc2376-20
> > > + - adi,ltc2377-16
> > > + - adi,ltc2377-18
> > > + - adi,ltc2377-20
> > > + - adi,ltc2378-16
> > > + - adi,ltc2378-18
> > > + - adi,ltc2378-20
> > > + - adi,ltc2379-18
> > > + - adi,ltc2380-16
> > > +
> > > + # Low sample rate fallback for 16-bit unipolar sensors.
> > > + - items:
> > > + - enum:
> > > + - adi,ltc2370-16 # 2 MSPS
> > > + - adi,ltc2368-16 # 1 MSPS
> > > + - adi,ltc2367-16 # 500 kSPS
> > > + - const: adi,ltc2364-16 # fallback (250 kSPS)
> >
> > Your driver still matches on ltc2370-16, which makes me question the
> > value of these fallbacks. That said, the chip info struct contains no
> > information about sampling rate.
> The info about sample rate is added in patch 4.

Ah, I missed that.

> > What actually is the impact of the sample rate on the programming model?
> If the user tries to set a sample rate beyond the maximum supported, software
> can throw an error to indicate that.

I think you have misunderstood this. I was asking how the driver
interacts with the hardware. Do all devices come out of reset with the
minimum sampling rate? Or a per-device default rate? Do the faster
devices support all slower rates? If they do, do the registers have the
same meaning and the same value sets 2370-16 device to 1 MSPS as
2368-16.

> > Is there actually a benefit to matching on ltc2370-16, or can you just
> > match on the fallback?
> The benefit is telling software that it is safe to go up to 2 MSPS. It is also
> okay to match on the fallback, but software may restrain operation to a slower
> sample rate.

My whole review here is shit cos I didn't see patch 4, so the use of
fallbacks seems appropriate (provided your answers to my programming
model questions are sane!).

>
> With the code being proposed in this patch set, there is no benefit in matching
> the ltc2364-16 fallback if there is a faster ltc2370-16 device connected because
> device driver supports that. Though, other operating systems and/or platforms
> might not support all device variants and so the fallback might be useful.
>
> > +static const struct ltc2378_chip_info ltc2370_16_chip_info = {
> > + .name = "ltc2370-16",
> > + .resolution = 16,
> In a later patch ...
> + .max_sample_rate_hz = 2 * HZ_PER_MHZ,
> + .tconv_ns = 322,
> > + .bipolar = false,
> > +};
> >
> > +static const struct ltc2378_chip_info ltc2368_16_chip_info = {
> > + .name = "ltc2368-16",
> > + .resolution = 16,
> + .max_sample_rate_hz = HZ_PER_MHZ,
> + .tconv_ns = 527
> > + .bipolar = false,
> > +};
> >
> > +static const struct ltc2378_chip_info ltc2367_16_chip_info = {
> > + .name = "ltc2367-16",
> > + .resolution = 16,
> + .max_sample_rate_hz = 500 * HZ_PER_KHZ,
> + .tconv_ns = 1500,
> > + .bipolar = false,
> > +};
> >
> > +static const struct ltc2378_chip_info ltc2364_16_chip_info = {
> > + .name = "ltc2364-16",
> > + .resolution = 16,
> + .max_sample_rate_hz = 250 * HZ_PER_KHZ,
> + .tconv_ns = 3000,
> > + .bipolar = false,
> > +};
> >
> ...
> > > + # Low sample rate fallback for 20-bit bipolar sensors.
> > > + - items:
> > > + - enum:
> > > + - adi,ltc2378-20 # 1 MSPS
> > > + - adi,ltc2377-20 # 500 kSPS
> > > + - const: adi,ltc2376-20 # fallback (250 kSPS)
> >
> > I didn't check these, but I assume they are the same.
>
> Yes, except for small variations on input (unipolar/bipolar) and precision bits,
> these devices are pretty much equal.

What I meant here was that 2378-20, 2377-20 and 2376-20 would follow the
same pattern of having identical match data (pre patch 4).

Attachment: signature.asc
Description: PGP signature