Message ID | 1324298293-14900-1-git-send-email-jason.hui@linaro.org |
---|---|
State | Accepted |
Commit | bd2e27c043ca8c4791b340e2377ddeda545330c4 |
Delegated to: | Stefano Babic |
Headers | show |
Stefano, 2011/12/19 Jason Liu <jason.hui@linaro.org>: > 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> > --- > arch/arm/cpu/armv7/mx6/soc.c | 14 ++++++++------ > arch/arm/include/asm/arch-mx6/imx-regs.h | 2 +- > 2 files changed, 9 insertions(+), 7 deletions(-) > > diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c > index dff5e4e..bd59cf5 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(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 > diff --git a/arch/arm/include/asm/arch-mx6/imx-regs.h b/arch/arm/include/asm/arch-mx6/imx-regs.h > index 85d55b7..5fe9748 100644 > --- a/arch/arm/include/asm/arch-mx6/imx-regs.h > +++ b/arch/arm/include/asm/arch-mx6/imx-regs.h > @@ -214,7 +214,7 @@ struct iim_regs { > u32 crc_value; > u32 rsvd6[3]; > u32 version; > - u32 rsvd7[0xd8]; > + u32 rsvd7[0xdb]; > > struct fuse_bank { > u32 fuse_regs[0x20]; Ping. Any comments? > -- > 1.7.4.1 > > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot
On 19/12/2011 13:38, Jason Liu wrote: > 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 Applied to u-boot-imx, thanks. Best regards, Stefano Babic
diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c index dff5e4e..bd59cf5 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(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 diff --git a/arch/arm/include/asm/arch-mx6/imx-regs.h b/arch/arm/include/asm/arch-mx6/imx-regs.h index 85d55b7..5fe9748 100644 --- a/arch/arm/include/asm/arch-mx6/imx-regs.h +++ b/arch/arm/include/asm/arch-mx6/imx-regs.h @@ -214,7 +214,7 @@ struct iim_regs { u32 crc_value; u32 rsvd6[3]; u32 version; - u32 rsvd7[0xd8]; + u32 rsvd7[0xdb]; struct fuse_bank { u32 fuse_regs[0x20];
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> --- arch/arm/cpu/armv7/mx6/soc.c | 14 ++++++++------ arch/arm/include/asm/arch-mx6/imx-regs.h | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-)