From: John Rigby Date: Wed, 19 Nov 2008 20:57:34 +0000 (-0700) Subject: ADS5121 DIU Add diu_bmp_addr env X-Git-Tag: v2009.03-rc1~109^2~7^2~3 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=4c154252c480b13f69ce1b71a9530b0515da76a6;p=u-boot ADS5121 DIU Add diu_bmp_addr env Add support for using a bmp other than FSL_Logo_BMP for the DIU splash screen. Can now set the env var "diu_bmp_addr" to the address of a BMP in flash to use instead of the default FSL_Logo_BMP. Signed-off-by: Martha Marx Signed-off-by: John Rigby --- diff --git a/board/ads5121/ads5121_diu.c b/board/ads5121/ads5121_diu.c index 565b63da4d..41a135314f 100644 --- a/board/ads5121/ads5121_diu.c +++ b/board/ads5121/ads5121_diu.c @@ -65,16 +65,40 @@ void diu_set_pixel_clock(unsigned int pixclock) debug("DIU: Modified value of CLKDVDR = 0x%08x\n", *clkdvdr); } +char *valid_bmp(char *addr) +{ + unsigned long h_addr; + + h_addr = simple_strtoul(addr, NULL, 16); + if (h_addr < CONFIG_SYS_FLASH_BASE || + h_addr >= (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_FLASH_SIZE - 1)) { + printf("bmp addr %lx is not a valid flash address\n", h_addr); + return 0; + } else if ((*(char *)(h_addr) != 'B') || (*(char *)(h_addr+1) != 'M')) { + printf("bmp addr is not a bmp\n"); + return 0; + } else + return (char *)h_addr; +} + int ads5121_diu_init(void) { unsigned int pixel_format; + char *bmp = NULL; + char *bmp_env; xres = 1024; yres = 768; pixel_format = 0x88883316; - return fsl_diu_init(xres, pixel_format, 0, - (unsigned char *)FSL_Logo_BMP); + debug("ads5121_diu_init\n"); + bmp_env = getenv("diu_bmp_addr"); + if (bmp_env) { + bmp = valid_bmp(bmp_env); + } + if (!bmp) + bmp = FSL_Logo_BMP; + return fsl_diu_init(xres, pixel_format, 0, (unsigned char *)bmp); } int ads5121diu_init_show_bmp(cmd_tbl_t *cmdtp,