diff options
| -rw-r--r-- | drivers/net/altera_tse.c | 63 | 
1 files changed, 35 insertions, 28 deletions
| diff --git a/drivers/net/altera_tse.c b/drivers/net/altera_tse.c index 59279049a..5c0c274ba 100644 --- a/drivers/net/altera_tse.c +++ b/drivers/net/altera_tse.c @@ -752,6 +752,40 @@ static int init_phy(struct eth_device *dev)  	return 1;  } +static int tse_set_mac_address(struct eth_device *dev) +{ +	struct altera_tse_priv *priv = dev->priv; +	volatile struct alt_tse_mac *mac_dev = priv->mac_dev; + +	debug("Setting MAC address to 0x%02x%02x%02x%02x%02x%02x\n", +	      dev->enetaddr[5], dev->enetaddr[4], +	      dev->enetaddr[3], dev->enetaddr[2], +	      dev->enetaddr[1], dev->enetaddr[0]); +	mac_dev->mac_addr_0 = ((dev->enetaddr[3]) << 24 | +			       (dev->enetaddr[2]) << 16 | +			       (dev->enetaddr[1]) << 8 | (dev->enetaddr[0])); + +	mac_dev->mac_addr_1 = ((dev->enetaddr[5] << 8 | +				(dev->enetaddr[4])) & 0xFFFF); + +	/* Set the MAC address */ +	mac_dev->supp_mac_addr_0_0 = mac_dev->mac_addr_0; +	mac_dev->supp_mac_addr_0_1 = mac_dev->mac_addr_1; + +	/* Set the MAC address */ +	mac_dev->supp_mac_addr_1_0 = mac_dev->mac_addr_0; +	mac_dev->supp_mac_addr_1_1 = mac_dev->mac_addr_1; + +	/* Set the MAC address */ +	mac_dev->supp_mac_addr_2_0 = mac_dev->mac_addr_0; +	mac_dev->supp_mac_addr_2_1 = mac_dev->mac_addr_1; + +	/* Set the MAC address */ +	mac_dev->supp_mac_addr_3_0 = mac_dev->mac_addr_0; +	mac_dev->supp_mac_addr_3_1 = mac_dev->mac_addr_1; +	return 0; +} +  static int tse_eth_init(struct eth_device *dev, bd_t * bd)  {  	int dat; @@ -829,34 +863,6 @@ static int tse_eth_init(struct eth_device *dev, bd_t * bd)  	mac_dev->command_config.image = dat; -	/* Set the MAC address */ -	debug("Setting MAC address to 0x%x%x%x%x%x%x\n", -	      dev->enetaddr[5], dev->enetaddr[4], -	      dev->enetaddr[3], dev->enetaddr[2], -	      dev->enetaddr[1], dev->enetaddr[0]); -	mac_dev->mac_addr_0 = ((dev->enetaddr[3]) << 24 | -			       (dev->enetaddr[2]) << 16 | -			       (dev->enetaddr[1]) << 8 | (dev->enetaddr[0])); - -	mac_dev->mac_addr_1 = ((dev->enetaddr[5] << 8 | -				(dev->enetaddr[4])) & 0xFFFF); - -	/* Set the MAC address */ -	mac_dev->supp_mac_addr_0_0 = mac_dev->mac_addr_0; -	mac_dev->supp_mac_addr_0_1 = mac_dev->mac_addr_1; - -	/* Set the MAC address */ -	mac_dev->supp_mac_addr_1_0 = mac_dev->mac_addr_0; -	mac_dev->supp_mac_addr_1_1 = mac_dev->mac_addr_1; - -	/* Set the MAC address */ -	mac_dev->supp_mac_addr_2_0 = mac_dev->mac_addr_0; -	mac_dev->supp_mac_addr_2_1 = mac_dev->mac_addr_1; - -	/* Set the MAC address */ -	mac_dev->supp_mac_addr_3_0 = mac_dev->mac_addr_0; -	mac_dev->supp_mac_addr_3_1 = mac_dev->mac_addr_1; -  	/* configure the TSE core  */  	/*  -- output clocks,  */  	/*  -- and later config stuff for SGMII */ @@ -920,6 +926,7 @@ int altera_tse_initialize(u8 dev_num, int mac_base,  	dev->halt = tse_eth_halt;  	dev->send = tse_eth_send;  	dev->recv = tse_eth_rx; +	dev->write_hwaddr = tse_set_mac_address;  	sprintf(dev->name, "%s-%hu", "ALTERA_TSE", dev_num);  	eth_register(dev); |