From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerry Van Baren Date: Wed, 19 Dec 2007 07:24:04 -0500 Subject: [U-Boot-Users] fdt chosen node handling In-Reply-To: <200712190859.54306.sr@denx.de> References: <200712190859.54306.sr@denx.de> Message-ID: <47690D64.2030704@ge.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Stefan Roese wrote: > Hi, > > 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? > > Thanks. > > Best regards, > Stefan Hi Stefan, 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." Best regards, gvb