#define CM_CTRL_LCDBIASDN              (1 << 10)
 #define CM_CTRL_LCDMUXSEL_MASK         (7 << 11)
 #define CM_CTRL_LCDMUXSEL_GENLCD       (1 << 11)
-#define CM_CTRL_LCDMUXSEL_VGA_16BPP    (2 << 11)
+#define CM_CTRL_LCDMUXSEL_VGA565_TFT555        (2 << 11)
 #define CM_CTRL_LCDMUXSEL_SHARPLCD     (3 << 11)
-#define CM_CTRL_LCDMUXSEL_VGA_8421BPP  (4 << 11)
+#define CM_CTRL_LCDMUXSEL_VGA555_TFT555        (4 << 11)
 #define CM_CTRL_LCDEN0                 (1 << 14)
 #define CM_CTRL_LCDEN1                 (1 << 15)
 #define CM_CTRL_STATIC1                        (1 << 16)
 
  */
 static void cp_clcd_enable(struct clcd_fb *fb)
 {
-       u32 val;
+       struct fb_var_screeninfo *var = &fb->fb.var;
+       u32 val = CM_CTRL_STATIC1 | CM_CTRL_STATIC2;
 
-       if (fb->fb.var.bits_per_pixel <= 8)
-               val = CM_CTRL_LCDMUXSEL_VGA_8421BPP;
+       if (var->bits_per_pixel <= 8 ||
+           (var->bits_per_pixel == 16 && var->green.length == 5))
+               /* Pseudocolor, RGB555, BGR555 */
+               val |= CM_CTRL_LCDMUXSEL_VGA555_TFT555;
        else if (fb->fb.var.bits_per_pixel <= 16)
-               val = CM_CTRL_LCDMUXSEL_VGA_16BPP
-                       | CM_CTRL_LCDEN0 | CM_CTRL_LCDEN1
-                       | CM_CTRL_STATIC1 | CM_CTRL_STATIC2;
+               /* truecolor RGB565 */
+               val |= CM_CTRL_LCDMUXSEL_VGA565_TFT555;
        else
                val = 0; /* no idea for this, don't trust the docs */