From: Nikita Kiryanov Date: Tue, 3 Feb 2015 11:32:22 +0000 (+0200) Subject: lcd: atmel: move atmel-specific fb_put_word to atmel_lcdfb X-Git-Tag: v2015.04-rc2~34^2~10 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=b3d12e9bca1b23a537d77af2ae019cddc59f2031;p=u-boot lcd: atmel: move atmel-specific fb_put_word to atmel_lcdfb Reduce the amount of platform-specific code in common/lcd.c by moving Atmel implementation of fb_put_word() to atmel_lcdfb.c. Since we must also have a default implementation for everybody else, make the remainder of the code into a weak function. Signed-off-by: Nikita Kiryanov Reviewed-by: Simon Glass Acked-by: Bo Shen Tested-by: Bo Shen Tested-by: Josh Wu Cc: Bo Shen Cc: Simon Glass Cc: Anatolij Gustschin --- diff --git a/common/lcd.c b/common/lcd.c index 0f6c2e4c25..f17b35b7fe 100644 --- a/common/lcd.c +++ b/common/lcd.c @@ -642,20 +642,11 @@ static void lcd_display_rle8_bitmap(bmp_image_t *bmp, ushort *cmap, uchar *fb, #endif #if defined(CONFIG_BMP_16BPP) -#if defined(CONFIG_ATMEL_LCD_BGR555) -static inline void fb_put_word(uchar **fb, uchar **from) -{ - *(*fb)++ = (((*from)[0] & 0x1f) << 2) | ((*from)[1] & 0x03); - *(*fb)++ = ((*from)[0] & 0xe0) | (((*from)[1] & 0x7c) >> 2); - *from += 2; -} -#else -static inline void fb_put_word(uchar **fb, uchar **from) +__weak void fb_put_word(uchar **fb, uchar **from) { *(*fb)++ = *(*from)++; *(*fb)++ = *(*from)++; } -#endif #endif /* CONFIG_BMP_16BPP */ int lcd_display_bitmap(ulong bmp_image, int x, int y) diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c index fa6a82cfaf..c7991cd034 100644 --- a/drivers/video/atmel_lcdfb.c +++ b/drivers/video/atmel_lcdfb.c @@ -34,6 +34,15 @@ ushort *configuration_get_cmap(void) return (ushort *)(panel_info.mmio + ATMEL_LCDC_LUT(0)); } +#if defined(CONFIG_BMP_16BPP) && defined(CONFIG_ATMEL_LCD_BGR555) +void fb_put_word(uchar **fb, uchar **from) +{ + *(*fb)++ = (((*from)[0] & 0x1f) << 2) | ((*from)[1] & 0x03); + *(*fb)++ = ((*from)[0] & 0xe0) | (((*from)[1] & 0x7c) >> 2); + *from += 2; +} +#endif + void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue) { #if defined(CONFIG_ATMEL_LCD_BGR555)