[openwrt/openwrt] uboot-mediatek: add command for getting size of ram

LEDE Commits lede-commits at lists.infradead.org
Sat Jan 24 13:17:14 PST 2026


hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/46ee5209aaebb66dadb9e5267287bf9b89dcafb3

commit 46ee5209aaebb66dadb9e5267287bf9b89dcafb3
Author: Frank Wunderlich <frank-w at public-files.de>
AuthorDate: Sat Jan 17 19:00:56 2026 +0100

    uboot-mediatek: add command for getting size of ram
    
    Add command which gets ramsize and write it to env variable.
    
    Signed-off-by: Frank Wunderlich <frank-w at public-files.de>
    Link: https://github.com/openwrt/openwrt/pull/21437
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 .../uboot-mediatek/patches/450-add-bpi-r4.patch    |   4 +
 .../uboot-mediatek/patches/501-add-cmd-msize.patch | 117 +++++++++++++++++++++
 2 files changed, 121 insertions(+)

diff --git a/package/boot/uboot-mediatek/patches/450-add-bpi-r4.patch b/package/boot/uboot-mediatek/patches/450-add-bpi-r4.patch
index 95085339f6..879a16864f 100644
--- a/package/boot/uboot-mediatek/patches/450-add-bpi-r4.patch
+++ b/package/boot/uboot-mediatek/patches/450-add-bpi-r4.patch
@@ -75,6 +75,7 @@
 +CONFIG_CMD_FS_UUID=y
 +CONFIG_CMD_UBI=y
 +CONFIG_CMD_UBI_RENAME=y
++CONFIG_CMD_MEMSIZE=y
 +CONFIG_OF_EMBED=y
 +CONFIG_ENV_OVERWRITE=y
 +CONFIG_ENV_IS_IN_MMC=y
@@ -356,6 +357,7 @@
 +CONFIG_CMD_FS_UUID=y
 +CONFIG_CMD_UBI=y
 +CONFIG_CMD_UBI_RENAME=y
++CONFIG_CMD_MEMSIZE=y
 +CONFIG_OF_EMBED=y
 +CONFIG_ENV_OVERWRITE=y
 +CONFIG_ENV_IS_IN_UBI=y
@@ -948,6 +950,7 @@
 +CONFIG_CMD_FS_UUID=y
 +CONFIG_CMD_UBI=y
 +CONFIG_CMD_UBI_RENAME=y
++CONFIG_CMD_MEMSIZE=y
 +CONFIG_OF_EMBED=y
 +CONFIG_ENV_OVERWRITE=y
 +CONFIG_ENV_IS_IN_MMC=y
@@ -1229,6 +1232,7 @@
 +CONFIG_CMD_FS_UUID=y
 +CONFIG_CMD_UBI=y
 +CONFIG_CMD_UBI_RENAME=y
++CONFIG_CMD_MEMSIZE=y
 +CONFIG_OF_EMBED=y
 +CONFIG_ENV_OVERWRITE=y
 +CONFIG_ENV_IS_IN_UBI=y
diff --git a/package/boot/uboot-mediatek/patches/501-add-cmd-msize.patch b/package/boot/uboot-mediatek/patches/501-add-cmd-msize.patch
new file mode 100644
index 0000000000..c121a9c42a
--- /dev/null
+++ b/package/boot/uboot-mediatek/patches/501-add-cmd-msize.patch
@@ -0,0 +1,117 @@
+From 83c596f12349fdc77fa76e1d017b4fc8882744ef Mon Sep 17 00:00:00 2001
+From: Frank Wunderlich <frank-w at public-files.de>
+Date: Sat, 17 Jan 2026 12:38:40 +0100
+To: Tom Rini <trini at konsulko.com>
+Cc: u-boot at lists.denx.de,
+  Daniel Golle <daniel at makrotopia.org>
+Subject: [PATCH v4] cmd: mem: add function for getting ram size for use in
+ scripts
+
+Add a command for getting detected ram size with possibility to write
+to environment variable.
+
+example usage:
+
+BPI-R4> msize
+4294967296
+BPI-R4> msize m
+4096m
+BPI-R4> msize g
+4g
+BPI-R4> msize g ramsize
+BPI-R4> printenv ramsize
+ramsize=4
+BPI-R4>
+
+board with 8GB ram:
+
+BPI-R4> msize
+8589934592
+BPI-R4> msize m
+8192m
+BPI-R4> msize g
+8g
+BPI-R4> msize g ramsize
+BPI-R4> printenv ramsize
+ramsize=8
+BPI-R4>
+
+Signed-off-by: Frank Wunderlich <frank-w at public-files.de>
+---
+v4: drop rounding to full MB/GB as it leads to wrong display
+v3: add missing ifdefs
+v2: add Kconfig entry
+---
+ cmd/Kconfig |  5 +++++
+ cmd/mem.c   | 32 ++++++++++++++++++++++++++++++++
+ 2 files changed, 37 insertions(+)
+
+--- a/cmd/Kconfig
++++ b/cmd/Kconfig
+@@ -980,6 +980,11 @@ config CMD_RANDOM
+ 	help
+ 	  random - fill memory with random data
+ 
++config CMD_MEMSIZE
++	bool "memsize"
++	help
++	  Get RAM via command for use in scripts.
++
+ config CMD_MEMTEST
+ 	bool "memtest"
+ 	help
+--- a/cmd/mem.c
++++ b/cmd/mem.c
+@@ -33,6 +33,7 @@
+ #include <linux/compiler.h>
+ #include <linux/ctype.h>
+ #include <linux/delay.h>
++#include <linux/sizes.h>
+ 
+ DECLARE_GLOBAL_DATA_PTR;
+ 
+@@ -711,6 +712,29 @@ static int do_mem_loopw(struct cmd_tbl *
+ }
+ #endif /* CONFIG_LOOPW */
+ 
++#ifdef CONFIG_CMD_MEMSIZE
++static int do_mem_size(struct cmd_tbl *cmdtp, int flag, int argc,
++		       char *const argv[])
++{
++	u64 memsize = gd->ram_size;
++
++	if (argc > 1) {
++		if (!strcmp(argv[1], "m"))
++			memsize = memsize / SZ_1M;
++		else if (!strcmp(argv[1], "g"))
++			memsize = memsize / SZ_1G;
++		if (argc > 2)
++			env_set_ulong(argv[2], memsize);
++		else
++			printf("%lld%s\n", memsize, argv[1]);
++	} else {
++		printf("%lld\n", memsize);
++	}
++
++	return 0;
++}
++#endif /* CONFIG_CMD_MEMSIZE */
++
+ #ifdef CONFIG_CMD_MEMTEST
+ static ulong mem_test_alt(volatile ulong *buf, ulong start_addr, ulong end_addr,
+ 			  volatile ulong *dummy)
+@@ -1404,6 +1428,14 @@ U_BOOT_CMD(
+ );
+ #endif /* CONFIG_LOOPW */
+ 
++#ifdef CONFIG_CMD_MEMSIZE
++U_BOOT_CMD(
++	msize,	3,	1,	do_mem_size,
++	"get detected ram size, optional set env variable with value",
++	"[m, g] [envvar]"
++);
++#endif /* CONFIG_CMD_MEMSIZE */
++
+ #ifdef CONFIG_CMD_MEMTEST
+ U_BOOT_CMD(
+ 	mtest,	5,	1,	do_mem_mtest,




More information about the lede-commits mailing list