Thread (9 messages) flat view 9 messages, 3 authors, 2022-09-05

Re: [PATCH v1] arm64: dts: fsl: ls1028a-rdb: Add dts file to choose swp5 as dsa master

From: Vladimir Oltean <vladimir.oltean@nxp.com>
Date: 2022-09-05 20:52:38
Also in: linux-arm-kernel, linux-devicetree, lkml

On Tue, Aug 17, 2021 at 02:59:07AM +0000, Hongbo Wang wrote:
quoted
On Mon, Aug 16, 2021 at 06:03:52AM +0000, Hongbo Wang wrote:
quoted
quoted
I was going to suggest as an alternative to define a device tree
overlay file with the changes in the CPU port assignment, instead of
defining a wholly new DTS for the LS1028A reference design board.
But I am pretty sure that it is not possible to specify a
/delete-property/ inside a device tree overlay file, so that won't actually work.
hi Vladimir,

  if don't specify "/delete-property/" in this dts file, the
corresponding dtb will not work well, so I add it to delete 'ethernet' property
from mscc_felix_port4 explicitly.
Judging by the reply, I am not actually sure you've understood what has been
said.

I said:

There is an option to create a device tree overlay:

https://www.kernel.org/doc/html/latest/devicetree/overlay-notes.html

We use these for the riser cards on the LS1028A-QDS boards.

https://source.codeaurora.org/external/qoriq/qoriq-components/linux/tree/ar
ch/arm64/boot/dts/freescale/fsl-ls1028a-qds-13bb.dts?h=LSDK-20.12-V5.4

They are included as usual in a U-Boot ITB file:

/ {
      images {
              /* Base DTB */
              ls1028aqds-dtb {
                      description = "ls1028aqds-dtb";
                      data = /incbin/("arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dtb");
                      type = "flat_dt";
                      arch = "arm64";
                      os = "linux";
                      compression = "none";
                      load = <0x90000000>;
                      hash@1 {
                              algo = "crc32";
                      };
              };
              /* Overlay */
              fdt@ls1028aqds-13bb {
                      description = "ls1028aqds-13bb";
                      data = /incbin/("arch/arm64/boot/dts/freescale/fsl-ls1028a-qds-13bb.dtb");
                      type = "flat_dt";
                      arch = "arm64";
                      load = <0x90010000>;
              };
      };
};

In U-Boot, you apply the overlay as following:

tftp $kernel_addr_r boot.itb && bootm
$kernel_addr_r#ls1028aqds#ls1028aqds-13bb

It would have been nice to have a similar device tree overlay that changes the
DSA master from eno2 to eno3, and for that overlay to be able to be applied
(or not) from U-Boot.

But it's _not_ possible, because you cannot put the /delete-property/ (that you
need to have) in the .dtbo file. Or if you put it, it will not delete the property
from the base dtb.

That's all I said.
thanks for the detailed explanation,
I have got your point.

thanks,
hongbo
I'm replying to a very old topic here, but I don't think this made too
much progress (NXP still carries a downstream fsl-ls1028a-rdb-dsa-swp5-eno3.dts,
for a use case which is valid: using one of the 2 internal Ethernet
ports between the switch and the SoC as a plain data port, rather than a
CPU port).

I've found what I think is a satisfactory solution for myself. Rather
than carrying an entirely new device tree just to move around the DSA
master from &enetc_port2 to &enetc_port3, I'm building upon the changes
for multiple CPU ports which Shawn has accepted now.
https://lore.kernel.org/linux-arm-kernel/20220831160124.914453-1-olteanv@gmail.com/ (local)

With that patch set, what Hongbo tried to add here simply becomes:

&mscc_felix_port4 {
	/delete-property/ ethernet;
};

I've already expressed discontent with the fact that it isn't possible
to move just this action to a device tree overlay and apply it to
whatever LS1028A based board, not just the RDB. However, I found that it
is possible to do this instead, just from within the U-Boot shell:

fdt addr $fdt_addr_r
fdt rm /soc/pcie@1f0000000/ethernet-switch@0,5/ports/port@4 ethernet
...
bootm $kernel_addr_r - $fdt_addr_r

which is even more convenient, because this way, the board device trees
now don't even need to be compiled with the dtc "-@" option (to include
the __symbols__ node required for dtb overlays).

It's likely that some of the people copied here do fancier tricks with
dynamic editing of the FDT already, on a day by day basis. In that case,
what can I say, have a good rest of the day ;)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help