
Jerry Van Baren wrote:
Wolfgang Grandegger wrote:
Hi Jerry,
I gave the fdtlib of your git://cideas.us/pub/scm/u-boot/u-boot-fdt.git a try on my Icecube board. I got it built with the attached patch. libfdt was actually not made and the second hunk fixes a warning (=bug?). Then I was able to read and list a blob in memory:
=> fdt addr 20000 => fdt print / ...
A few other things didn't work, especially updating the FDT:
=> fdt addr 20000 10000 libfdt: FDT_ERR_BADVERSION
=> fdt env libfdt: FDT_ERR_BADVERSION => fdt bd_t libfdt: FDT_ERR_BADVERSION => fdt chosen libfdt: FDT_ERR_BADVERSION
=> fdt set /memory reg "<00000000 08000000>" Usage: fdt - flattened device tree utility commands
And "fdt mknode" seems not to be implemented.
Am I doing something wrong?
Wolfgang.
Hi Wolfgang,
Ouch, that was a bad bug and very embarrassing. Just when you think you are perfect, a stupid pointer error jumps up and bits you. :-( I'll apply your patch. Thanks & sorry.
Well, nobody is ...
The bad version error is because you are running a version 16 blob and you need a version 17 blob to allow modifications. David Gibson has an intention of upconverting a v16 to v17 as part of libfdt, but neither of us has gotten around to doing it yet.
OK, I can now update the FDT, apart from "mknode", but have still problems booting Linux-2.6.21-rc7. Should it already work?
If you pick up the latest dtc, it compiles v17 by default now. The latest dtc also implements a -S <minsize> parameter so you can make extra space in the blob and not need to specify the length parameter with the "fdt addr" command (the length parameter for addr makes the blob longer - unnecessary with -S blobs). If you really want to be at the bleeding edge, you can apply this patch as well, but it is *not* necessary (the patch pads out the blob rather than leaving the extra space undefined): http://article.gmane.org/gmane.linux.ports.ppc64.devel/18741
See also: http://www.denx.de/wiki/UBoot/UBootFdtInfo (linked off the Custodian page).
Ah, I was not yet aware of that link. It's very useful, indeed.
On a related note, you will probably want a fdt_find_compatible_node() function added to libfdt. I looked at the kernel one and it looks like it would be pretty simple to adapt it to libfdt, but I have not gotten to it yet.
http://www.denx.de/wiki/view/UBoot/UBootFdtInfo#ToDo_libfdt 2. fdt_find_compatible_node() Ref: arch/powerpc/kernel/prom.c * Needed if we use fdt blobs to configure u-boot drivers
OK.
Thanks.
Wolfgang.