[U-Boot] [PATCH 7/7] common lcd: simplify lcd_display_bitmap

Anatolij Gustschin agust at denx.de
Fri Jun 8 15:38:39 CEST 2012


Hi,

On Thu, 24 May 2012 14:42:44 +0300
Igor Grinberg <grinberg at compulab.co.il> wrote:

> From: Nikita Kiryanov <nikita at compulab.co.il>
> 
> Move highly platform dependant code into its own functions to reduce the
> number of #ifdefs in lcd_display_bitmap
> 
> Signed-off-by: Nikita Kiryanov <nikita at compulab.co.il>
> Signed-off-by: Igor Grinberg <grinberg at compulab.co.il>
> ---
>  common/lcd.c |   44 +++++++++++++++++++++++++++-----------------
>  1 files changed, 27 insertions(+), 17 deletions(-)
> 
> diff --git a/common/lcd.c b/common/lcd.c
> index 199a8c2..a55ee58 100644
> --- a/common/lcd.c
> +++ b/common/lcd.c
> @@ -638,6 +638,29 @@ static void splash_align_axis(int *axis, unsigned long panel_size,
...
> +#if defined(CONFIG_BMP_16BPP)
> +#if defined(CONFIG_ATMEL_LCD_BGR555)
> +static inline void configuration_fb_puts(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 configuration_fb_puts(uchar *fb, uchar *from)
> +{
> +	*(fb++) = *(from++);
> +	*(fb++) = *(from++);
> +}
> +#endif
> +#endif /* CONFIG_BMP_16BPP */

This won't work. The original code increments 'fb' and 'bmap' pointers
in the inner for loop. Using this function in the inner loop won't
increment the pointers as needed, as these will only be incremented in
the function itself (as local variables).

Also please use a different name for the macro, CONFIGURATION_FB_PUTB
isn't a descriptive name. FB_PUT_PIXEL or similar perhaps?

Thanks,

Anatolij


More information about the U-Boot mailing list