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-ja...@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, d...@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