lcd: fix the color testpattern in 16bit mode
authorAndreas Neubacher <neubacher.andreas@gmail.com>
Thu, 21 Jan 2016 12:06:32 +0000 (13:06 +0100)
committerAnatolij Gustschin <agust@denx.de>
Sat, 23 Jan 2016 23:38:40 +0000 (00:38 +0100)
The testpattern of the lcd was only working in 8bit mode(2x3 tiles in
different colors). With this patch now 8bit and 16bit is supported.
In 16bit mode there are 2x4 tiles in different colors.
The number of LCD-colors is defined in the include/configs/<boardfile>.h

Signed-off-by: Andreas Neubacher <neubacher.andreas@gmail.com>
Signed-off-by: Anatolij Gustschin <agust@denx.de>
common/lcd.c
include/lcd.h

index 2f3594a4176cb673bc9bfa095a58b6c22098d059..51705adeaf79918bce59a374a3319c6cb98a3cce 100644 (file)
@@ -89,13 +89,24 @@ static void lcd_stub_puts(struct stdio_dev *dev, const char *s)
 /* Small utility to check that you got the colours right */
 #ifdef LCD_TEST_PATTERN
 
+#if LCD_BPP == LCD_COLOR8
 #define        N_BLK_VERT      2
 #define        N_BLK_HOR       3
 
 static int test_colors[N_BLK_HOR * N_BLK_VERT] = {
        CONSOLE_COLOR_RED,      CONSOLE_COLOR_GREEN,    CONSOLE_COLOR_YELLOW,
        CONSOLE_COLOR_BLUE,     CONSOLE_COLOR_MAGENTA,  CONSOLE_COLOR_CYAN,
+}; /*LCD_BPP == LCD_COLOR8 */
+
+#elif LCD_BPP == LCD_COLOR16
+#define        N_BLK_VERT      2
+#define        N_BLK_HOR       4
+
+static int test_colors[N_BLK_HOR * N_BLK_VERT] = {
+       CONSOLE_COLOR_RED,      CONSOLE_COLOR_GREEN,    CONSOLE_COLOR_YELLOW,   CONSOLE_COLOR_BLUE,
+       CONSOLE_COLOR_MAGENTA,  CONSOLE_COLOR_CYAN,     CONSOLE_COLOR_GREY,     CONSOLE_COLOR_WHITE,
 };
+#endif /*LCD_BPP == LCD_COLOR16 */
 
 static void test_pattern(void)
 {
@@ -104,12 +115,15 @@ static void test_pattern(void)
        ushort v_step = (v_max + N_BLK_VERT - 1) / N_BLK_VERT;
        ushort h_step = (h_max + N_BLK_HOR  - 1) / N_BLK_HOR;
        ushort v, h;
+#if LCD_BPP == LCD_COLOR8
        uchar *pix = (uchar *)lcd_base;
+#elif LCD_BPP == LCD_COLOR16
+       ushort *pix = (ushort *)lcd_base;
+#endif
 
        printf("[LCD] Test Pattern: %d x %d [%d x %d]\n",
                h_max, v_max, h_step, v_step);
 
-       /* WARNING: Code silently assumes 8bit/pixel */
        for (v = 0; v < v_max; ++v) {
                uchar iy = v / v_step;
                for (h = 0; h < h_max; ++h) {
index d7651a8f0801e4c14fe6c786e2c1815a2a5afb45..f76fca77f9f57f03fd2a79bd4e54c470f7d0ee96 100644 (file)
@@ -195,8 +195,15 @@ void lcd_sync(void);
 #define CONSOLE_COLOR_WHITE    0x00ffffff      /* Must remain last / highest */
 #define NBYTES(bit_code)       (NBITS(bit_code) >> 3)
 #else /* 16bpp color definitions */
-#define CONSOLE_COLOR_BLACK    0x0000
-#define CONSOLE_COLOR_WHITE    0xffff          /* Must remain last / highest */
+# define CONSOLE_COLOR_BLACK   0x0000
+# define CONSOLE_COLOR_RED     0xF800
+# define CONSOLE_COLOR_GREEN   0x07E0
+# define CONSOLE_COLOR_YELLOW  0xFFE0
+# define CONSOLE_COLOR_BLUE    0x001F
+# define CONSOLE_COLOR_MAGENTA 0xF81F
+# define CONSOLE_COLOR_CYAN    0x07FF
+# define CONSOLE_COLOR_GREY    0xC618
+# define CONSOLE_COLOR_WHITE   0xffff          /* Must remain last / highest */
 #endif /* color definitions */
 
 #if LCD_BPP == LCD_COLOR16