
Heiko Schocher wrote:
Hello Ben
Ben Warren wrote:
Heiko Schocher wrote:
Check the presence of the PIGGY on the keymile boards mgcoge, mgsuvd and kmeter1. If the PIGGY is not present, dont register this Ethernet device.
Signed-off-by: Heiko Schocher hs@denx.de
This looks like useful stuff to have, but I'd prefer that you put the check logic in board_eth_init() rather than adding to the individual device drivers. I know the 8260 SCC driver is the older style, which precludes the use of board_eth_init, but I'll convert it if you're able to test.
Yes, I could test such a change for you, but hmm... I am not sure, if board_eth_init () is the right place for my purpose. I need for every Ethernet device a selection, if this device is present or not. Correct me if I am wrong, but it looks like board_eth_init () is not made for this purpose. (Ok, I can do a specific device init in board_eth_init (), but then we must do something, that prevents that the device is again initialized in eth_initialize () ...
board_eth_init() was introduced for exactly this sort of thing. Have a look at the net repo (I've sent a pull request to Wolfgang so the current changes will make it into the 12.2008 release). There aren't any device initializations left in eth_initialize(), so there's no issue of a device being initialized twice. The goal is for all devices to be started by cpu_eth_int() or board_eth_init().
Hmm... while writing this it comes a idea in my mind: we could move all the *_initialize functions in eth_initialize () in a seperate function, say eth_hardware_init() and maybe making this function "weak", so a board writer can write his own eth_hardware_init() ... in such a function, I could check which device is present, and only initialize the present devices ... what do you think?
That's what board_eth_init() and cpu_eth_init() are for. In addition, I forgot to mention that a couple of days ago Gary Jennejohn submitted a patch for changing the 82xx SCC driver over to CONFIG_NET_MULTI style.
regards, Ben