[U-Boot] [PATCH] cfb_console: force natural alignment of unzipped bitmap images
Eric Nelson
eric.nelson at boundarydevices.com
Sat Feb 22 22:04:31 CET 2014
Bitmaps contain 32-bit integers aligned at offsets of
+2, +6 within the bmp_header structure. This patch
forces them to be aligned properly when gzipped
bitmaps are used.
Refer to these files for more details:
doc/README.displaying-bmps
doc/README.arm-unaligned-accesses
Signed-off-by: Eric Nelson <eric.nelson at boundarydevices.com>
---
drivers/video/cfb_console.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index 6db4073..2209148 100644
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -1473,7 +1473,10 @@ int video_display_bitmap(ulong bmp_image, int x, int y)
printf("Error: malloc in gunzip failed!\n");
return 1;
}
- if (gunzip(dst, CONFIG_SYS_VIDEO_LOGO_MAX_SIZE,
+ /* NB: we need to force offset of +2
+ * See doc/README.displaying-bmps
+ */
+ if (gunzip(dst+2, CONFIG_SYS_VIDEO_LOGO_MAX_SIZE-2,
(uchar *) bmp_image,
&len) != 0) {
printf("Error: no valid bmp or bmp.gz image at %lx\n",
@@ -1489,7 +1492,7 @@ int video_display_bitmap(ulong bmp_image, int x, int y)
/*
* Set addr to decompressed image
*/
- bmp = (bmp_image_t *) dst;
+ bmp = (bmp_image_t *)(dst+2);
if (!((bmp->header.signature[0] == 'B') &&
(bmp->header.signature[1] == 'M'))) {
--
1.8.3.2
More information about the U-Boot
mailing list