net: sunxi-emac: Write HW address via function
Currently the mac address is programmed directly in _sunxi_emac_eth_init making it a one time inflexible operation. By moving it into a separate function, we can now use this more flexibly. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
		
							parent
							
								
									5cf618ee60
								
							
						
					
					
						commit
						ace1520cb5
					
				|  | @ -327,6 +327,20 @@ static void emac_reset(struct emac_eth_dev *priv) | |||
| 	udelay(200); | ||||
| } | ||||
| 
 | ||||
| static int _sunxi_write_hwaddr(struct emac_eth_dev *priv, u8 *enetaddr) | ||||
| { | ||||
| 	struct emac_regs *regs = priv->regs; | ||||
| 	u32 enetaddr_lo, enetaddr_hi; | ||||
| 
 | ||||
| 	enetaddr_lo = enetaddr[2] | (enetaddr[1] << 8) | (enetaddr[0] << 16); | ||||
| 	enetaddr_hi = enetaddr[5] | (enetaddr[4] << 8) | (enetaddr[3] << 16); | ||||
| 
 | ||||
| 	writel(enetaddr_hi, ®s->mac_a1); | ||||
| 	writel(enetaddr_lo, ®s->mac_a0); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static int _sunxi_emac_eth_init(struct emac_eth_dev *priv, u8 *enetaddr) | ||||
| { | ||||
| 	struct emac_regs *regs = priv->regs; | ||||
|  | @ -350,10 +364,7 @@ static int _sunxi_emac_eth_init(struct emac_eth_dev *priv, u8 *enetaddr) | |||
| 	/* Set up EMAC */ | ||||
| 	emac_setup(priv); | ||||
| 
 | ||||
| 	writel(enetaddr[0] << 16 | enetaddr[1] << 8 | enetaddr[2], | ||||
| 	       ®s->mac_a1); | ||||
| 	writel(enetaddr[3] << 16 | enetaddr[4] << 8 | enetaddr[5], | ||||
| 	       ®s->mac_a0); | ||||
| 	_sunxi_write_hwaddr(priv, enetaddr); | ||||
| 
 | ||||
| 	mdelay(1); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue