diff mbox series

arm64: dts: ti: k3-am642-hummingboard-t: convert overlay to board dts

Message ID 20241101-am64-hb-fix-overlay-v1-1-080b98b057b6@solid-run.com (mailing list archive)
State New
Headers show
Series arm64: dts: ti: k3-am642-hummingboard-t: convert overlay to board dts | expand

Commit Message

Josua Mayer Nov. 1, 2024, 1:16 p.m. UTC
SolidRun HummingBoard-T has two options for M.2 connector, supporting
either PCI-E or USB-3.1 Gen 1 - depending on configuration of a mux
on the serdes lane.
The required configurations in device-tree were modeled as overlays.

The USB-3.1 overlay uses /delete-property/ to unset a boolean property
on the usb controller limiting it to USB-2.0 by default.
Overlays can not delete a property from the base dtb, therefore this
overlay is at this time useless.

Convert both overlays into full dts by including the base board dts.
While the pcie overlay was functional, both are converted for a
consistent user experience when selecting between the two mutually
exclusive configurations.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Closes: https://lore.kernel.org/linux-devicetree/CAMuHMdXTgpTnJ9U7egC2XjFXXNZ5uiY1O+WxNd6LPJW5Rs5KTw@mail.gmail.com
Fixes: bbef42084cc1 ("arm64: dts: ti: hummingboard-t: add overlays for m.2 pci-e and usb-3")
Signed-off-by: Josua Mayer <josua@solid-run.com>
---
 arch/arm64/boot/dts/ti/Makefile                            |  4 ----
 ...gboard-t-pcie.dtso => k3-am642-hummingboard-t-pcie.dts} | 14 ++++++++------
 ...gboard-t-usb3.dtso => k3-am642-hummingboard-t-usb3.dts} | 13 ++++++++-----
 3 files changed, 16 insertions(+), 15 deletions(-)


---
base-commit: 9852d85ec9d492ebef56dc5f229416c925758edc
change-id: 20241101-am64-hb-fix-overlay-5c3074974008

Best regards,

Comments

Josua Mayer Nov. 12, 2024, 5:05 a.m. UTC | #1
Am 01.11.24 um 15:16 schrieb Josua Mayer:
> SolidRun HummingBoard-T has two options for M.2 connector, supporting
> either PCI-E or USB-3.1 Gen 1 - depending on configuration of a mux
> on the serdes lane.
> The required configurations in device-tree were modeled as overlays.
>
> The USB-3.1 overlay uses /delete-property/ to unset a boolean property
> on the usb controller limiting it to USB-2.0 by default.
> Overlays can not delete a property from the base dtb, therefore this
> overlay is at this time useless.
>
> Convert both overlays into full dts by including the base board dts.
> While the pcie overlay was functional, both are converted for a
> consistent user experience when selecting between the two mutually
> exclusive configurations.
>
> Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
> Closes: https://lore.kernel.org/linux-devicetree/CAMuHMdXTgpTnJ9U7egC2XjFXXNZ5uiY1O+WxNd6LPJW5Rs5KTw@mail.gmail.com
> Fixes: bbef42084cc1 ("arm64: dts: ti: hummingboard-t: add overlays for m.2 pci-e and usb-3")
> Signed-off-by: Josua Mayer <josua@solid-run.com>
> ---
>   arch/arm64/boot/dts/ti/Makefile                            |  4 ----
>   ...gboard-t-pcie.dtso => k3-am642-hummingboard-t-pcie.dts} | 14 ++++++++------
>   ...gboard-t-usb3.dtso => k3-am642-hummingboard-t-usb3.dts} | 13 ++++++++-----
>   3 files changed, 16 insertions(+), 15 deletions(-)
>
Please hold off on this patch for the moment,
Thanks to some comments from Geert I wish to submit an alternative
solution via separate patch-set, for further discussion.
Geert Uytterhoeven Nov. 12, 2024, 8:21 a.m. UTC | #2
Hi Josua,

