[U-Boot] [PATCH 1/2 v2] net, fec_mxc: only setup the device enetaddr with eeprom value, if ethaddr is not setup
Heiko Schocher
hs at denx.de
Wed Mar 31 07:56:38 CEST 2010
Hello Ben,
Ben Warren wrote:
> Wolfgang,
>
> On 3/30/2010 1:34 PM, Wolfgang Denk wrote:
>> Dear Heiko Schocher,
>>
>> In message<4BB238E9.7060609 at denx.de> you wrote:
>>
>>> if ethaddr is not setup in the environment, fill the device
>>> enetaddr with the contents of the eeprom, and only
>>> the device enetaddr, not the mac address registers!
>>>
>>> Tested on the magnesium board.
>>>
>>> Signed-off-by: Heiko Schocher<hs at denx.de>
>>> ---
>>> - changes since v1 posted here:
>>> http://lists.denx.de/pipermail/u-boot/2010-March/069192.html
>>>
>>> - splitted in two patches as Wolfgang suggested
>>>
>> Thanks. Note that it would also have been an excellent idea to put
>> the responsible custodian on Cc:
>>
>>
>>
>>> drivers/net/fec_mxc.c | 9 +++++----
>>> 1 files changed, 5 insertions(+), 4 deletions(-)
>>>
>> Applied, thanks.
>>
>>
>> Ben, this is (as far as I see it) an undisputed bug fix, so I'm
>> pulling this patch (and only this one from this series of 4)
>> directly. Hope this is ok with you.
>>
>>
>>
> Hold on a second. This patch is wrong. As Mike has pointed out, the
Now I got lost ... I think the "critical" part of my "patch v1" is splitted
out to "2/2 v2" ... or?
> net library already gets the MAC address from the environment. The
> correct flow is:
>
> 1. Read from hardware in initialize() function
Ah, Ok, so that is the right way? If so, then I should remove
"+ if (!eth_getenv_enetaddr("ethaddr", ethaddr)) {"
from my patch, and then it should be OK, right?
Actual fec_mxc.c driver is *not* correct, because if in eeprom
is a correct mac, it *always* programms this in the mac address
registers from the chip!
This is not OK, and must be fixed!
> 2. Read from environment in net/eth.c after initialize()
> 3. Give priority to the value in the environment if a conflict
> 4. Program hardware in the device's init() function.
>
> If somebody wants to subvert the 'design philosophy', the right way is
> to call eth_dev->init() in board code.
Maybe this list should go in a doc?
bye
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
More information about the U-Boot
mailing list