Reduce the bitmap_plot #ifdef complexity by extracting MPC823 specific code for setting cmap into its own implementation of lcd_logo_set_cmap(), implemented in mpc8xx_lcd.c. In the MPC823 implementation, ARRAY_SIZE(bmp_logo_palette) is switched for BMP_LOGO_COLORS to avoid having to include bmp_logo_data.h, which would cause a compilation error because the logo data and palette arrays would be defined twice.
Signed-off-by: Nikita Kiryanov <nik...@compulab.co.il> Cc: Simon Glass <s...@chromium.org> Cc: Anatolij Gustschin <ag...@denx.de> --- common/lcd.c | 10 +--------- drivers/video/mpc8xx_lcd.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/common/lcd.c b/common/lcd.c index 7fcac1d..355c144 100644 --- a/common/lcd.c +++ b/common/lcd.c @@ -396,10 +396,6 @@ void bitmap_plot(int x, int y) uchar *bmap; uchar *fb; ushort *fb16; -#if defined(CONFIG_MPC823) - immap_t *immr = (immap_t *) CONFIG_SYS_IMMR; - cpm8xx_t *cp = &(immr->im_cpm); -#endif unsigned bpix = NBITS(panel_info.vl_bpix); debug("Logo: width %d height %d colors %d cmap %d\n", @@ -415,16 +411,12 @@ void bitmap_plot(int x, int y) * cmap was set to the source palette, so no change is done. * This avoids even more ifdefs in the next stanza */ -#if defined(CONFIG_MPC823) - cmap = (ushort *) &(cp->lcd_cmap[BMP_LOGO_OFFSET * sizeof(ushort)]); -#else cmap = configuration_get_cmap(); -#endif WATCHDOG_RESET(); /* Set color map */ -#ifdef CONFIG_ATMEL_LCD +#if defined(CONFIG_ATMEL_LCD) || defined(CONFIG_MPC823) lcd_logo_set_cmap(); #else for (i = 0; i < ARRAY_SIZE(bmp_logo_palette); ++i) { diff --git a/drivers/video/mpc8xx_lcd.c b/drivers/video/mpc8xx_lcd.c index 190c05a..faa58c0 100644 --- a/drivers/video/mpc8xx_lcd.c +++ b/drivers/video/mpc8xx_lcd.c @@ -371,6 +371,21 @@ void fb_put_byte(uchar **fb, uchar **from) } #endif +#ifdef CONFIG_LCD_LOGO +#include <bmp_logo.h> +void lcd_logo_set_cmap(void) +{ + int i; + ushort *cmap; + immap_t *immr = (immap_t *)CONFIG_SYS_IMMR; + cpm8xx_t *cp = &(immr->im_cpm); + cmap = (ushort *)&(cp->lcd_cmap[BMP_LOGO_OFFSET * sizeof(ushort)]); + + for (i = 0; i < BMP_LOGO_COLORS; ++i) + *cmap++ = bmp_logo_palette[i]; +} +#endif + void lcd_enable (void) { volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR; -- 1.9.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot