km/common: implement setboardid command
authorHolger Brunck <holger.brunck@keymile.com>
Wed, 4 May 2011 01:47:30 +0000 (01:47 +0000)
committerWolfgang Denk <wd@denx.de>
Tue, 10 May 2011 21:19:43 +0000 (23:19 +0200)
Read out board id and HW key from the IVM eeprom and set
these values as an environment variable.

Signed-off-by: Holger Brunck <holger.brunck@keymile.com>
Acked-by: Heiko Schocher <hs@denx.de>
cc: Wolfgang Denk <wd@denx.de>
cc: Detlev Zundel <dzu@denx.de>
cc: Valentin Longchamp <valentin.longchamp@keymile.com>

board/keymile/common/common.c

index 25a3850c46b70a47a5a20abe3b80ea233fed6e2b..9adfefaf6aac9c89cfec7e86429da150aabace33 100644 (file)
@@ -26,6 +26,7 @@
 #include <mpc8260.h>
 #endif
 #include <ioports.h>
+#include <command.h>
 #include <malloc.h>
 #include <hush.h>
 #include <net.h>
@@ -682,3 +683,36 @@ int board_eth_init(bd_t *bis)
 
        return -1;
 }
+
+/*
+ * do_setboardid command
+ * read out the board id and the hw key from the intventory EEPROM and set
+ * this values as environment variables.
+ */
+static int do_setboardid(cmd_tbl_t *cmdtp, int flag, int argc,
+                               char *const argv[])
+{
+       unsigned char buf[32];
+       char *p;
+
+       p = get_local_var("IVM_BoardId");
+       if (p == NULL) {
+               printf("can't get the IVM_Boardid\n");
+               return 1;
+       }
+       sprintf((char *)buf, "%s", p);
+       setenv("boardid", (char *)buf);
+
+       p = get_local_var("IVM_HWKey");
+       if (p == NULL) {
+               printf("can't get the IVM_HWKey\n");
+               return 1;
+       }
+       sprintf((char *)buf, "%s", p);
+       setenv("hwkey", (char *)buf);
+
+       return 0;
+}
+
+U_BOOT_CMD(km_setboardid, 1, 0, do_setboardid, "setboardid", "read out bid and "
+                                "hwkey from IVM and set in environment");