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(&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);

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

Reply via email to