arm/km: introduce bootcount env variable and clean km_arm
authorValentin Longchamp <valentin.longchamp@keymile.com>
Tue, 31 May 2011 02:12:47 +0000 (02:12 +0000)
committerU-Boot <uboot@lilith.(none)>
Tue, 31 May 2011 17:45:27 +0000 (19:45 +0200)
This environment variable is used to set the bootcount address
for the kernel.

last_stage_init is not available for arm platforms. So the
calls to set_km_var and set_bootcount_addr are done in
misc_init_r.

Additionally some unneeded printouts were removed.

Signed-off-by: Valentin Longchamp <valentin.longchamp@keymile.com>
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: Prafulla Wadaskar <prafulla@marvell.com>

board/keymile/km_arm/km_arm.c
include/configs/km/km_arm.h

index c772ee2a55881864332dfccf80299f917a4b1ee6..4049a4e86eee1e167b96f2bc5d4ef20d91f2e1c2 100644 (file)
@@ -145,16 +145,22 @@ int initialize_unit_leds(void)
        return 0;
 }
 
+#if defined(CONFIG_BOOTCOUNT_LIMIT)
+void set_bootcount_addr(void)
+{
+       uchar buf[32];
+       unsigned int bootcountaddr;
+       bootcountaddr = gd->ram_size - BOOTCOUNT_ADDR;
+       sprintf((char *)buf, "0x%x", bootcountaddr);
+       setenv("bootcountaddr", (char *)buf);
+}
+#endif
+
 int misc_init_r(void)
 {
        char *str;
        int mach_type;
 
-       puts("Piggy:");
-       if (ethernet_present() == 0)
-               puts (" not");
-       puts(" present\n");
-
        str = getenv("mach_type");
        if (str != NULL) {
                mach_type = simple_strtoul(str, NULL, 10);
@@ -163,7 +169,10 @@ int misc_init_r(void)
        }
 
        initialize_unit_leds();
-
+       set_km_env();
+#if defined(CONFIG_BOOTCOUNT_LIMIT)
+       set_bootcount_addr();
+#endif
        return 0;
 }
 
@@ -182,7 +191,6 @@ int board_early_init_f(void)
        writel(tmp | FLASH_GPIO_PIN , KW_GPIO0_BASE);
        tmp = readl(KW_GPIO0_BASE + 4);
        writel(tmp & (~FLASH_GPIO_PIN) , KW_GPIO0_BASE + 4);
-       printf("KM: setting NAND mode\n");
 
 #if defined(CONFIG_SOFT_I2C)
        /* init the GPIO for I2C Bitbang driver */
@@ -212,12 +220,6 @@ int board_init(void)
        return 0;
 }
 
-int last_stage_init(void)
-{
-       set_km_env();
-       return 0;
-}
-
 #if defined(CONFIG_CMD_SF)
 int do_spi_toggle(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
index 80a56dd1b7e596f342e245a57ac38f94a9c206e5..5a915f3084dfc35c5890b321f1c27042db63e021 100644 (file)
@@ -64,6 +64,9 @@
 #define CONFIG_KM_KERNEL_ADDR  0x2000000       /* 4096KBytes */
 
 #define CONFIG_KM_DEF_ENV_CPU                                          \
+       "addbootcount="                                                 \
+               "setenv bootargs ${bootargs} "                          \
+               "bootcountaddr=${bootcountaddr}\0"                      \
        "addmtdparts=setenv bootargs ${bootargs} ${mtdparts}\0"         \
        "boot=bootm ${actual_kernel_addr} - -\0"                        \
        "cramfsloadfdt=true\0"                                          \