sandbox: Support the bmp command
authorSimon Glass <sjg@chromium.org>
Tue, 5 Jan 2016 16:30:58 +0000 (09:30 -0700)
committerSimon Glass <sjg@chromium.org>
Thu, 21 Jan 2016 02:06:22 +0000 (19:06 -0700)
Adjust this command to use map_sysmem() correctly so that it works on
sandbox.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
common/cmd_bmp.c

index cb1f07119b4f6c7963590c394a779f4339a2934e..f04b7d4866aea3744bbf4f459f1a66835ea485f6 100644 (file)
@@ -15,6 +15,7 @@
 #include <command.h>
 #include <asm/byteorder.h>
 #include <malloc.h>
+#include <mapmem.h>
 #include <splash.h>
 #include <video.h>
 
@@ -57,7 +58,8 @@ struct bmp_image *gunzip_bmp(unsigned long addr, unsigned long *lenp,
        /* align to 32-bit-aligned-address + 2 */
        bmp = (struct bmp_image *)((((unsigned int)dst + 1) & ~3) + 2);
 
-       if (gunzip(bmp, CONFIG_SYS_VIDEO_LOGO_MAX_SIZE, (uchar *)addr, &len) != 0) {
+       if (gunzip(bmp, CONFIG_SYS_VIDEO_LOGO_MAX_SIZE, map_sysmem(addr, 0),
+                  &len) != 0) {
                free(dst);
                return NULL;
        }
@@ -187,7 +189,7 @@ U_BOOT_CMD(
  */
 static int bmp_info(ulong addr)
 {
-       struct bmp_image *bmp = (struct bmp_image *)addr;
+       struct bmp_image *bmp = (struct bmp_image *)map_sysmem(addr, 0);
        void *bmp_alloc_addr = NULL;
        unsigned long len;
 
@@ -224,7 +226,7 @@ static int bmp_info(ulong addr)
 int bmp_display(ulong addr, int x, int y)
 {
        int ret;
-       struct bmp_image *bmp = (struct bmp_image *)addr;
+       struct bmp_image *bmp = map_sysmem(addr, 0);
        void *bmp_alloc_addr = NULL;
        unsigned long len;
 
@@ -236,11 +238,12 @@ int bmp_display(ulong addr, int x, int y)
                printf("There is no valid bmp file at the given address\n");
                return 1;
        }
+       addr = map_to_sysmem(bmp);
 
 #if defined(CONFIG_LCD)
-       ret = lcd_display_bitmap((ulong)bmp, x, y);
+       ret = lcd_display_bitmap(addr, x, y);
 #elif defined(CONFIG_VIDEO)
-       ret = video_display_bitmap((unsigned long)bmp, x, y);
+       ret = video_display_bitmap(addr, x, y);
 #else
 # error bmp_display() requires CONFIG_LCD or CONFIG_VIDEO
 #endif