From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Thu, 15 Dec 2011 18:22:49 +0100 Subject: [U-Boot] [PATCH v2 1/3] mx28: Let imx_get_mac_from_fuse be common for mx28 In-Reply-To: <1323966067-28333-1-git-send-email-fabio.estevam@freescale.com> References: <1323966067-28333-1-git-send-email-fabio.estevam@freescale.com> Message-ID: <201112151822.49672.marek.vasut@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de > Let imx_get_mac_from_fuse function be a common function, so that other > mx28 boards can reuse it. > > Signed-off-by: Fabio Estevam > --- > arch/arm/cpu/arm926ejs/mx28/mx28.c | 35 > ++++++++++++++++++++++++++++ arch/arm/include/asm/arch-mx28/sys_proto.h | > 2 + > board/denx/m28evk/m28evk.c | 35 > ---------------------------- 3 files changed, 37 insertions(+), 35 > deletions(-) > > diff --git a/arch/arm/cpu/arm926ejs/mx28/mx28.c > b/arch/arm/cpu/arm926ejs/mx28/mx28.c index 088c019..785978f 100644 > --- a/arch/arm/cpu/arm926ejs/mx28/mx28.c > +++ b/arch/arm/cpu/arm926ejs/mx28/mx28.c > @@ -214,6 +214,41 @@ int cpu_eth_init(bd_t *bis) > } > #endif > > +#ifdef CONFIG_MX28_FEC_MAC_IN_OCOTP > + > +#define MXS_OCOTP_MAX_TIMEOUT 1000000 > +void imx_get_mac_from_fuse(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)) { > + puts("MXS FEC: Can't get MAC from OCOTP\n"); > + return; > + } > + > + data = readl(&ocotp_regs->hw_ocotp_cust0); > + > + mac[0] = 0x00; > + mac[1] = 0x04; Be careful here. 0x00 0x04 prefix might not be correct for all cases! > + 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(char *mac) > +{ > + memset(mac, 0, 6); > +} > +#endif > + > U_BOOT_CMD( > clocks, CONFIG_SYS_MAXARGS, 1, do_mx28_showclocks, > "display clocks", > diff --git a/arch/arm/include/asm/arch-mx28/sys_proto.h > b/arch/arm/include/asm/arch-mx28/sys_proto.h index be1f7db..cf5ab16 100644 > --- a/arch/arm/include/asm/arch-mx28/sys_proto.h > +++ b/arch/arm/include/asm/arch-mx28/sys_proto.h > @@ -35,4 +35,6 @@ void mx28_common_spl_init(const iomux_cfg_t *iomux_setup, > const unsigned int iomux_size); > #endif > > +void imx_get_mac_from_fuse(char *mac); > + > #endif /* __MX28_H__ */ > diff --git a/board/denx/m28evk/m28evk.c b/board/denx/m28evk/m28evk.c > index fcee046..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(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(char *mac) > -{ > - memset(mac, 0, 6); > -} > -#endif > - > #endif Otherwise, sure, it seems OK. M