Fix bitmap display for atmel lcd controller
authorMark Jackson <mpfj@mimc.co.uk>
Fri, 1 Aug 2008 08:48:29 +0000 (09:48 +0100)
committerWolfgang Denk <wd@denx.de>
Fri, 1 Aug 2008 10:42:50 +0000 (12:42 +0200)
The current lcd_display_bitmap() function does not work properly
for the Atmel LCD controller.

2 fixes need to be done:-

(a) when setting the colour map, use the lcd_setcolreg() function
    as provided by the Atmel driver
(b) the data is never actually written to the lcd framebuffer !!

Signed-off-by: Mark Jackson <mpfj@mimc.co.uk>
common/lcd.c

index 3bbc7bafaf190d03ebff5faa6705d207658cfaf0..e3347ec93c646da23c2194a5e63cc631df6f078c 100644 (file)
@@ -678,6 +678,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
                /* Set color map */
                for (i=0; i<colors; ++i) {
                        bmp_color_table_entry_t cte = bmp->color_table[i];
+#if !defined(CONFIG_ATMEL_LCD)
                        ushort colreg =
                                ( ((cte.red)   << 8) & 0xf800) |
                                ( ((cte.green) << 3) & 0x07e0) |
@@ -691,6 +692,9 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
                        cmap++;
 #elif defined(CONFIG_MPC823)
                        cmap--;
+#endif
+#else /* CONFIG_ATMEL_LCD */
+                       lcd_setcolreg(i, cte.red, cte.green, cte.blue);
 #endif
                }
        }
@@ -727,7 +731,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
        for (i = 0; i < height; ++i) {
                WATCHDOG_RESET();
                for (j = 0; j < width ; j++)
-#if defined(CONFIG_PXA250)
+#if defined(CONFIG_PXA250) || defined(CONFIG_ATMEL_LCD)
                        *(fb++) = *(bmap++);
 #elif defined(CONFIG_MPC823) || defined(CONFIG_MCC200)
                        *(fb++)=255-*(bmap++);