diff options
Diffstat (limited to 'arch/arm/mach-omap2/id.c')
-rw-r--r-- | arch/arm/mach-omap2/id.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index 4e95378dc17..181c667e62a 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c @@ -18,6 +18,7 @@ #include <linux/kernel.h> #include <linux/init.h> #include <linux/io.h> +#include <linux/etherdevice.h> #include <asm/cputype.h> @@ -34,6 +35,9 @@ u32 omap_features; static void __init omap3_cpuinfo(void); +static char *cpuidmac; +module_param(cpuidmac, charp, 0644); + unsigned int omap_rev(void) { return omap_revision; @@ -586,6 +590,15 @@ void omap2_die_id_to_ethernet_mac(u8 *mac, int subtype) pr_info(" ID: %08X %08X %08X %08X %08X\n", tap, odi.id_0, odi.id_1, odi.id_2, odi.id_3); + if (cpuidmac) + if (!eth_scan_mac(cpuidmac, mac)) { + mac[1] &= ~0xc0; + pr_info("cpuidmac <- %02x:%02x:%02x:%02x:%02x:%02x\n", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + return; + } else + pr_info("cpuidmac failed to parse mac %s\n", cpuidmac); + mac[0] = odi.id_2; mac[1] = odi.id_2 >> 8; mac[2] = odi.id_1; |