[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Z0D0e6mNKlVAXp0z@debian-BULLSEYE-live-builder-AMD64>
Date: Fri, 22 Nov 2024 18:15:39 -0300
From: Marcelo Schmitt <marcelo.schmitt1@...il.com>
To: Krzysztof Kozlowski <krzk@...nel.org>
Cc: Marcelo Schmitt <marcelo.schmitt@...log.com>, lars@...afoo.de,
Michael.Hennerich@...log.com, jic23@...nel.org, robh@...nel.org,
krzk+dt@...nel.org, conor+dt@...nel.org, linux-iio@...r.kernel.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 1/4] dt-bindings: iio: adc: adi,ad4000: Add PulSAR
On 11/22, Krzysztof Kozlowski wrote:
> On 22/11/2024 16:33, Marcelo Schmitt wrote:
> >>
> >>> + - items:
> >>> + - enum:
> >>> + - adi,ad7942
> >>> + - const: adi,ad7946
> >>> +
> >>> + - const: adi,ad7983
> >>> + - items:
> >>> + - enum:
> >>> + - adi,ad7980
> >>> + - adi,ad7988-5
> >>> + - adi,ad7686
> >>> + - adi,ad7685
> >>
> >> Keep alphabetical order.
> >
> > Do the fallbacks declared here have any impact on the match try order or on how
> > the compatible list should be ordered?
>
> I don't understand, we do not talk about fallbacks. I also do not
> understand at all how this relates to my comment.
I was wondering if the arrangement in which compatible strings appear in dt doc
could be used to suggest the sequence to add them to the compatible property of a
device node in a dts. Apparently, the arrangement of compatible strings in dt doc
has nothing to do with how they can appear in a dts file. Will sort them in
alphabetical order.
>
> > The only significant difference between each group of devices is the sample rate.
> > A faster device can read at slower sample rates so if somebody knows to have
> > a 16-bit pseudo-differential PulSAR but doesn't know about the exact model they
> > could have a compatible like
> > compatible = "adi,ad7980", "adi,ad7988-5", "adi,ad7686", "adi,ad7685",
> > "adi,ad7988-1", "adi,ad7983";
>
> Can't you autodetect this?
There is no way of detecting the maximum sample rate other than the compatible
string or, maybe, running a data capture.
>
> >
> > to try from fastest to slowest device.
> > The dt doc would indicate that order in the fallback list?
> > - items:
> > - enum:
> > - adi,ad7980 # Fastest 16-bit pseudo-differential ADC
> > - adi,ad7988-5 # 2nd fastest 16-bit pseudo-differential ADC
> > - adi,ad7686 # 3rd fastest 16-bit pseudo-differential ADC
> > - adi,ad7685 # 4th fastest 16-bit pseudo-differential ADC
> > - adi,ad7988-1 # 5th fastest 16-bit pseudo-differential ADC
> > - const: adi,ad7983 # Slowest 16-bit pseudo-differential ADC
>
[...]
> >
> > writing-bindings.rst says "DO use fallback compatibles when devices are the same
> > as or a subset of prior implementations."
> > But, how can we use fallbacks properly?
>
> How DT spec and tutorials like elinux ask... What is exactly the problem
> or question?
Never mind. Do the bellow follow the preferred syntax?
- items:
- enum:
- adi,ad7980
- adi,ad7685
- adi,ad7686
- adi,ad7988-1
- adi,ad7988-5
- const: adi,ad7983
- items:
- enum:
- adi,ad7688
- adi,ad7693
- const: adi,ad7687
- items:
- enum:
- adi,ad7982
- adi,ad7984
- adi,ad7690
- const: adi,ad7691
- enum:
- adi,ad7942
- adi,ad7946
- adi,ad7984
>
> > From Documentation/devicetree/bindings/display/bridge/lvds-codec.yaml I'm
>
> How LVDS bridge is related to this one here?
Aside from having compatible fallbacks, not related.
>
> > inferring only one fallback should be provided per group of devices.
> >
> >>
> >>> + - adi,ad7988-1
> >>> + - const: adi,ad7983
> >>> +
> >>> + - const: adi,ad7688
> >>> + - items:
> >>> + - enum:
> >>> + - adi,ad7693
> >>> + - adi,ad7687
> >>> + - const: adi,ad7688
> >>> +
> >>> + - const: adi,ad7984
> >>> + - items:
> >>> + - enum:
> >>> + - adi,ad7982
> >>> + - adi,ad7690
> >>> + - adi,ad7691
> >>> + - const: adi,ad7984
> >>> +
> >>> reg:
> >>> maxItems: 1
> >>>
> >>> @@ -133,6 +178,32 @@ required:
> >>> - ref-supply
> >>>
> >>> allOf:
> >>> + # Single-channel PulSAR devices have SDI either tied to VIO, GND, or host CS.
> >>> + - if:
> >>> + properties:
> >>> + compatible:
> >>> + contains:
> >>> + enum:
> >>> + - adi,ad7685
> >>
> >> Why do you need this? It's fallback is already here.
> >
> > So dtbs_check can provide an error message if for example compatible = "adi,ad7687";
> > and adi,sdi-pin = "sdi";
>
>
> I mean this compatible, not if clause.
dtbs_check don't show an error message if the allOf list only has the fallback
compatible for adi,ad7685 and a device node has both
compatible = "adi,ad7685" and adi,sdi-pin = "sdi".
The new set of devices that will be supported by this binding don't have a
configuration register like the previous ones did. Because the PulSAR devices
don't have a config reg, they don't support all features of AD4000-like devices
and thus fewer IIO ABI interfaces are provided to user space. Though, AD4000
devices also can be wired in a way that no reg access is possible, in which
case they provide the same IIO interfaces that PulSAR devices do. The difference
is on what is connected to the peripheral SDI pin. When AD4000 SDI is connected
to SPI controller MOSI line, more interfaces are provided because the config
reg can be accessed to set additional features. But that is not an option for
PulSAR devices. Even if controller MOSI is connected to a PulSAR device, we
cannot provide the additional interfaces because every attempt to use them would
fail (the device has no register to configure). No datasheets mentions
connecting a PulSAR device SDI pin to a SPI MOSI line. All datasheets show
PulSAR SDI pin connected either to VIO (high), GND (low), or controller CS.
IMHO, it would be nice to have dtbs_check warn about invalid SDI pin
configuration otherwise it may only be noticed on driver probe.
Anyway, I'm also fine keeping only the fallback compatibles in the allOf list
if that makes dt maintainers happy.
>
>
>
>
> Best regards,
> Krzysztof
Powered by blists - more mailing lists