diff options
| author | Jason Liu <jason.hui@linaro.org> | 2011-12-19 02:38:13 +0000 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2012-01-16 08:40:09 +0100 | 
| commit | bd2e27c043ca8c4791b340e2377ddeda545330c4 (patch) | |
| tree | fc0622293804b980869adba07c48d1270d1f5b8a /arch/arm/cpu/armv7/mx6/soc.c | |
| parent | 29f75a5ce5800cf39d29e7669b27e6deb4038f28 (diff) | |
| download | olio-uboot-2014.01-bd2e27c043ca8c4791b340e2377ddeda545330c4.tar.xz olio-uboot-2014.01-bd2e27c043ca8c4791b340e2377ddeda545330c4.zip | |
i.mx6:imx6q: allign MAC address with burned-in ordering
For the i.mx6q, the burned-in MAC address will be the following odering,
fuse: 0x620[7:0]   MAC_ADDR[7:0]     ---> mac[5]
fuse: 0x620[15:8]  MAC_ADDR[15:8]    ---> mac[4]
fuse: 0x620[23:16] MAC_ADDR[23:16]   ---> mac[3]
fuse: 0x620[31:24] MAC_ADDR[31:24]   ---> mac[2]
fuse: 0x630[7:0]   MAC_ADDR[39:32]   ---> mac[1]
fuse: 0x630[15:8]  MAC_ADDR[47:40]   ---> mac[0]
This patch also fix the error caculation for the fuse bank[0] address
Signed-off-by: Jason Liu <jason.hui@linaro.org>
Cc: Stefano Babic <sbabic@denx.de>
Diffstat (limited to 'arch/arm/cpu/armv7/mx6/soc.c')
| -rw-r--r-- | arch/arm/cpu/armv7/mx6/soc.c | 14 | 
1 files changed, 8 insertions, 6 deletions
| diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c index 5a6f9e29d..60044bb5b 100644 --- a/arch/arm/cpu/armv7/mx6/soc.c +++ b/arch/arm/cpu/armv7/mx6/soc.c @@ -70,13 +70,15 @@ void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)  	struct fuse_bank4_regs *fuse =  			(struct fuse_bank4_regs *)bank->fuse_regs; -	u32 mac_lo = readl(&fuse->mac_addr_low); -	u32 mac_hi = readl(&fuse->mac_addr_high); +	u32 value = readl(&fuse->mac_addr_high); +	mac[0] = (value >> 8); +	mac[1] = value ; -	*(u32 *)mac = mac_lo; - -	mac[4] = mac_hi & 0xff; -	mac[5] = (mac_hi >> 8) & 0xff; +	value = readl(&fuse->mac_addr_low); +	mac[2] = value >> 24 ; +	mac[3] = value >> 16 ; +	mac[4] = value >> 8 ; +	mac[5] = value ;  }  #endif |