Message ID | 1324395994-10786-2-git-send-email-festevam@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | Stefano Babic |
Headers | show |
> Let imx_get_mac_from_fuse function be a common function, so that other > mx28 boards can reuse it. > > Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> > --- > Changes since v6: > - Let mac[5] be set inside mx28_adjust_mac > Changes since v5: > - Allow the MAC vendor to be overriden > Changes since v4: > - No changes > Change since v3: > - Add a note about the first two MAC addresses being from Freescale vendor. > arch/arm/cpu/arm926ejs/mx28/mx28.c | 46 > ++++++++++++++++++++++++++++++++++++ board/denx/m28evk/m28evk.c | > 35 --------------------------- 2 files changed, 46 insertions(+), 35 > deletions(-) > > diff --git a/arch/arm/cpu/arm926ejs/mx28/mx28.c > b/arch/arm/cpu/arm926ejs/mx28/mx28.c index 088c019..ee4e337 100644 > --- a/arch/arm/cpu/arm926ejs/mx28/mx28.c > +++ b/arch/arm/cpu/arm926ejs/mx28/mx28.c > @@ -214,6 +214,52 @@ int cpu_eth_init(bd_t *bis) > } > #endif > > +static void __mx28_adjust_mac(int dev_id, char *mac) unsigned char * ... see the header file in your previous patch ;-) > +{ > + mac[0] = 0x00; > + mac[1] = 0x04; /* Use FSL vendor MAC address by default */ > + > + if (dev_id == 1) /* Let MAC1 be MAC0 + 1 by default */ > + mac[5] += 1; > +} > + > +void mx28_adjust_mac(int dev_id, char *mac) > + __attribute__((weak, alias("__mx28_adjust_mac"))); > + > +#ifdef CONFIG_MX28_FEC_MAC_IN_OCOTP > + > +#define MXS_OCOTP_MAX_TIMEOUT 1000000 > +void imx_get_mac_from_fuse(int dev_id, char *mac) DTTO > +{ > + struct mx28_ocotp_regs *ocotp_regs = > + (struct mx28_ocotp_regs *)MXS_OCOTP_BASE; > + uint32_t data; > + > + memset(mac, 0, 6); > + > + writel(OCOTP_CTRL_RD_BANK_OPEN, &ocotp_regs->hw_ocotp_ctrl_set); > + > + if (mx28_wait_mask_clr(&ocotp_regs->hw_ocotp_ctrl_reg, OCOTP_CTRL_BUSY, > + MXS_OCOTP_MAX_TIMEOUT)) { > + printf("MXS FEC: Can't get MAC from OCOTP\n"); > + return; > + } > + > + data = readl(&ocotp_regs->hw_ocotp_cust0); > + > + mac[2] = (data >> 24) & 0xff; > + mac[3] = (data >> 16) & 0xff; > + mac[4] = (data >> 8) & 0xff; > + mac[5] = data & 0xff; > + mx28_adjust_mac(dev_id, mac); > +} > +#else > +void imx_get_mac_from_fuse(int dev_id, char *mac) DTTO > +{ > + memset(mac, 0, 6); > +} > +#endif > + > U_BOOT_CMD( > clocks, CONFIG_SYS_MAXARGS, 1, do_mx28_showclocks, > "display clocks", > diff --git a/board/denx/m28evk/m28evk.c b/board/denx/m28evk/m28evk.c > index a0fabc0..005446a 100644 > --- a/board/denx/m28evk/m28evk.c > +++ b/board/denx/m28evk/m28evk.c > @@ -178,39 +178,4 @@ int board_eth_init(bd_t *bis) > return ret; > } > > -#ifdef CONFIG_M28_FEC_MAC_IN_OCOTP > - > -#define MXS_OCOTP_MAX_TIMEOUT 1000000 > -void imx_get_mac_from_fuse(int dev_id, char *mac) > -{ > - struct mx28_ocotp_regs *ocotp_regs = > - (struct mx28_ocotp_regs *)MXS_OCOTP_BASE; > - uint32_t data; > - > - memset(mac, 0, 6); > - > - writel(OCOTP_CTRL_RD_BANK_OPEN, &ocotp_regs->hw_ocotp_ctrl_set); > - > - if (mx28_wait_mask_clr(&ocotp_regs->hw_ocotp_ctrl_reg, OCOTP_CTRL_BUSY, > - MXS_OCOTP_MAX_TIMEOUT)) { > - printf("MXS FEC: Can't get MAC from OCOTP\n"); > - return; > - } > - > - data = readl(&ocotp_regs->hw_ocotp_cust0); > - > - mac[0] = 0x00; > - mac[1] = 0x04; > - mac[2] = (data >> 24) & 0xff; > - mac[3] = (data >> 16) & 0xff; > - mac[4] = (data >> 8) & 0xff; > - mac[5] = data & 0xff; > -} > -#else > -void imx_get_mac_from_fuse(int dev_id, char *mac) > -{ > - memset(mac, 0, 6); > -} > -#endif > - > #endif M
On 20/12/2011 16:46, Fabio Estevam wrote: > Let imx_get_mac_from_fuse function be a common function, so that other > mx28 boards can reuse it. > > Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> > --- Applied to u-boot-imx, thanks. Best regards, Stefano Babic
diff --git a/arch/arm/cpu/arm926ejs/mx28/mx28.c b/arch/arm/cpu/arm926ejs/mx28/mx28.c index 088c019..ee4e337 100644 --- a/arch/arm/cpu/arm926ejs/mx28/mx28.c +++ b/arch/arm/cpu/arm926ejs/mx28/mx28.c @@ -214,6 +214,52 @@ int cpu_eth_init(bd_t *bis) } #endif +static void __mx28_adjust_mac(int dev_id, char *mac) +{ + mac[0] = 0x00; + mac[1] = 0x04; /* Use FSL vendor MAC address by default */ + + if (dev_id == 1) /* Let MAC1 be MAC0 + 1 by default */ + mac[5] += 1; +} + +void mx28_adjust_mac(int dev_id, char *mac) + __attribute__((weak, alias("__mx28_adjust_mac"))); + +#ifdef CONFIG_MX28_FEC_MAC_IN_OCOTP + +#define MXS_OCOTP_MAX_TIMEOUT 1000000 +void imx_get_mac_from_fuse(int dev_id, char *mac) +{ + struct mx28_ocotp_regs *ocotp_regs = + (struct mx28_ocotp_regs *)MXS_OCOTP_BASE; + uint32_t data; + + memset(mac, 0, 6); + + writel(OCOTP_CTRL_RD_BANK_OPEN, &ocotp_regs->hw_ocotp_ctrl_set); + + if (mx28_wait_mask_clr(&ocotp_regs->hw_ocotp_ctrl_reg, OCOTP_CTRL_BUSY, + MXS_OCOTP_MAX_TIMEOUT)) { + printf("MXS FEC: Can't get MAC from OCOTP\n"); + return; + } + + data = readl(&ocotp_regs->hw_ocotp_cust0); + + mac[2] = (data >> 24) & 0xff; + mac[3] = (data >> 16) & 0xff; + mac[4] = (data >> 8) & 0xff; + mac[5] = data & 0xff; + mx28_adjust_mac(dev_id, mac); +} +#else +void imx_get_mac_from_fuse(int dev_id, char *mac) +{ + memset(mac, 0, 6); +} +#endif + U_BOOT_CMD( clocks, CONFIG_SYS_MAXARGS, 1, do_mx28_showclocks, "display clocks", diff --git a/board/denx/m28evk/m28evk.c b/board/denx/m28evk/m28evk.c index a0fabc0..005446a 100644 --- a/board/denx/m28evk/m28evk.c +++ b/board/denx/m28evk/m28evk.c @@ -178,39 +178,4 @@ int board_eth_init(bd_t *bis) return ret; } -#ifdef CONFIG_M28_FEC_MAC_IN_OCOTP - -#define MXS_OCOTP_MAX_TIMEOUT 1000000 -void imx_get_mac_from_fuse(int dev_id, char *mac) -{ - struct mx28_ocotp_regs *ocotp_regs = - (struct mx28_ocotp_regs *)MXS_OCOTP_BASE; - uint32_t data; - - memset(mac, 0, 6); - - writel(OCOTP_CTRL_RD_BANK_OPEN, &ocotp_regs->hw_ocotp_ctrl_set); - - if (mx28_wait_mask_clr(&ocotp_regs->hw_ocotp_ctrl_reg, OCOTP_CTRL_BUSY, - MXS_OCOTP_MAX_TIMEOUT)) { - printf("MXS FEC: Can't get MAC from OCOTP\n"); - return; - } - - data = readl(&ocotp_regs->hw_ocotp_cust0); - - mac[0] = 0x00; - mac[1] = 0x04; - mac[2] = (data >> 24) & 0xff; - mac[3] = (data >> 16) & 0xff; - mac[4] = (data >> 8) & 0xff; - mac[5] = data & 0xff; -} -#else -void imx_get_mac_from_fuse(int dev_id, char *mac) -{ - memset(mac, 0, 6); -} -#endif - #endif
Let imx_get_mac_from_fuse function be a common function, so that other mx28 boards can reuse it. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> --- Changes since v6: - Let mac[5] be set inside mx28_adjust_mac Changes since v5: - Allow the MAC vendor to be overriden Changes since v4: - No changes Change since v3: - Add a note about the first two MAC addresses being from Freescale vendor. arch/arm/cpu/arm926ejs/mx28/mx28.c | 46 ++++++++++++++++++++++++++++++++++++ board/denx/m28evk/m28evk.c | 35 --------------------------- 2 files changed, 46 insertions(+), 35 deletions(-)