On Tue, Nov 12, 2024 at 6:05 AM Josua Mayer <josua@solid-run.com> wrote:
> Am 01.11.24 um 15:16 schrieb Josua Mayer:
> > SolidRun HummingBoard-T has two options for M.2 connector, supporting
> > either PCI-E or USB-3.1 Gen 1 - depending on configuration of a mux
> > on the serdes lane.
> > The required configurations in device-tree were modeled as overlays.
> >
> > The USB-3.1 overlay uses /delete-property/ to unset a boolean property
> > on the usb controller limiting it to USB-2.0 by default.
> > Overlays can not delete a property from the base dtb, therefore this
> > overlay is at this time useless.
> >
> > Convert both overlays into full dts by including the base board dts.
> > While the pcie overlay was functional, both are converted for a
> > consistent user experience when selecting between the two mutually
> > exclusive configurations.
> >
> > Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
> > Closes: https://lore.kernel.org/linux-devicetree/CAMuHMdXTgpTnJ9U7egC2XjFXXNZ5uiY1O+WxNd6LPJW5Rs5KTw@mail.gmail.com
> > Fixes: bbef42084cc1 ("arm64: dts: ti: hummingboard-t: add overlays for m.2 pci-e and usb-3")
> > Signed-off-by: Josua Mayer <josua@solid-run.com>
> > ---
> >   arch/arm64/boot/dts/ti/Makefile                            |  4 ----
> >   ...gboard-t-pcie.dtso => k3-am642-hummingboard-t-pcie.dts} | 14 ++++++++------
> >   ...gboard-t-usb3.dtso => k3-am642-hummingboard-t-usb3.dts} | 13 ++++++++-----
> >   3 files changed, 16 insertions(+), 15 deletions(-)
> >
> Please hold off on this patch for the moment,
> Thanks to some comments from Geert I wish to submit an alternative
> solution via separate patch-set, for further discussion.

As you state in the other patch set  "I do not consider it ready for
current merge window",  it may be worthwhile to not hold off?
It can always be reverted whenif the alternative solution is accepted.

Gr{oetje,eeting}s,

                        Geert
Josua Mayer Nov. 13, 2024, 8:32 a.m. UTC | #3
Am 12.11.24 um 10:21 schrieb Geert Uytterhoeven:
> Hi Josua,
>
> On Tue, Nov 12, 2024 at 6:05 AM Josua Mayer <josua@solid-run.com> wrote:
>> Am 01.11.24 um 15:16 schrieb Josua Mayer:
>>> SolidRun HummingBoard-T has two options for M.2 connector, supporting
>>> either PCI-E or USB-3.1 Gen 1 - depending on configuration of a mux
>>> on the serdes lane.
>>> The required configurations in device-tree were modeled as overlays.
>>>
>>> The USB-3.1 overlay uses /delete-property/ to unset a boolean property
>>> on the usb controller limiting it to USB-2.0 by default.
>>> Overlays can not delete a property from the base dtb, therefore this
>>> overlay is at this time useless.
>>>
>>> Convert both overlays into full dts by including the base board dts.
>>> While the pcie overlay was functional, both are converted for a
>>> consistent user experience when selecting between the two mutually
>>> exclusive configurations.
>>>
>>> Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
>>> Closes: https://lore.kernel.org/linux-devicetree/CAMuHMdXTgpTnJ9U7egC2XjFXXNZ5uiY1O+WxNd6LPJW5Rs5KTw@mail.gmail.com
>>> Fixes: bbef42084cc1 ("arm64: dts: ti: hummingboard-t: add overlays for m.2 pci-e and usb-3")
>>> Signed-off-by: Josua Mayer <josua@solid-run.com>
>>> ---
>>>    arch/arm64/boot/dts/ti/Makefile                            |  4 ----
>>>    ...gboard-t-pcie.dtso => k3-am642-hummingboard-t-pcie.dts} | 14 ++++++++------
>>>    ...gboard-t-usb3.dtso => k3-am642-hummingboard-t-usb3.dts} | 13 ++++++++-----
>>>    3 files changed, 16 insertions(+), 15 deletions(-)
>>>
>> Please hold off on this patch for the moment,
>> Thanks to some comments from Geert I wish to submit an alternative
>> solution via separate patch-set, for further discussion.
> As you state in the other patch set  "I do not consider it ready for
> current merge window",  it may be worthwhile to not hold off?
> It can always be reverted whenif the alternative solution is accepted.
 From my side it is not a high priority to solve the usb3 function,
I am more worried for the difference in how a user(space) or bootloader will
select the correct file during boot.

Right now even though pcie and usb3 variants are overlays,
"make" generates standalone dtb for each.

Should distros expect to have a .dtb for each combination of overlays
on a particular board? E.g. imagine if there was also an overlay
reassigning ethernet port, then we have 4 combinations.

Alternatively expectation can be that the bootloader collects overlays,
and applies them as needed before boot on top of a base dtb.

This is relevant e.g. as Debian uses the "model" property
to identify the correct dtb file and copy it to /boot.
I added "model" fields in this patch-set to allow differentiation.
But once the boolean issue will be fixed, and the change reverted,
A distro may have already chosen the usb3 or pcie variants as base dtb

