aboutsummaryrefslogtreecommitdiff
path: root/drivers/mfd/glamo/glamo-display.c
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2009-08-04 21:34:34 +0100
committerThomas White <taw@bitwiz.org.uk>2009-08-04 21:34:34 +0100
commitf3f88c9cd448361f2e96023894fe2b4701488dd4 (patch)
treec6f41b4af62d9f3d36dc7b4ee0760e319b3bdb3e /drivers/mfd/glamo/glamo-display.c
parent8bb0c5afa71d38dbc823b30aa9e75371becc2c31 (diff)
Keep glamo-kms-fb off the hardware registers
This removes the last remaining instance of glamo-kms-fb touching Glamo's registers directly. Signed-off-by: Thomas White <taw@bitwiz.org.uk>
Diffstat (limited to 'drivers/mfd/glamo/glamo-display.c')
-rw-r--r--drivers/mfd/glamo/glamo-display.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/mfd/glamo/glamo-display.c b/drivers/mfd/glamo/glamo-display.c
index 5e0e9434146..969e8fb1dcb 100644
--- a/drivers/mfd/glamo/glamo-display.c
+++ b/drivers/mfd/glamo/glamo-display.c
@@ -837,8 +837,20 @@ int glamo_display_init(struct drm_device *dev)
ARRAY_SIZE(lcd_init_script));
if (list_empty(&dev->mode_config.fb_kernel_list)) {
- int ret;
- ret = glamofb_create(dev, 480, 640, 480, 640, &glamo_fb);
+ int ret, cols, cols_g;
+ cols_g = reg_read_lcd(gdrm, GLAMO_REG_LCD_MODE3) & 0xc000;
+ switch ( cols_g ) {
+ case GLAMO_LCD_SRC_RGB565 :
+ cols = GLAMO_FB_RGB565; break;
+ case GLAMO_LCD_SRC_ARGB1555 :
+ cols = GLAMO_FB_ARGB1555; break;
+ case GLAMO_LCD_SRC_ARGB4444 :
+ cols = GLAMO_FB_ARGB4444; break;
+ default :
+ printk(KERN_WARNING "Unrecognised LCD colour mode\n");
+ cols = GLAMO_FB_RGB565; break; /* Take a guess */
+ }
+ ret = glamofb_create(dev, 480, 640, 480, 640, cols, &glamo_fb);
if (ret) return -EINVAL;
}