[U-Boot] [PATCH 2/3] km/common: fix ramfs development target

Holger Brunck holger.brunck at keymile.com
Wed Sep 14 11:06:11 CEST 2011


From: Andreas Huber <andreas.huber at keymile.com>

Calucations of PRAM needs to take into account the 'rootfssize'.
Memory available to the linux kernel 'mem=' is in all cases set to the total
memory size minus the pram size.

Signed-off-by: Andreas Huber <andreas.huber at keymile.com>
Signed-off-by: Holger Brunck <holger.brunck at keymile.com>
cc: Wolfgang Denk <wd at denx.de>
---
 board/keymile/common/common.c            |   16 ++++++++++++++--
 board/keymile/scripts/develop-common.txt |    1 +
 board/keymile/scripts/ramfs-common.txt   |    5 ++---
 include/configs/km/keymile-common.h      |    2 +-
 4 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/board/keymile/common/common.c b/board/keymile/common/common.c
index d6dbec7..3663525 100644
--- a/board/keymile/common/common.c
+++ b/board/keymile/common/common.c
@@ -67,20 +67,32 @@ int set_km_env(void)
 	unsigned int pnvramaddr;
 	unsigned int pram;
 	unsigned int varaddr;
+	unsigned int kernelmem;
+	char *p;
+	unsigned long rootfssize = 0;
 
 	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;
+	/* try to read rootfssize (ram image) from envrionment */
+	p = getenv("rootfssize");
+	if (p != NULL)
+		strict_strtoul(p, 16, &rootfssize);
+	pram = (rootfssize + 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);
+
+	kernelmem = gd->ram_size - 0x400 * pram;
+	sprintf((char *)buf, "0x%x", kernelmem);
+	setenv("kernelmem", (char *)buf);
+
 	return 0;
 }
 
diff --git a/board/keymile/scripts/develop-common.txt b/board/keymile/scripts/develop-common.txt
index 3ccd039..93e2967 100644
--- a/board/keymile/scripts/develop-common.txt
+++ b/board/keymile/scripts/develop-common.txt
@@ -4,3 +4,4 @@ configure=km_setboardid && saveenv && reset
 subbootcmds=tftpfdt tftpkernel nfsargs add_default boot
 nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:/opt/eldk/${arch}
 tftpkernel=tftpboot ${load_addr_r} ${hostname}/uImage
+rootfssize=0
diff --git a/board/keymile/scripts/ramfs-common.txt b/board/keymile/scripts/ramfs-common.txt
index 9315500..c1b45ab 100644
--- a/board/keymile/scripts/ramfs-common.txt
+++ b/board/keymile/scripts/ramfs-common.txt
@@ -1,11 +1,10 @@
-addramfs=setenv bootargs "${bootargs} mem=${rootfsaddr} phram.phram=rootfs${boot_bank},${rootfsaddr},${rootfssize}"
+addramfs=setenv bootargs "${bootargs} phram.phram=rootfs${boot_bank},${rootfsaddr},${rootfssize}"
 actual_bank=-1
 altbootcmd=run ${subbootcmds}
 bootcmd=run ${subbootcmds}
 subbootcmds=tftpfdt tftpkernel setrootfsaddr tftpramfs flashargs add_default addpanic addramfs boot
 nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath}
-configure=km_setboardid && run setramfspram && saveenv && reset
-setramfspram=setexpr value 0 + ${rootfssize} && setexpr value 0x${value} / 0x400 && setexpr value 0x${value} + ${pram} && setenv pram 0x${value}
+configure=km_setboardid && saveenv && reset
 rootfsfile=${hostname}/rootfsImage
 setrootfsaddr=setexpr value ${pnvramaddr} - ${rootfssize} && setenv rootfsaddr 0x${value}
 tftpkernel=tftpboot ${load_addr_r} ${hostname}/uImage
diff --git a/include/configs/km/keymile-common.h b/include/configs/km/keymile-common.h
index 5e04883..194087d 100644
--- a/include/configs/km/keymile-common.h
+++ b/include/configs/km/keymile-common.h
@@ -177,7 +177,7 @@
 		"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"	\
 		":${hostname}:${netdev}:off3"				\
 		" console=" CONFIG_KM_CONSOLE_TTY ",${baudrate}"	\
-		" mem=${pnvramaddr} init=${init}"			\
+		" mem=${kernelmem} init=${init}"			\
 		" phram.phram=phvar,${varaddr}," xstr(CONFIG_KM_PHRAM)	\
 		" ubi.mtd=" CONFIG_KM_UBI_LINUX_MTD_NAME " "		\
 		CONFIG_KM_DEF_BOOT_ARGS_CPU				\
-- 
1.7.1



More information about the U-Boot mailing list