Hi Yann, On Fri, 5 Oct 2012 14:09:50 +0200, Yann Vernier <yann.vern...@orsoc.se> wrote:
> Removed board specific MAC reading code from driver. > Should move the reading to the cm4008/cm41xx board code. > --- > drivers/net/ks8695eth.c | 38 +++++++++----------------------------- > 1 file changed, 9 insertions(+), 29 deletions(-) > > diff --git a/drivers/net/ks8695eth.c b/drivers/net/ks8695eth.c > index b4904b6..2dda7ab 100644 > --- a/drivers/net/ks8695eth.c > +++ b/drivers/net/ks8695eth.c > @@ -71,30 +71,13 @@ volatile uint8_t ks8695_bufs[BUFSIZE*(TXDESCS+RXDESCS)] > __attribute__((aligned(2 > > > /****************************************************************************/ > > -/* > - * Ideally we want to use the MAC address stored in flash. > - * But we do some sanity checks in case they are not present > - * first. > - */ > -unsigned char eth_mac[] = { > - 0x00, 0x13, 0xc6, 0x00, 0x00, 0x00 > -}; > - > -void ks8695_getmac(void) > +static int ks8695_set_mac_address(struct eth_device *dev) > { > - unsigned char *fp; > - int i; > - > - /* Check if flash MAC is valid */ > - fp = (unsigned char *) 0x0201c000; > - for (i = 0; (i < 6); i++) { > - if ((fp[i] != 0) && (fp[i] != 0xff)) > - break; > - } > - > - /* If we found a valid looking MAC address then use it */ > - if (i < 6) > - memcpy(ð_mac[0], fp, 6); > + /* Set MAC address */ > + ks8695_write(KS8695_LAN_MAC_LOW, (dev->enetaddr[5] | (dev->enetaddr[4] > << 8) | > + (dev->enetaddr[3] << 16) | (dev->enetaddr[2] << 24))); > + ks8695_write(KS8695_LAN_MAC_HIGH, (dev->enetaddr[1] | (dev->enetaddr[0] > << 8))); > + return 0; > } > > > /****************************************************************************/ > @@ -109,12 +92,8 @@ static int ks8695_eth_init(struct eth_device *dev, bd_t > *bd) > ks8695_write(KS8695_LAN_DMA_TX, 0x80000000); > ks8695_write(KS8695_LAN_DMA_RX, 0x80000000); > > - ks8695_getmac(); > - > /* Set MAC address */ > - ks8695_write(KS8695_LAN_MAC_LOW, (eth_mac[5] | (eth_mac[4] << 8) | > - (eth_mac[3] << 16) | (eth_mac[2] << 24))); > - ks8695_write(KS8695_LAN_MAC_HIGH, (eth_mac[1] | (eth_mac[0] << 8))); > + ks8695_set_mac_address(dev); > > /* Turn the 4 port switch on */ > i = ks8695_read(KS8695_SWITCH_CTRL0); > @@ -150,7 +129,7 @@ static int ks8695_eth_init(struct eth_device *dev, bd_t > *bd) > ks8695_write(KS8695_LAN_DMA_RX, 0x71); > ks8695_write(KS8695_LAN_DMA_RX_START, 0x1); > > - printf("KS8695 ETHERNET: %pM\n", eth_mac); > + printf("KS8695 ETHERNET: %pM\n", dev->enetaddr); > return 0; > } > > @@ -234,6 +213,7 @@ int ks8695_eth_initialize(void) > dev->halt = ks8695_eth_halt; > dev->send = ks8695_eth_send; > dev->recv = ks8695_eth_recv; > + dev->write_hwaddr = ks8695_set_mac_address; > strcpy(dev->name, "ks8695eth"); > > eth_register(dev); Cc:ing Joe as the network custodian for ack'ing the patch (although I'll take it along with the whole series). Amicalement, -- Albert. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot