
On 15/12/2011 18:22, Marek Vasut 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
Hi Marek,
Hi Stefano,
- 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!
But to be honest, it seems they are correct for the MX28EVK and not for the M28EVK. The M28EVK and the M28 module are delivered with their own MAC address that does not belong to the Freescale's range.
As far as I can see, the M28EVK starts with a Freescale's MAC, and then the DENX MAC address (Vendor ID C0:E5:4E) is set later to the correct value when Linux boots.
It's actually set even in uboot by ethaddr and eth1addr. This is the default behaviour.
I can understand this feature in the SOC as a way to set the LSBs of the MAC address, but leaving to the customer a way to set its own vendor id, if he bought it.
What about to add a weak function (board_set_mac_vendor, maybe ?) that can be called at this point to set the vendor id ? The default behavior should be to set the Freescale's vendor id.
ethaddr and eth1addr is insufficient?
M