[U-Boot] [PATCH 1/3] smsc95xx: Fix MAC address programming

Marek Vasut marek.vasut at gmail.com
Fri Nov 11 12:04:24 CET 2011


> Commit 79ad54400932d6484178a372fb3b659e3437473b broke the MAC
> address programming. Fix this by using the method from Linux'
> smsc95xx_set_mac_address().
> 
> Signed-off-by: Wolfgang Grandegger <wg at denx.de>
> Cc: Marek Vasut <marek.vasut at gmail.com>
> Cc: Simon Glass <sjg at chromium.org>
> ---
>  drivers/usb/eth/smsc95xx.c |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/usb/eth/smsc95xx.c b/drivers/usb/eth/smsc95xx.c
> index 7ee4f87..eb529f1 100644
> --- a/drivers/usb/eth/smsc95xx.c
> +++ b/drivers/usb/eth/smsc95xx.c
> @@ -372,13 +372,14 @@ static int smsc95xx_init_mac_address(struct
> eth_device *eth, static int smsc95xx_write_hwaddr(struct eth_device *eth)
>  {
>  	struct ueth_data *dev = (struct ueth_data *)eth->priv;
> -	u32 addr_lo, addr_hi;
> +	u32 addr_lo = eth->enetaddr[0] | eth->enetaddr[1] << 8 |
> +		eth->enetaddr[2] << 16 | eth->enetaddr[3] << 24;
> +	u32 addr_hi = eth->enetaddr[4] | eth->enetaddr[5] << 8;
>  	int ret;
> 
>  	/* set hardware address */
>  	debug("** %s()\n", __func__);
> -	addr_lo = cpu_to_le32(*eth->enetaddr);
> -	addr_hi = cpu_to_le16(*((u16 *)(eth->enetaddr + 4)));
> +
>  	ret = smsc95xx_write_reg(dev, ADDRL, addr_lo);
>  	if (ret < 0) {
>  		debug("Failed to write ADDRL: %d\n", ret);

Hey,

didn't Mike Frysinger send similar patch yesterday? Also, do you have the 
hardware? If so, that's good, we know you can provide tested fix.

Mike, are you good with using this fix instead or can you two negotiate?

M


More information about the U-Boot mailing list