summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2009-03-18 11:29:31 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2009-06-23 13:16:11 +0200
commit0d24f22db9f329d991649dfe8888ee7fe7aba383 (patch)
treefccfeac8abc4acf499da017b731677ccd9408a78
parentad3f519768a13176ea7bd1a0cb6ab17f202f1dec (diff)
downloadlinux-2.6-0d24f22db9f329d991649dfe8888ee7fe7aba383.tar.gz
linux-2.6-0d24f22db9f329d991649dfe8888ee7fe7aba383.tar.xz
imxfb: calculate bpix value from bits_per_pixel
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/plat-mxc/include/mach/imxfb.h3
-rw-r--r--drivers/video/imxfb.c19
2 files changed, 20 insertions, 2 deletions
diff --git a/arch/arm/plat-mxc/include/mach/imxfb.h b/arch/arm/plat-mxc/include/mach/imxfb.h
index 9f0101157ec..66259f6158e 100644
--- a/arch/arm/plat-mxc/include/mach/imxfb.h
+++ b/arch/arm/plat-mxc/include/mach/imxfb.h
@@ -13,7 +13,8 @@
#define PCR_BPIX_4 (2 << 25)
#define PCR_BPIX_8 (3 << 25)
#define PCR_BPIX_12 (4 << 25)
-#define PCR_BPIX_16 (4 << 25)
+#define PCR_BPIX_16 (5 << 25)
+#define PCR_BPIX_18 (6 << 25)
#define PCR_PIXPOL (1 << 24)
#define PCR_FLMPOL (1 << 23)
#define PCR_LPPOL (1 << 22)
diff --git a/drivers/video/imxfb.c b/drivers/video/imxfb.c
index 15a0ee6d8e2..a8c41cb60ff 100644
--- a/drivers/video/imxfb.c
+++ b/drivers/video/imxfb.c
@@ -33,6 +33,7 @@
#include <linux/math64.h>
#include <mach/imxfb.h>
+#include <mach/hardware.h>
/*
* Complain if VAR is out of range.
@@ -530,8 +531,24 @@ static int imxfb_activate_var(struct fb_var_screeninfo *var, struct fb_info *inf
lcd_clk / pcr);
}
+ switch (var->bits_per_pixel) {
+ case 32:
+ pcr |= PCR_BPIX_18;
+ break;
+ case 16:
+ default:
+ if (cpu_is_mx1())
+ pcr |= PCR_BPIX_12;
+ else
+ pcr |= PCR_BPIX_16;
+ break;
+ case 8:
+ pcr |= PCR_BPIX_8;
+ break;
+ }
+
/* add sync polarities */
- pcr |= fbi->pcr & ~0x3F;
+ pcr |= fbi->pcr & ~(0x3f | (7 << 25));
writel(pcr, fbi->regs + LCDC_PCR);
writel(fbi->pwmr, fbi->regs + LCDC_PWMR);