From: Frank Wunderlich Date: Sat, 17 Jan 2026 18:00:56 +0000 (+0100) Subject: uboot-mediatek: add command for getting size of ram X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=46ee5209aaebb66dadb9e5267287bf9b89dcafb3;p=thirdparty%2Fopenwrt.git 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 Link: https://github.com/openwrt/openwrt/pull/21437 Signed-off-by: Hauke Mehrtens --- 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 95085339f66..879a16864fc 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 00000000000..c121a9c42ad --- /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 +Date: Sat, 17 Jan 2026 12:38:40 +0100 +To: Tom Rini +Cc: u-boot@lists.denx.de, + Daniel Golle +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 +--- +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 + #include + #include ++#include + + 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,