Removed board specific MAC reading code from driver.
Should move the reading to the cm4008/cm41xx board code.

Signed-off-by: Yann Vernier <yann.vern...@orsoc.se>
---
 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(&eth_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);
-- 
1.7.10.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to