[U-Boot] [PATCH 01/27 v2] Blackfin: bfin_mac: force board_get_enetaddr() usage

Wolfgang Denk wd at denx.de
Thu Jan 29 21:41:31 CET 2009


Dear Mike Frysinger,

In message <200901291525.03553.vapier at gentoo.org> you wrote:
>
> so how exactly are $ethaddr in the env and bi_enetaddr in the global data 
> supposed to interact ?  this is a mess in the current tree and i dont see any 
> notes that indicate how things are supposed to be handled.  and i'd like to 
> make these changes once and get it right the first time ;).

Can't you just ask some simple and easy questions for a change? ;-)

> i see it as:
>  - common net code calls board_eth_init()
>  - board_eth_init() sets up ethaddr in env if it isnt set already
>  - board_eth_init() calls the driver init (bfin_EMAC_initialize() in my case)
>  - driver init looks up ethaddr in env and sets bi_enetaddr in global data
>  - all other code uses bi_enetaddr to get the MAC address

This doesn't work, as in the case that you don;t use any network
commands in U-Boot, board_eth_init() will not run and consequently you
don't know the MAC address so you cannot pass it to Linux either.

Rather:

	- misc_init_r() [or similar] sets up ethaddr in env if it isnt
	  set already and sets bi_enetaddr in global data
	- board_eth_init() calls the driver init
	  (bfin_EMAC_initialize() in your case)
	- driver init looks up ethaddr in env or bi_enetaddr

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
It's a small world, but I wouldn't want to paint it.


More information about the U-Boot mailing list