mx28: Let imx_get_mac_from_fuse be common for mx28
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> Acked-by: Marek Vasut <marek.vasut@gmail.com> Acked-by: Stefano Babic <sbabic@denx.de>
This commit is contained in:
parent
be252b654a
commit
5cb525f3d2
|
@ -214,6 +214,52 @@ int cpu_eth_init(bd_t *bis)
|
|||
}
|
||||
#endif
|
||||
|
||||
static void __mx28_adjust_mac(int dev_id, unsigned 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, unsigned 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, unsigned 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, unsigned char *mac)
|
||||
{
|
||||
memset(mac, 0, 6);
|
||||
}
|
||||
#endif
|
||||
|
||||
U_BOOT_CMD(
|
||||
clocks, CONFIG_SYS_MAXARGS, 1, do_mx28_showclocks,
|
||||
"display clocks",
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue