[U-Boot] [PATCH] net: axi_ethernet: Add driver to u-boot

Michal Simek
2011-03-01T08:46:16Z

Mike Frysinger wrote:
> On Tuesday, March 01, 2011 03:19:12 Michal Simek wrote:
>>>> +static void setup_mac(struct eth_device *dev)
>>>> +{
>>>> + /* Set the MAC address */
>>>> + int val = ((dev->enetaddr[3] << 24) | (dev->enetaddr[2] << 16) |
>>>> + (dev->enetaddr[1] << 8) | (dev->enetaddr[0]));
>>>> + out_be32(dev->iobase + XAE_UAW0_OFFSET, val);
>>>> +
>>>> + val = (dev->enetaddr[5] << 8) | dev->enetaddr[4] ;
>>>> + val |= in_be32(dev->iobase + XAE_UAW1_OFFSET)
>>>> + & ~XAE_UAW1_UNICASTADDR_MASK;
>>>> + out_be32(dev->iobase + XAE_UAW1_OFFSET, val);
>>>> +}
>>>> ...
>>>> +static int axiemac_init(struct eth_device *dev, bd_t * bis)
>>>> +{
>>>> ...
>>>> + setup_mac(dev);
>>> this should be moved to eth_device.write_hwaddr in the initialize
>>> function. then the common layers will call setup_mac for you as needed.
>> I am not going to use write_hwaddr function because axi emac needs some
>> initialization before you can write a mac addr that's why I will keep it
>> in the same location as is.
>
> please add explicit comments to the setup_mac() func then so someone else
> doesnt go changing things without taking this into consideration first

No problem to write it.

I have experience with several network IPs but I think less amount than you.
But anyway I think it is common that device must be in proper state to be able to setup mac for most
of them.
From my simple test I see that dev->write_hwaddr is called before dev->init which looks weird.

Michal

--
Michal Simek, Ing. (M.Eng)
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/
Microblaze U-BOOT custodian