I would prefer to hold off on this patch-set until other options have been
explored fully.

.

sincerely
Josua Mayer
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
index bcd392c3206e50a0b4082118fd13c3a7a0c1d291..562e6d57bc9919393920afe684a61a8ab58dcc21 100644
--- a/arch/arm64/boot/dts/ti/Makefile
+++ b/arch/arm64/boot/dts/ti/Makefile
@@ -41,10 +41,6 @@  dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-csi2-imx219.dtbo
 dtb-$(CONFIG_ARCH_K3) += k3-am62x-sk-hdmi-audio.dtbo
 
 # Boards with AM64x SoC
-k3-am642-hummingboard-t-pcie-dtbs := \
-	k3-am642-hummingboard-t.dtb k3-am642-hummingboard-t-pcie.dtbo
-k3-am642-hummingboard-t-usb3-dtbs := \
-	k3-am642-hummingboard-t.dtb k3-am642-hummingboard-t-usb3.dtbo
 dtb-$(CONFIG_ARCH_K3) += k3-am642-evm.dtb
 dtb-$(CONFIG_ARCH_K3) += k3-am642-evm-icssg1-dualemac.dtbo
 dtb-$(CONFIG_ARCH_K3) += k3-am642-evm-icssg1-dualemac-mii.dtbo
diff --git a/arch/arm64/boot/dts/ti/k3-am642-hummingboard-t-pcie.dtso b/arch/arm64/boot/dts/ti/k3-am642-hummingboard-t-pcie.dts
similarity index 78%
rename from arch/arm64/boot/dts/ti/k3-am642-hummingboard-t-pcie.dtso
rename to arch/arm64/boot/dts/ti/k3-am642-hummingboard-t-pcie.dts
index bd9a5caf20da5b7f11266575f69f0f5dcc1a47ae..023b2a6aaa56689f712a6c1ede6ba427d746fe34 100644
--- a/arch/arm64/boot/dts/ti/k3-am642-hummingboard-t-pcie.dtso
+++ b/arch/arm64/boot/dts/ti/k3-am642-hummingboard-t-pcie.dts
@@ -2,17 +2,19 @@ 
 /*
  * Copyright (C) 2023 Josua Mayer <josua@solid-run.com>
  *
- * Overlay for SolidRun AM642 HummingBoard-T to enable PCI-E.
+ * DTS for SolidRun AM642 HummingBoard-T,
+ * running on Cortex A53, with PCI-E.
+ *
  */
 
-/dts-v1/;
-/plugin/;
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/phy/phy.h>
+#include "k3-am642-hummingboard-t.dts"
 
 #include "k3-serdes.h"
 
+/ {
+	model = "SolidRun AM642 HummingBoard-T with PCI-E";
+};
+
 &pcie0_rc {
 	pinctrl-names = "default";
 	pinctrl-0 = <&pcie0_default_pins>;
diff --git a/arch/arm64/boot/dts/ti/k3-am642-hummingboard-t-usb3.dtso b/arch/arm64/boot/dts/ti/k3-am642-hummingboard-t-usb3.dts
similarity index 74%
rename from arch/arm64/boot/dts/ti/k3-am642-hummingboard-t-usb3.dtso
rename to arch/arm64/boot/dts/ti/k3-am642-hummingboard-t-usb3.dts
index ffcc3bd3c7bc5d47ce9926a95a13af3f61182a2b..ee9bd618f3701047be4ac7502cb70e7d3589ff5d 100644
--- a/arch/arm64/boot/dts/ti/k3-am642-hummingboard-t-usb3.dtso
+++ b/arch/arm64/boot/dts/ti/k3-am642-hummingboard-t-usb3.dts
@@ -2,16 +2,19 @@ 
 /*
  * Copyright (C) 2023 Josua Mayer <josua@solid-run.com>
  *
- * Overlay for SolidRun AM642 HummingBoard-T to enable USB-3.1.
+ * DTS for SolidRun AM642 HummingBoard-T,
+ * running on Cortex A53, with USB-3.1 Gen 1.
+ *
  */
 
-/dts-v1/;
-/plugin/;
-
-#include <dt-bindings/phy/phy.h>
+#include "k3-am642-hummingboard-t.dts"
 
 #include "k3-serdes.h"
 
+/ {
+	model = "SolidRun AM642 HummingBoard-T with USB-3.1 Gen 1";
+};
+
 &serdes0 {
 	#address-cells = <1>;
 	#size-cells = <0>;