
Hi Michal,
Michal Simek wrote:
<snip>
All of the above mentioned issues are ones that I could easily deal with, but one thing that really does need to change is that you need to use the CONFIG_NET_MULTI API. In other words, your driver should have a single initialize() function (prototyped in include/netdev.h), and an eth_device struct that gets registered. All your access functions (eth_init, eth_send, eth_recv etc.) will be static and pointed to by the eth_device struct. Most drivers are already this way.
I look at it and I did some change and the main problem is in Microblaze GCC. We use GCC 3.4.1 and CONFIG_NET_MULTI use weak function and board_eth_init is never called. We are working on GCC 4.1.2 but I don't know when I get it.
According to the documentation I could find, weak symbols were present in gcc 3.4.1. Are you sure you're using them properly? Due to the way linking is performed in U-boot, any weak symbol overrides need to be in source files that have strongly linked symbols. You'll see that all implementations of cpu_eth_init() and board_eth_init() are in files that already contain stuff that is sure to be linked.
I have two more Xilinx eth drivers in U-BOOT and I think that will be the best to do all changes together. What do you think?
Thanks, Michal
If you're really unable to make this change due to your tools, I'm not opposed to pulling this driver in. I just want to know that you intend to port all the Xilinx drivers over some time in the near future.
regards, Ben