diff --git a/arch/arm/cpu/armv7/omap-common/utils.c b/arch/arm/cpu/armv7/omap-common/utils.c
index acff16b..28d0f86 100644
--- a/arch/arm/cpu/armv7/omap-common/utils.c
+++ b/arch/arm/cpu/armv7/omap-common/utils.c
@@ -46,35 +46,40 @@
 	die_id[0] = die_id[1] = die_id[2] = die_id[3] = 0;
 }
 
-void __weak usb_fake_mac_from_die_id(u32 *id)
+void omap_die_id_serial(void)
 {
-	uint8_t device_mac[6];
+	unsigned int die_id[4] = { 0 };
+	char serial_string[17] = { 0 };
 
-	if (!getenv("usbethaddr")) {
-		/*
-		 * create a fake MAC address from the processor ID code.
-		 * first byte is 0x02 to signify locally administered.
-		 */
-		device_mac[0] = 0x02;
-		device_mac[1] = id[3] & 0xff;
-		device_mac[2] = id[2] & 0xff;
-		device_mac[3] = id[1] & 0xff;
-		device_mac[4] = id[0] & 0xff;
-		device_mac[5] = (id[0] >> 8) & 0xff;
+	omap_die_id((unsigned int *)&die_id);
 
-		eth_setenv_enetaddr("usbethaddr", device_mac);
+	if (!getenv("serial#")) {
+		snprintf(serial_string, sizeof(serial_string),
+			"%08x%08x", die_id[0], die_id[3]);
+
+		setenv("serial#", serial_string);
 	}
 }
 
-void __weak usb_set_serial_num_from_die_id(u32 *id)
+void omap_die_id_usbethaddr(void)
 {
-	char serialno[72];
-	uint32_t serialno_lo, serialno_hi;
+	unsigned int die_id[4] = { 0 };
+	unsigned char mac[6] = { 0 };
 
-	if (!getenv("serial#")) {
-		serialno_hi = id[0];
-		serialno_lo = id[1];
-		sprintf(serialno, "%08x%08x", serialno_hi, serialno_lo);
-		setenv("serial#", serialno);
+	omap_die_id((unsigned int *)&die_id);
+
+	if (!getenv("usbethaddr")) {
+		/*
+		 * Create a fake MAC address from the processor ID code.
+		 * First byte is 0x02 to signify locally administered.
+		 */
+		mac[0] = 0x02;
+		mac[1] = die_id[3] & 0xff;
+		mac[2] = die_id[2] & 0xff;
+		mac[3] = die_id[1] & 0xff;
+		mac[4] = die_id[0] & 0xff;
+		mac[5] = (die_id[0] >> 8) & 0xff;
+
+		eth_setenv_enetaddr("usbethaddr", mac);
 	}
 }
diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h
index 6e0b8d7..84522ea 100644
--- a/arch/arm/include/asm/omap_common.h
+++ b/arch/arm/include/asm/omap_common.h
@@ -603,8 +603,9 @@
 	       u32 txdone, u32 txdone_mask, u32 opp);
 s8 abb_setup_ldovbb(u32 fuse, u32 ldovbb);
 
-void usb_fake_mac_from_die_id(u32 *id);
-void usb_set_serial_num_from_die_id(u32 *id);
+void omap_die_id_serial(void);
+void omap_die_id_usbethaddr(void);
+
 void recalibrate_iodelay(void);
 
 void omap_smc1(u32 service, u32 val);
diff --git a/board/lge/sniper/sniper.c b/board/lge/sniper/sniper.c
index ae9fe69..cdda76b 100644
--- a/board/lge/sniper/sniper.c
+++ b/board/lge/sniper/sniper.c
@@ -92,8 +92,6 @@
 int misc_init_r(void)
 {
 	unsigned char keypad_matrix[64] = { 0 };
-	unsigned int die_id[4] = { 0 };
-	char serial_string[17] = { 0 };
 	char reboot_mode[2] = { 0 };
 	unsigned char keys[3];
 	unsigned char data = 0;
@@ -140,14 +138,7 @@
 
 	/* Serial number */
 
-	omap_die_id(die_id);
-
-	if (!getenv("serial#")) {
-		snprintf(serial_string, sizeof(serial_string),
-			"%08x%08x", die_id[0], die_id[3]);
-
-		setenv("serial#", serial_string);
-	}
+	omap_die_id_serial();
 
 	/* MUSB */
 
diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
index b0d06a5..149b5db 100644
--- a/board/ti/beagle/beagle.c
+++ b/board/ti/beagle/beagle.c
@@ -506,12 +506,8 @@
 	musb_register(&musb_plat, &musb_board_data, (void *)MUSB_BASE);
 #endif
 
-	if (generate_fake_mac) {
-		unsigned int die_id[4] = { 0 };
-
-		omap_die_id(die_id);
-		usb_fake_mac_from_die_id(die_id);
-	}
+	if (generate_fake_mac)
+		omap_die_id_usbethaddr();
 
 	return 0;
 }
diff --git a/board/ti/dra7xx/evm.c b/board/ti/dra7xx/evm.c
index d4f5078..eebec88 100644
--- a/board/ti/dra7xx/evm.c
+++ b/board/ti/dra7xx/evm.c
@@ -57,15 +57,12 @@
 int board_late_init(void)
 {
 #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
-	unsigned int die_id[4] = { 0 };
-
 	if (omap_revision() == DRA722_ES1_0)
 		setenv("board_name", "dra72x");
 	else
 		setenv("board_name", "dra7xx");
 
-	omap_die_id(die_id);
-	usb_set_serial_num_from_die_id(die_id);
+	omap_die_id_serial();
 #endif
 	return 0;
 }
diff --git a/board/ti/omap5_uevm/evm.c b/board/ti/omap5_uevm/evm.c
index 0484087..853f196 100644
--- a/board/ti/omap5_uevm/evm.c
+++ b/board/ti/omap5_uevm/evm.c
@@ -189,14 +189,11 @@
  */
 int misc_init_r(void)
 {
-	unsigned int die_id[4] = { 0 };
-
 #ifdef CONFIG_PALMAS_POWER
 	palmas_init_settings();
 #endif
 
-	omap_die_id(die_id);
-	usb_fake_mac_from_die_id(die_id);
+	omap_die_id_usbethaddr();
 
 	return 0;
 }
diff --git a/board/ti/panda/panda.c b/board/ti/panda/panda.c
index 4de7ea1..eb9ce63 100644
--- a/board/ti/panda/panda.c
+++ b/board/ti/panda/panda.c
@@ -209,7 +209,6 @@
 {
 	int phy_type;
 	u32 auxclk, altclksrc;
-	unsigned int die_id[4] = { 0 };
 
 	/* EHCI is not supported on ES1.0 */
 	if (omap_revision() == OMAP4430_ES1_0)
@@ -263,8 +262,7 @@
 
 	writel(altclksrc, &scrm->altclksrc);
 
-	omap_die_id(die_id);
-	usb_fake_mac_from_die_id(die_id);
+	omap_die_id_usbethaddr();
 
 	return 0;
 }
