snapdragon: added MAC generation functions
authorRamon Fried <ramon.fried@gmail.com>
Fri, 3 Aug 2018 13:25:36 +0000 (16:25 +0300)
committerTom Rini <trini@konsulko.com>
Mon, 13 Aug 2018 18:04:04 +0000 (14:04 -0400)
Add support for generation of unique MAC address
that is derived from board serial.
Algorithm for generation of MAC taken from LK.

Signed-off-by: Ramon Fried <ramon.fried@gmail.com>
arch/arm/mach-snapdragon/include/mach/misc.h
arch/arm/mach-snapdragon/misc.c

index 5af6ae8da431e99b7d48befc98d401b08c0fdced..c60e3e472470e358945668eb79c7f7cc8b47d6f3 100644 (file)
@@ -8,5 +8,6 @@
 #define MISC_H
 
 u32 msm_board_serial(void);
+void msm_generate_mac_addr(u8 *mac);
 
 #endif
index 678bd69f8381a4a71eb287ab796d9d919bfddd6b..f6c87866c0e7218c4ee1f3608768f515c6fdf097 100644 (file)
@@ -35,3 +35,19 @@ u32 msm_board_serial(void)
 
        return UNSTUFF_BITS(mmc_dev->cid, 16, 32);
 }
+
+void msm_generate_mac_addr(u8 *mac)
+{
+       int i;
+       char sn[9];
+
+       snprintf(sn, 8, "%08x", msm_board_serial());
+
+       /* fill in the mac with serialno, use locally adminstrated pool */
+       mac[0] = 0x02;
+       mac[1] = 00;
+       for (i = 3; i >= 0; i--) {
+               mac[i + 2] = simple_strtoul(&sn[2 * i], NULL, 16);
+               sn[2 * i] = 0;
+       }
+}