[U-Boot-Users] fdt chosen node handling
Jerry Van Baren
gerald.vanbaren at ge.com
Wed Dec 19 13:24:04 CET 2007
Stefan Roese wrote:
> I am wondering how the device tree "chosen" node should be handled, if it
> already exists in the device tree blob given to U-Boot. When this node
> doesn't exist it gets created and everything is fine. But if it already
> exists, it doesn't get overwritten and the defaults from the device tree blob
> most of the time are not what I really want.
> So I would like U-Boot to overwrite the existing chosen node. I discovered
> that the fdt_chosen() function already has this "force" parameter, but it is
> not set in the current U-Boot implementation. I would like to set it for my
> board ports and I am wondering how I should handle this. Should this be done
> via a compile switch (#define), or via an env variable, or...?
> Any ideas/comments on this?
> Best regards,
Disclaimer: I am not a OF expert, I have not read the OF documentation
cover to cover and do not understand many implications of what I've
read, much less what I have _not_ read.
1) I believe the /chosen node should be auto-created.
2) As you point out, if the /chosen node already exists the current code
bails out and doesn't change anything. This was done as a very badly
misguided attempt to make libfdt things work like bd_t things. The
granularity should be on the individual properties, not on /chosen. I
consider this a bug and have it on my "todo" list to fix (actually, I
had created a patch, but I need to rebase and publish it).
"Unpublished patch of JerryVanBaren, implementing a suggestion by Scott
Wood to make the /chosen handling finer grained: if the /chosen node
exists, currently u-boot-fdt bails out. A better methodology is to not
overwrite pre-existing properties on a per-property basis, so if /chosen
exists but a necessary /chosen/property doesn't, it gets created. Good
idea, but not published and poorly tested at the moment."
More information about the U-Boot