[PATCH v4 08/15] cmd: bmp: Split bmp commands and functions
Nikhil M Jain
n-jain1 at ti.com
Wed Mar 29 14:01:12 CEST 2023
To enable splash screen at spl, need to compile cmd/bmp.c which also
includes bmp commands, since SPL can't have commands split bmp.c into
common/bmp.c which includes all bmp functions and cmd/bmp_cmd contains
bmp commands.
Add delclaration for bmp_info in video.h.
Signed-off-by: Nikhil M Jain <n-jain1 at ti.com>
---
V4:
- No change
V3 (patch introduced):
- Split bmp functions and commands
cmd/bmp_cmd.c | 98 +++++++++++++++++++++++++++++++++++++++
{cmd => common}/bmp.c | 104 +-----------------------------------------
include/video.h | 7 +++
3 files changed, 106 insertions(+), 103 deletions(-)
create mode 100644 cmd/bmp_cmd.c
rename {cmd => common}/bmp.c (62%)
diff --git a/cmd/bmp_cmd.c b/cmd/bmp_cmd.c
new file mode 100644
index 0000000000..735790fda7
--- /dev/null
+++ b/cmd/bmp_cmd.c
@@ -0,0 +1,98 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2002
+ * Detlev Zundel, DENX Software Engineering, dzu at denx.de.
+ */
+
+/*
+ * BMP handling routines
+ */
+
+#include <common.h>
+#include <bmp_layout.h>
+#include <command.h>
+#include <image.h>
+#include <mapmem.h>
+#include <splash.h>
+#include <video.h>
+#include <stdlib.h>
+
+static int do_bmp_info(struct cmd_tbl *cmdtp, int flag, int argc,
+ char *const argv[])
+{
+ ulong addr;
+
+ switch (argc) {
+ case 1: /* use image_load_addr as default address */
+ addr = image_load_addr;
+ break;
+ case 2: /* use argument */
+ addr = hextoul(argv[1], NULL);
+ break;
+ default:
+ return CMD_RET_USAGE;
+ }
+
+ return (bmp_info(addr));
+}
+
+static int do_bmp_display(struct cmd_tbl *cmdtp, int flag, int argc,
+ char *const argv[])
+{
+ ulong addr;
+ int x = 0, y = 0;
+
+ splash_get_pos(&x, &y);
+
+ switch (argc) {
+ case 1: /* use image_load_addr as default address */
+ addr = image_load_addr;
+ break;
+ case 2: /* use argument */
+ addr = hextoul(argv[1], NULL);
+ break;
+ case 4:
+ addr = hextoul(argv[1], NULL);
+ if (!strcmp(argv[2], "m"))
+ x = BMP_ALIGN_CENTER;
+ else
+ x = dectoul(argv[2], NULL);
+ if (!strcmp(argv[3], "m"))
+ y = BMP_ALIGN_CENTER;
+ else
+ y = dectoul(argv[3], NULL);
+ break;
+ default:
+ return CMD_RET_USAGE;
+ }
+
+ return (bmp_display(addr, x, y));
+}
+
+static struct cmd_tbl cmd_bmp_sub[] = {
+ U_BOOT_CMD_MKENT(info, 3, 0, do_bmp_info, "", ""),
+ U_BOOT_CMD_MKENT(display, 5, 0, do_bmp_display, "", ""),
+};
+
+static int do_bmp(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
+{
+ struct cmd_tbl *c;
+
+ /* Strip off leading 'bmp' command argument */
+ argc--;
+ argv++;
+
+ c = find_cmd_tbl(argv[0], &cmd_bmp_sub[0], ARRAY_SIZE(cmd_bmp_sub));
+
+ if (c)
+ return c->cmd(cmdtp, flag, argc, argv);
+ else
+ return CMD_RET_USAGE;
+}
+
+U_BOOT_CMD(
+ bmp, 5, 1, do_bmp,
+ "manipulate BMP image data",
+ "info <imageAddr> - display image info\n"
+ "bmp display <imageAddr> [x y] - display image at x,y"
+);
diff --git a/cmd/bmp.c b/common/bmp.c
similarity index 62%
rename from cmd/bmp.c
rename to common/bmp.c
index 46d0d916e8..540d06e63f 100644
--- a/cmd/bmp.c
+++ b/common/bmp.c
@@ -13,7 +13,6 @@
#include <command.h>
#include <dm.h>
#include <gzip.h>
-#include <image.h>
#include <log.h>
#include <malloc.h>
#include <mapmem.h>
@@ -21,8 +20,6 @@
#include <video.h>
#include <asm/byteorder.h>
-static int bmp_info (ulong addr);
-
/*
* Allocate and decompress a BMP image using gunzip().
*
@@ -88,62 +85,6 @@ struct bmp_image *gunzip_bmp(unsigned long addr, unsigned long *lenp,
}
#endif
-static int do_bmp_info(struct cmd_tbl *cmdtp, int flag, int argc,
- char *const argv[])
-{
- ulong addr;
-
- switch (argc) {
- case 1: /* use image_load_addr as default address */
- addr = image_load_addr;
- break;
- case 2: /* use argument */
- addr = hextoul(argv[1], NULL);
- break;
- default:
- return CMD_RET_USAGE;
- }
-
- return (bmp_info(addr));
-}
-
-static int do_bmp_display(struct cmd_tbl *cmdtp, int flag, int argc,
- char *const argv[])
-{
- ulong addr;
- int x = 0, y = 0;
-
- splash_get_pos(&x, &y);
-
- switch (argc) {
- case 1: /* use image_load_addr as default address */
- addr = image_load_addr;
- break;
- case 2: /* use argument */
- addr = hextoul(argv[1], NULL);
- break;
- case 4:
- addr = hextoul(argv[1], NULL);
- if (!strcmp(argv[2], "m"))
- x = BMP_ALIGN_CENTER;
- else
- x = dectoul(argv[2], NULL);
- if (!strcmp(argv[3], "m"))
- y = BMP_ALIGN_CENTER;
- else
- y = dectoul(argv[3], NULL);
- break;
- default:
- return CMD_RET_USAGE;
- }
-
- return (bmp_display(addr, x, y));
-}
-
-static struct cmd_tbl cmd_bmp_sub[] = {
- U_BOOT_CMD_MKENT(info, 3, 0, do_bmp_info, "", ""),
- U_BOOT_CMD_MKENT(display, 5, 0, do_bmp_display, "", ""),
-};
#ifdef CONFIG_NEEDS_MANUAL_RELOC
void bmp_reloc(void) {
@@ -151,50 +92,7 @@ void bmp_reloc(void) {
}
#endif
-/*
- * Subroutine: do_bmp
- *
- * Description: Handler for 'bmp' command..
- *
- * Inputs: argv[1] contains the subcommand
- *
- * Return: None
- *
- */
-static int do_bmp(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
-{
- struct cmd_tbl *c;
-
- /* Strip off leading 'bmp' command argument */
- argc--;
- argv++;
-
- c = find_cmd_tbl(argv[0], &cmd_bmp_sub[0], ARRAY_SIZE(cmd_bmp_sub));
-
- if (c)
- return c->cmd(cmdtp, flag, argc, argv);
- else
- return CMD_RET_USAGE;
-}
-
-U_BOOT_CMD(
- bmp, 5, 1, do_bmp,
- "manipulate BMP image data",
- "info <imageAddr> - display image info\n"
- "bmp display <imageAddr> [x y] - display image at x,y"
-);
-
-/*
- * Subroutine: bmp_info
- *
- * Description: Show information about bmp file in memory
- *
- * Inputs: addr address of the bmp file
- *
- * Return: None
- *
- */
-static int bmp_info(ulong addr)
+int bmp_info(ulong addr)
{
struct bmp_image *bmp = (struct bmp_image *)map_sysmem(addr, 0);
void *bmp_alloc_addr = NULL;
diff --git a/include/video.h b/include/video.h
index 3f67a93bc9..4b7e866c65 100644
--- a/include/video.h
+++ b/include/video.h
@@ -355,4 +355,11 @@ void *video_get_u_boot_logo(void);
*/
int bmp_display(ulong addr, int x, int y);
+/*
+ * bmp_info() - Show information about bmp file
+ *
+ * @addr: address of bmp file
+ */
+int bmp_info(ulong addr);
+
#endif
--
2.34.1
More information about the U-Boot
mailing list