keymile, common: add setting of some environment variables

This patch adds last_stage_init to all keymile boards. And
in the last stage init some environment variables for u-boot
were set. Currently these are pnvramaddr, pram and var address.

Signed-off-by: Holger Brunck <holger.brunck@keymile.com>
Signed-off-by: Heiko Schocher <hs@denx.de>
Acked-by: Kim Phillips <kim.phillips@freescale.com>
cc: Valentin Longchamp <valentin.longchamp@keymile.com>
cc: Wolfgang Denk <wd@denx.de>
cc: Kim Phillips <kim.phillips@freescale.com>
This commit is contained in:
Heiko Schocher 2010-04-26 13:07:28 +02:00 committed by Wolfgang Denk
parent 0d01520200
commit f1fef1d8a1
8 changed files with 60 additions and 2 deletions

View File

@ -42,6 +42,7 @@
static void i2c_write_start_seq(void);
static int i2c_make_abort(void);
DECLARE_GLOBAL_DATA_PTR;
int ivm_calc_crc(unsigned char *buf, int len)
{
@ -73,6 +74,41 @@ int ivm_calc_crc(unsigned char *buf, int len)
return crc;
}
/*
* Set Keymile specific environment variables
* Currently only some memory layout variables are calculated here
* ... ------------------------------------------------
* ... |@rootfsaddr |@pnvramaddr |@varaddr |@reserved |@END_OF_RAM
* ... |<------------------- pram ------------------->|
* ... ------------------------------------------------
* @END_OF_RAM: denotes the RAM size
* @pnvramaddr: Startadress of pseudo non volatile RAM in hex
* @pram : preserved ram size in k
* @varaddr : startadress for /var mounted into RAM
*/
int set_km_env(void)
{
uchar buf[32];
unsigned int pnvramaddr;
unsigned int pram;
unsigned int varaddr;
pnvramaddr = gd->ram_size - CONFIG_KM_RESERVED_PRAM - CONFIG_KM_PHRAM
- CONFIG_KM_PNVRAM;
sprintf((char *)buf, "0x%x", pnvramaddr);
setenv("pnvramaddr", (char *)buf);
pram = (CONFIG_KM_RESERVED_PRAM + CONFIG_KM_PHRAM + CONFIG_KM_PNVRAM) /
0x400;
sprintf((char *)buf, "0x%x", pram);
setenv("pram", (char *)buf);
varaddr = gd->ram_size - CONFIG_KM_RESERVED_PRAM - CONFIG_KM_PHRAM;
sprintf((char *)buf, "0x%x", varaddr);
setenv("varaddr", (char *)buf);
return 0;
}
static int ivm_set_value(char *name, char *value)
{
char tempbuf[256];

View File

@ -50,6 +50,7 @@ int ivm_read_eeprom(void);
int keymile_hdlc_enet_initialize(bd_t *bis);
#endif
int set_km_env(void);
int fdt_set_node_and_value(void *blob,
char *nodename,
char *regname,

View File

@ -190,6 +190,12 @@ int misc_init_r(void)
return 0;
}
int last_stage_init(void)
{
set_km_env();
return 0;
}
int fixed_sdram(void)
{
immap_t *im = (immap_t *)CONFIG_SYS_IMMR;

View File

@ -212,6 +212,12 @@ 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[])
{

View File

@ -310,6 +310,7 @@ int last_stage_init(void)
puts("DIP: Enabled\n");
setenv("actual_bank", "0");
}
set_km_env();
return 0;
}

View File

@ -26,6 +26,9 @@
/* Do boardspecific init for all boards */
#define CONFIG_BOARD_EARLY_INIT_R
#define CONFIG_LAST_STAGE_INIT
#define CONFIG_BOOTCOUNT_LIMIT
/*
* By default kwbimage.cfg from board specific folder is used

View File

@ -254,4 +254,11 @@ int get_scl (void);
#define CONFIG_SYS_INIT_SP_ADDR 0xC8012000
/* Do early setups now in board_init_f() */
#define CONFIG_BOARD_EARLY_INIT_F
/*
* resereved pram area at the end of memroy [hex]
* 8Mbytes for switch + 4Kbytes for bootcount
*/
#define CONFIG_KM_RESERVED_PRAM 0x801000
#endif /* _CONFIG_KM_ARM_H */

View File

@ -61,8 +61,6 @@
/* include further common stuff for all keymile 82xx boards */
#include "km82xx-common.h"
/* enable last_stage_init */
#define CONFIG_LAST_STAGE_INIT 1
/* bfticu address */
#define CONFIG_SYS_BFTICU_BASE 0x40000000