
Dear Jerry Van Baren,
In message 48DBF7A9.3010905@ge.com you wrote:
Kumar solved this problem WRT cpu/mpc83xx/fdt.c fdt_fixup_ethernet(void *fdt) (and other CPUs) by using the device tree to find all the ethernets and configure them. http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/45554
But Kumar's code still loops over the "eth[N]addr" environment variables. And even though discouraged for normal use, there should be a way to define these for the (compiled-in) default environment where needed (devices using a real ROM).
Suggestion: Look at changing CONFIG_ETH*ADDR to CONFIG_ETH_FDT where that notation indicates the code should find the ethernet info in the fdt blob rather than #defines/env variables.
Please have a look at fdt_fixup_ethernet() in "common/fdt_support.c"; my reading of the code does not match your statements here.
Do we need eth[1-5]?addr env variables? I don't think so.
Yes, we do. That's what fdt_fixup_ethernet() uses to loop.
If we really do need them, they can be generated from the fdt blob a'la Kumar's loop.
Either you or I must be missing something.
Best regards,
Wolfgang Denk