[PATCH] ARM: IntegratorCP: Fix CLCD MUX selection values
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Sat, 30 Apr 2005 22:32:38 +0000 (23:32 +0100)
committerRussell King <rmk@dyn-67.arm.linux.org.uk>
Sat, 30 Apr 2005 22:32:38 +0000 (23:32 +0100)
The documentation on these values seems to be rather wrong.
These values have been determined by mere trial and error.

Signed-off-by: Russell King <rmk@arm.linux.org.uk>
arch/arm/mach-integrator/integrator_cp.c
include/asm-arm/arch-integrator/cm.h

index 68e15c3..3b948e8 100644 (file)
@@ -420,7 +420,22 @@ static struct clcd_panel vga = {
  */
 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;
index d31c1a7..1ab353e 100644 (file)
@@ -24,9 +24,9 @@ void cm_control(u32, u32);
 #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)