--- /dev/null
+
+#include <common.h>
+#include <cli.h>
+#include <string.h>
+#include "reimage.h"
+
+int do_reimage_auto(cmd_tbl_t * cmdtp, int flag, int argc, char *const argv[])
+{
+ /* CUSTOMIZE -- Sequence of commands to run automatically */
+ run_command("safeimage nvram", 0);
+ run_command("safeimage revertable", 0);
+ run_command("preserve allocate 0x80000", 0);
+ run_command("setenv partition data", 0);
+ run_command("fsload newkey.key && preserve save /data/newkey.key", 0);
+ run_command("fsload newkey && preserve save /data/newkey", 0);
+ run_command("fsload newkey.cert && preserve save /data/newkey.cert", 0);
+ run_command("fsload psi && preserve save /data/psi", 0);
+ run_command("fsload scratchpad && preserve save /data/scratchpad", 0);
+ run_command
+ ("fsload .kernel_nvram.setting && preserve save /data/.kernel_nvram.setting",
+ 0);
+ run_command("safeimage read_recovery nvram", 0); /* must be last before commit */
+ run_command("safeimage commit", 0);
+ run_command("safeimage store_preserved", 0);
+ run_command("reset", 0);
+ return (0);
+}
+
+void reimage_env_append(struct reimager *r)
+{
+ char more_env[1024];
+ char tmp1[128];
+ char tmp2[128];
+ char *bp;
+ char *cp;
+ int more_env_size;
+ int i;
+ cp = more_env;
+
+ /* CUSTOMIZE THIS-- whatever needs to be transferred from NVRAM to the uboot environment, put it here */
+ /* START */
+ printf("cfe_bootline=%s\n", r->nvram.bootline);
+ tmp2[0] = '\0';
+ bp = strtok(r->nvram.bootline, "= "); /* skip to e= */
+ bp = strtok(NULL, "= "); /* find the address after e= to space */
+ strcpy(tmp1, bp);
+ bp = strtok(NULL, "= "); /* skip to h= */
+ bp = strtok(NULL, "= "); /* find the address after h= to space */
+ strcpy(tmp2, bp);
+ bp = strtok(NULL, "^");
+ cp += sprintf(cp, "ipaddr=%s", tmp1);
+ *(cp++) = '\0';
+ cp += sprintf(cp, "serverip=%s", tmp2);
+ *(cp++) = '\0';
+ cp += sprintf(cp, "MCB=0x%x", r->nvram.ulMemoryConfig);
+ *(cp++) = '\0';
+ cp += sprintf(cp, "ethaddr=%x:%x:%x:%x:%x:%x",
+ r->nvram.ucaBaseMacAddr[0],
+ r->nvram.ucaBaseMacAddr[1],
+ r->nvram.ucaBaseMacAddr[2],
+ r->nvram.ucaBaseMacAddr[3],
+ r->nvram.ucaBaseMacAddr[4], r->nvram.ucaBaseMacAddr[5]);
+ *(cp++) = '\0';
+
+ cp += sprintf(cp, "bootcmd=printenv;run once;run check_flashback;sdk boot_img");
+ *(cp++) = '\0';
+
+ cp += sprintf(cp, "tries=3");
+ *(cp++) = '\0';
+
+ cp += sprintf(cp, "check_flashback=test $tries -eq 0 || echo $tries ; setexpr tries $tries - 1 ; saveenv ; test $tries -eq 0 && run do_flashback");
+ *(cp++) = '\0';
+
+ cp += sprintf(cp, "do_flashback=ubi part image && ubi read 0x1000000 recovery && flashback_ops go_flashback && reset");
+ *(cp++) = '\0';
+
+ cp += sprintf(cp, "once=sdk metadata 1 1;setenv once true;saveenv");
+ *(cp++) = '\0';
+
+ *(cp++) = '\0';
+ /* END */
+
+ more_env_size = cp - more_env + 1;
+ reimage_splice_env(r, more_env, more_env_size);
+}