*/
 static void cp_clcd_enable(struct clcd_fb *fb)
 {
-       cm_control(CM_CTRL_LCDMUXSEL_MASK, CM_CTRL_LCDMUXSEL_VGA);
+       u32 val;
+
+       if (fb->fb.var.bits_per_pixel <= 8)
+               val = CM_CTRL_LCDMUXSEL_VGA_8421BPP;
+       else if (fb->fb.var.bits_per_pixel <= 16)
+               val = CM_CTRL_LCDMUXSEL_VGA_16BPP;
+       else
+               val = 0; /* no idea for this, don't trust the docs */
+
+       cm_control(CM_CTRL_LCDMUXSEL_MASK|
+                  CM_CTRL_LCDEN0|
+                  CM_CTRL_LCDEN1|
+                  CM_CTRL_STATIC1|
+                  CM_CTRL_STATIC2|
+                  CM_CTRL_STATIC|
+                  CM_CTRL_n24BITEN, val);
 }
 
 static unsigned long framesize = SZ_1M;
 
 #define CM_CTRL_LCDBIASDN              (1 << 10)
 #define CM_CTRL_LCDMUXSEL_MASK         (7 << 11)
 #define CM_CTRL_LCDMUXSEL_GENLCD       (1 << 11)
-#define CM_CTRL_LCDMUXSEL_SHARPLCD1    (3 << 11)
-#define CM_CTRL_LCDMUXSEL_SHARPLCD2    (4 << 11)
-#define CM_CTRL_LCDMUXSEL_VGA          (7 << 11)
+#define CM_CTRL_LCDMUXSEL_VGA_16BPP    (2 << 11)
+#define CM_CTRL_LCDMUXSEL_SHARPLCD     (3 << 11)
+#define CM_CTRL_LCDMUXSEL_VGA_8421BPP  (4 << 11)
 #define CM_CTRL_LCDEN0                 (1 << 14)
 #define CM_CTRL_LCDEN1                 (1 << 15)
 #define CM_CTRL_STATIC1                        (1 << 16)