
On Wed, 2010-12-08 at 23:34 +0100, Wolfgang Denk wrote:
Dear Dan,
In message 0DDCBDA1-188F-433D-BDCC-5FDCF709A131@digitaldans.com you wrote:
If you want to make this switchable at runtime, then we should probably use an environment setting.
I experimented with this, but could never determine the best way to cover all behavior. Do we have a variable that indicates "don't update DT?" If so, it means we have to place all values in the DT, when it's really nice for U-Boot to do some of that for us. In fact, we want U-Boot to update many things it discovers, just not the few we wish to actually (sometimes) define for ourselves.
"You can please all the people some of the time and some of the people all of the time but you can't please all the people all of the time."
The other alternative (granted, I'm not as smart as I used to be :-)) was to have an environment variable that specified which node we didn't want updated by U-Boot. For now, that seems reasonable since there is only one, but is that the general approach we want in the future? It also presents the challenge of having to update both environment and the provided DT.
I guess we can argue that the normal situation is that U-Boot will know how to update the DT such as needed to boot the OS. So what we are dealing with is a small percentage of cases where we need special behaviour, and where it may be acceptable if the solution is only semi-perfect ;-)
My current thinking is to introduce something like
dt_skip=memory,mac-address
I haven't followed the this thread too closely, but I was curious if you could do manual tweaks by using the 'bootm' and 'fdt' sub-commands. This could allow more fine grained control of the boot process and let you manually modify the DTB before booting to Linux. Eg make the 'bootcmd' environment variable be something like: bootm start $loadaddr; \ bootm loados; \ bootm ramdisk; \ bootm fdt; \ fdt boardsetup; \ fdt set memory reg "<0 10000000>"; \ bootm prep; \ bootm go
Some dual core Freescale board's do somewhat similar operations for AMP operation (see doc/README.p2020rdb), although I haven't personally tried AMP.
Best, Peter