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. > 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? > > 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 Again, only one fallback here, not sure what are you asking about. BTW, DT spec explains compatibles... > > https://www.analog.com/media/en/technical-documentation/data-sheets/ad7691.pdf > has a nice table with the different devices and sample rates. > > 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? > From Documentation/devicetree/bindings/display/bridge/lvds-codec.yaml I'm How LVDS bridge is related to this one here? > 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. Best regards, Krzysztof