Thread (32 messages) 32 messages, 7 authors, 2020-10-30

Re: [PATCH v2 08/12] ARM: dts: imx6dl-pico: fix board compatibles

From: Krzysztof Kozlowski <krzk@kernel.org>
Date: 2020-10-02 10:36:24
Also in: linux-devicetree, lkml

On Fri, Oct 02, 2020 at 10:41:19AM +0200, Marco Felsch wrote:
Hi,

sorry for jumping in.

On 20-10-02 10:20, Krzysztof Kozlowski wrote:
quoted
On Fri, Oct 02, 2020 at 09:41:28AM +0200, Ahmad Fatoum wrote:
quoted
Hello,

On 10/1/20 12:37 PM, Krzysztof Kozlowski wrote:
quoted
quoted
The existing binding doesn't cover these boards then and needs to be
extended, no? How about following patch?
What do you mean it doesn't cover? It was added exactly to handle them:
+              - technexion,imx6q-pico-dwarf   # TechNexion i.MX6Q Pico-Dwarf
+              - technexion,imx6q-pico-hobbit  # TechNexion i.MX6Q Pico-Hobbit
+              - technexion,imx6q-pico-nymph   # TechNexion i.MX6Q Pico-Nymph
+              - technexion,imx6q-pico-pi      # TechNexion i.MX6Q Pico-Pi
Still they are unused. So I'd think these boards should be handled like boards
that predated bindings: a binding is written that doesn't break existing users.
OK, let's assume the binding is not correct and DTSes are good.
quoted
quoted
quoted
[I guess we need to keep the two-compatible list they were originally
 in for compatibility even if it's unused among upstream device trees?]
You want to change both the binding (thus breaking the ABI) and update
the DTS to reflect new ABI. Then why having a binding at all?
If we leave the old two-compatible enumeration intact, there is no ABI broken.
Just to clarify, because I don't get here the "no ABI broken" part:
ABI is the binding, not the DTS. We can change intree DTS as we like,
replace compatibles, add nodes, remove nodes. There is no stability
requirement for DTS contents.

If we leave two-compatible binding intact, it is a broken binding since
beginning. Removing non-working, fake ABI is not breaking it because it
could never work.
The problem here is that it wasn't covered by the review and now we have
the mess. I see the DTB and the Bootloader as Firmware. Now imagine if
the bootloader for these boards had some dt-fixup logic which won't
apply anymore or if the bootloader board init won't get called anymore
since the bootloader folks used the compatible found in the DTS. This
can cause a regression if the old Bootloader tries to boot the new
Kernel+DTS.
Good points. It's nice to have a binding documented but it is more
likely that bootloader guys were depending on actual contents of DTS.
quoted
quoted
quoted
I would assume that either binding is correct or DTS. You propose that
both are wrong and both need changes... in such case this is clearly
broken.
IMO the DTS is the correct one. If you want to honor the author's intention
that each base board has a different compatible, it should be an extra
compatible and not replace the existing one that may be already in use.
Question is what was the author's intention? @Fabio do you have any
comments here?
quoted
OK, we can go with DTS approach. I fixed few of such cases as well,
assuming that DTS was intended and binding was incorrect. In such case
all boards will be documented under one compatible technexion,imx6q-pico
and DTS will not be changed.
Or keep the exisiting bindings and adding the new one. Therefore the
yaml needs to handle two cases for each imx6[qdl]:
  compatible = "technexion,imx6dl-pico-dwarf", "technexion,imx6dl-pico", "fsl,imx6dl";
and
  compatible = "technexion,imx6dl-pico", "fsl,imx6dl";
This is the combination I wanted to avoid because it kind of proofs that
both (binding and DTS) were incorrect or insufficient. If both are
incorrect, then there might be no point to keep it stable.

Few other i.MX boards use one compatible for multiple DTS. Usually it is
a module's compatible and boards just do not add their own.

Best regards,
Krzysztof


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help