[U-Boot] [PATCH 2/2] EXYNOS: draw 32bpp bitmap TIZEN logo

Anatolij Gustschin agust at denx.de
Tue Apr 24 17:39:40 CEST 2012


Hi,

On Mon, 23 Apr 2012 10:47:10 +0900
Donghwa Lee <dh09.lee at samsung.com> wrote:

> This patches support drawing 32bpp bitmap TIZEN logo in exynos fb.
> asm/arch/trats_logo.h data is compressed by zip and decomressed at

Did you use "gzip" to compress the trats.bmp bitmap? I suppose so,
but "gunzip" can't uncompress it:
$ gunzip img.gz
 gzip: img.gz: unexpected end of file

"gunzip -c img.gz > trats.bmp" works and I get a 520x120 32bpp bmp
file. The size of your compressed array is 80681. Probably one or
more bytes are missing at the end. Please check/fix this.

...
> diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c
> index 0eb7f58..c111855 100644
> --- a/drivers/video/exynos_fb.c
> +++ b/drivers/video/exynos_fb.c
...
> @@ -67,6 +69,38 @@ static void exynos_lcd_init(vidinfo_t *vid)
>  	exynos_fimd_lcd_init(vid);
>  }
>  
> +static void draw_logo(void *lcdbase)
> +{
> +	int x, y;
> +	unsigned int in_len, width, height;
> +	unsigned long out_len =
> +		(ARRAY_SIZE(trats_logo) * sizeof(*trats_logo)) + 1;

 * sizeof(*trats_logo) is not needed here, it is always 1.
Also this out_len variable should be named differently, src_len
is a better name i think.

> +	void *dst = NULL;
> +
> +	width = TRATS_LOGO_WIDTH;
> +	height = TRATS_LOGO_HEIGHT;
> +	x = ((panel_width - width) >> 1);
> +	y = ((panel_height - height) >> 1) - 5;

in your 1/2 path for common/lcd.c you are adding an
#ifndef CONFIG_EXYNOS_FB
#else
#endif

block for exynosfb specific drawing offset calculation.
The only difference is that you are using (y + height)
instead of (y + height - 1). This is not needed, just
set use "y = ((panel_height - height) >> 1) - 4;" here.

> +
> +	in_len = width * height * 8;

Please better use "in_len = CONFIG_SYS_VIDEO_LOGO_MAX_SIZE;" here
and define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE to be big enough to
contain a bitmap of your max. bitmap size (i.e. 520 * 120 * 4 +
space for bmp header/color table, so 300 KiB would be okay).

...
> diff --git a/include/configs/trats.h b/include/configs/trats.h
> index 5f913ca..b326035 100644
> --- a/include/configs/trats.h
> +++ b/include/configs/trats.h
> @@ -216,9 +216,11 @@
>  /* LCD */
>  #define CONFIG_EXYNOS_FB
>  #define CONFIG_LCD
> +#define CONFIG_CMD_BMP
>  #define CONFIG_FB_ADDR		0x52504000
>  #define CONFIG_S6E8AX0
>  #define CONFIG_EXYNOS_MIPI_DSIM
> -#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE	(1280 * 720 * 4)
> +#define CONFIG_VIDEO_BMP_GZIP
> +#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE	(500 * 120 * 4)

This should be bigger than the bitmap resolution. The bitmap file
contains the bmp header and maybe a color table, so for your current
bitmap define it to be 250000 bytes at least.

Thanks,
Anatolij


More information about the U-Boot mailing list