On Tuesday, March 01, 2011 03:46:16 Michal Simek wrote: > 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.
i think you unduly credit me with more experience than i actually have > 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. i dont think this is weird ... usually the MAC address is simply memory mapped storage, so the state of the EMAC controller itself doesnt matter. you can peek/poke the contents of that MAC address storage at any time. but i dont know what weirdness your controller has in place to make this not work too. -mike
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot