Hi Rasmus,

On 8/25/25 00:50, Rasmus Villemoes wrote:
> On Sun, Aug 24 2025, E Shattow <e...@freeshell.de> wrote:
> 
>> Add ${CONFIG_SYS_CONFIG_NAME}-u-boot.dtsi into dtsi include search order:
>> dtsi location, SYS_SOC, SYS_CPU, SYS_VENDOR, (SYS_CONFIG_NAME), no prefix
>>
> 
> I tried that, with CONFIG_SYS_BOARD, but for my use case I wanted it to
> have higher priority than something "just" matching SOC or CPU.
> 
>   
> https://lore.kernel.org/u-boot/20230317102639.464263-1-rasmus.villem...@prevas.dk/
> 
> Can you explain what board(s) you are going to use this for? Because
> this having lower priority than SOC, CPU, VENDOR seems wrong, and if
> there already is some soc-dtsi file for you board, this won't have any
> effect for you.
> 
> The problem with my patch was that we build a lot of completely
> unnecessary .dtb files, and the build of those unneeded dtb files break
> if/when the .config we're building causes an unrelated .dtsi file to be
> included (most often because it refers to nodes that do not exist). I've
> suggested several times that we just nuke most of that dts/Makefile
> because it's really not useful, it still contains typos, and nobody
> notices because we nowadays have build logic to automatically build all
> the .dtbs that are actually relevant to the .config we're building.
> 
> Rasmus

The starfive_visionfive2_defconfig target supports a variety of variant
boards from several vendors and models (and even a range of SoM's)
having the StarFive Jh7110 CPU;  when before adoption of OF_UPSTREAM we
go from having:

arch/riscv/dts/jh7110-milkv-mars.dts
arch/riscv/dts/jh7110-pine64-star64.dts
arch/riscv/dts/jh7110-starfive-visionfive-2-v1.2a.dts
arch/riscv/dts/jh7110-starfive-visionfive-2-v1.3b.dts
arch/riscv/dts/jh7110-common.dts
arch/riscv/dts/jh7110.dts

(and my memory of this is not quite accurate I think there was a
jh7110-visionfive2.dts or something ... )

each some confusing not-quite-upstream-Linux mish-mash of copy-and-paste
from the respective vendor U-Boot firmware from several years in the
past; More confusingly the U-Boot target to build this is named
'starfive_visionfive2_defconfig' which has no visual relation to
'jh7110'-named things...

and then to after sending everything upstream to Linux kernel and
adoption of OF_UPSTREAM having:

arch/riscv/dts/jh7110-deepcomputing-fml13v01-u-boot.dtsi
arch/riscv/dts/jh7110-milkv-mars-u-boot.dtsi
arch/riscv/dts/jh7110-pine64-star64-u-boot.dtsi
arch/riscv/dts/jh7110-starfive-visionfive-2-v1.2a-u-boot.dtsi
arch/riscv/dts/jh7110-starfive-visionfive-2-v1.3b-u-boot.dtsi
arch/riscv/dts/jh7110-common-u-boot.dtsi
arch/riscv/dts/jh7110-u-boot.dtsi
arch/riscv/dts/starfive-visionfive2-binman.dtsi
arch/riscv/dts/binman.dtsi

each simply having an '#include "jh7110-common-u-boot.dtsi"' for the
common stuff that hasn't quite made it upstream yet and also '#include
"starfive-visionfive2-binman.dtsi"' for the binman specific ops that
stuff a copy of that particular variant devicetree into the final output
so that they can be selected at runtime from a heuristic against the
EEPROM content...

anyhow all that is to say I would like this to reduce further:

arch/riscv/dts/starfive-visionfive2-u-boot.dtsi
arch/riscv/dts/starfive-visionfive2-binman.dtsi
arch/riscv/dts/binman.dtsi

and removes any need for file clutter when we are already naming the
devicetree-rebasing dts target as part of CONFIG_OF_LIST.

my view is that for multi-variant U-Boot targets the defconfig name
should match the dtsi override names so they're easy to search for,
simple as that.

When the U-Boot target is OF_UPSTREAM then CONFIG_OF_LIST contains the
list of board dts target names.

I don't want to push this unnecessarily on any other user in U-Boot, and
I think it's actually appropriate that it only takes precedence over
'u-boot.dtsi'.

I look at those as the old way, and then introducing some new way should
be rather optional; if you want to take advantage of it then clearing
out the SOC, CPU, or VENDOR dtsi that take precedence is necessary.

For your suggestion of adding BOARD, it is more complicated. There is
more restriction on naming a board because it can't be something totally
different than what it is, that would not make sense. But we have
"coreboot_defconfig" for example what is that? it is not a board. It is
however a U-Boot board target. So yes things are a bit strange trying to
go back and add a new class of automatic dtsi include in the search order.

I think OF_UPSTREAM and CONFIG_OF_LIST with an automatic dtsi include of
the defconfig name go a long way to what you might want?

I do have to test this more to be sure it is working like I imagine it
should be, also.

-E Shattow

Reply via email to