Hi, On Wed, May 4, 2022 at 12:04 AM Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> wrote: > > >>>> The most specific compatible identifies or, like recently Rob confirmed > >>>> in case of Renesas, the list of compatibles: > >>>> https://lore.kernel.org/linux-devicetree/Yk2%2F0Jf151gLuCGz@xxxxxxxxxxxxxxxxxx/ > >>> > >>> I'm confused. If the device tree contains the compatibles: > >>> > >>> "google,lazor-rev4", "google,lazor-rev3", "google,lazor", "qualcomm,sc7180" > >>> > >>> You want to know what board you're on and you look at the compatible, > >>> right? You'll decide that you're on a "google,lazor-rev4" which is the > >>> most specific compatible. ...but you could have booted a > >>> "google,lazor-rev3". How do you know? > >> > >> Applying the wrong DTB on the wrong device will always give you the > >> wrong answer. You can try too boot google,lazor-rev3 on x86 PC and it > >> does not make it a google,lazor-rev3... > > > > I don't understand what you're saying here. If a device tree has the compatible: > > > > "google,lazor-rev4", "google,lazor-rev3", "google,lazor", "qualcomm,sc7180" > > > > You wouldn't expect to boot it on an x86 PC, but you would expect to > > boot it on either a "google,lazor-rev4" _or_ a "google,lazor-rev3". > > Yes, but booting it does not mean that the hardware is rev3 or rev4. > Booting it means only that we are running DTB on a compatible hardware. > The DTB determines what is accessible to user-space, not what *really* > the hardware is. The user-space (since we are going now to original > question) reads it and can understand that it is running on hardware > compatible with rev3 - either rev3 or rev4 - and act accordingly. > > > Correct? Now, after we've booted software wants to look at the > > compatible of the device tree that was booted. The most specific entry > > in that device tree is "google,lazor-rev4". ...but we could have > > booted it on a "google,lazor-rev3". How can you know? > > No, providing and loading a rev4 DTB on a rev3 board is not correct and > does not make any sense. rev3 boards are not compatible with rev4, it's > the other way. Not every fruit is an apple, but every apple is a fruit. > This is why I used that example - if you load rev4 DTB on rev3 hardware > then you have totally wrong booting process. I think this is the crux of the difference in opinion and there's no reasonable way I'm aware of to do what you're asking. If -rev3 and -rev4 are identical from a software point of view it would be silly not to share a device tree for the two of them. The number of device trees we'd have to land in the kernel tree would be multiplied by several times and we'd have many that are identical except for this compatible string. I see no benefit here and lots of downside. -Doug