diff options
-rw-r--r-- | arch/arm/mach-pxa/include/mach/regs-lcd.h | 1 | ||||
-rw-r--r-- | drivers/video/pxafb.c | 21 |
2 files changed, 11 insertions, 11 deletions
diff --git a/arch/arm/mach-pxa/include/mach/regs-lcd.h b/arch/arm/mach-pxa/include/mach/regs-lcd.h index c15df557fa8a..5c522263e401 100644 --- a/arch/arm/mach-pxa/include/mach/regs-lcd.h +++ b/arch/arm/mach-pxa/include/mach/regs-lcd.h | |||
@@ -48,6 +48,7 @@ | |||
48 | #define LCCR4_PAL_FOR_0 (0 << 15) | 48 | #define LCCR4_PAL_FOR_0 (0 << 15) |
49 | #define LCCR4_PAL_FOR_1 (1 << 15) | 49 | #define LCCR4_PAL_FOR_1 (1 << 15) |
50 | #define LCCR4_PAL_FOR_2 (2 << 15) | 50 | #define LCCR4_PAL_FOR_2 (2 << 15) |
51 | #define LCCR4_PAL_FOR_3 (3 << 15) | ||
51 | #define LCCR4_PAL_FOR_MASK (3 << 15) | 52 | #define LCCR4_PAL_FOR_MASK (3 << 15) |
52 | 53 | ||
53 | #define FDADR0 (0x200) /* DMA Channel 0 Frame Descriptor Address Register */ | 54 | #define FDADR0 (0x200) /* DMA Channel 0 Frame Descriptor Address Register */ |
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c index b43907d36d66..c57f909cb7a8 100644 --- a/drivers/video/pxafb.c +++ b/drivers/video/pxafb.c | |||
@@ -155,6 +155,12 @@ pxafb_setpalettereg(u_int regno, u_int red, u_int green, u_int blue, | |||
155 | val |= ((blue >> 8) & 0x000000fc); | 155 | val |= ((blue >> 8) & 0x000000fc); |
156 | ((u32 *)(fbi->palette_cpu))[regno] = val; | 156 | ((u32 *)(fbi->palette_cpu))[regno] = val; |
157 | break; | 157 | break; |
158 | case LCCR4_PAL_FOR_3: | ||
159 | val = ((red << 8) & 0x00ff0000); | ||
160 | val |= ((green >> 0) & 0x0000ff00); | ||
161 | val |= ((blue >> 8) & 0x000000ff); | ||
162 | ((u32 *)(fbi->palette_cpu))[regno] = val; | ||
163 | break; | ||
158 | } | 164 | } |
159 | 165 | ||
160 | return 0; | 166 | return 0; |
@@ -416,11 +422,6 @@ static int pxafb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) | |||
416 | return 0; | 422 | return 0; |
417 | } | 423 | } |
418 | 424 | ||
419 | static inline void pxafb_set_truecolor(u_int is_true_color) | ||
420 | { | ||
421 | /* do your machine-specific setup if needed */ | ||
422 | } | ||
423 | |||
424 | /* | 425 | /* |
425 | * pxafb_set_par(): | 426 | * pxafb_set_par(): |
426 | * Set the user defined part of the display for the specified console | 427 | * Set the user defined part of the display for the specified console |
@@ -453,11 +454,6 @@ static int pxafb_set_par(struct fb_info *info) | |||
453 | 454 | ||
454 | fbi->palette_cpu = (u16 *)&fbi->dma_buff->palette[0]; | 455 | fbi->palette_cpu = (u16 *)&fbi->dma_buff->palette[0]; |
455 | 456 | ||
456 | /* | ||
457 | * Set (any) board control register to handle new color depth | ||
458 | */ | ||
459 | pxafb_set_truecolor(fbi->fb.fix.visual == FB_VISUAL_TRUECOLOR); | ||
460 | |||
461 | if (fbi->fb.var.bits_per_pixel >= 16) | 457 | if (fbi->fb.var.bits_per_pixel >= 16) |
462 | fb_dealloc_cmap(&fbi->fb.cmap); | 458 | fb_dealloc_cmap(&fbi->fb.cmap); |
463 | else | 459 | else |
@@ -727,6 +723,7 @@ int pxafb_smart_flush(struct fb_info *info) | |||
727 | lcd_writel(fbi, LCCR1, fbi->reg_lccr1); | 723 | lcd_writel(fbi, LCCR1, fbi->reg_lccr1); |
728 | lcd_writel(fbi, LCCR2, fbi->reg_lccr2); | 724 | lcd_writel(fbi, LCCR2, fbi->reg_lccr2); |
729 | lcd_writel(fbi, LCCR3, fbi->reg_lccr3); | 725 | lcd_writel(fbi, LCCR3, fbi->reg_lccr3); |
726 | lcd_writel(fbi, LCCR4, fbi->reg_lccr4); | ||
730 | lcd_writel(fbi, FDADR0, fbi->fdadr[0]); | 727 | lcd_writel(fbi, FDADR0, fbi->fdadr[0]); |
731 | lcd_writel(fbi, FDADR6, fbi->fdadr[6]); | 728 | lcd_writel(fbi, FDADR6, fbi->fdadr[6]); |
732 | 729 | ||
@@ -995,6 +992,7 @@ static int pxafb_activate_var(struct fb_var_screeninfo *var, | |||
995 | (lcd_readl(fbi, LCCR1) != fbi->reg_lccr1) || | 992 | (lcd_readl(fbi, LCCR1) != fbi->reg_lccr1) || |
996 | (lcd_readl(fbi, LCCR2) != fbi->reg_lccr2) || | 993 | (lcd_readl(fbi, LCCR2) != fbi->reg_lccr2) || |
997 | (lcd_readl(fbi, LCCR3) != fbi->reg_lccr3) || | 994 | (lcd_readl(fbi, LCCR3) != fbi->reg_lccr3) || |
995 | (lcd_readl(fbi, LCCR4) != fbi->reg_lccr4) || | ||
998 | (lcd_readl(fbi, FDADR0) != fbi->fdadr[0]) || | 996 | (lcd_readl(fbi, FDADR0) != fbi->fdadr[0]) || |
999 | (lcd_readl(fbi, FDADR1) != fbi->fdadr[1])) | 997 | (lcd_readl(fbi, FDADR1) != fbi->fdadr[1])) |
1000 | pxafb_schedule_work(fbi, C_REENABLE); | 998 | pxafb_schedule_work(fbi, C_REENABLE); |
@@ -1041,6 +1039,7 @@ static void pxafb_enable_controller(struct pxafb_info *fbi) | |||
1041 | return; | 1039 | return; |
1042 | 1040 | ||
1043 | /* Sequence from 11.7.10 */ | 1041 | /* Sequence from 11.7.10 */ |
1042 | lcd_writel(fbi, LCCR4, fbi->reg_lccr4); | ||
1044 | lcd_writel(fbi, LCCR3, fbi->reg_lccr3); | 1043 | lcd_writel(fbi, LCCR3, fbi->reg_lccr3); |
1045 | lcd_writel(fbi, LCCR2, fbi->reg_lccr2); | 1044 | lcd_writel(fbi, LCCR2, fbi->reg_lccr2); |
1046 | lcd_writel(fbi, LCCR1, fbi->reg_lccr1); | 1045 | lcd_writel(fbi, LCCR1, fbi->reg_lccr1); |
@@ -1313,6 +1312,7 @@ static void pxafb_decode_mach_info(struct pxafb_info *fbi, | |||
1313 | 1312 | ||
1314 | fbi->cmap_inverse = inf->cmap_inverse; | 1313 | fbi->cmap_inverse = inf->cmap_inverse; |
1315 | fbi->cmap_static = inf->cmap_static; | 1314 | fbi->cmap_static = inf->cmap_static; |
1315 | fbi->lccr4 = inf->lccr4; | ||
1316 | 1316 | ||
1317 | switch (lcd_conn & LCD_TYPE_MASK) { | 1317 | switch (lcd_conn & LCD_TYPE_MASK) { |
1318 | case LCD_TYPE_MONO_STN: | 1318 | case LCD_TYPE_MONO_STN: |
@@ -1337,7 +1337,6 @@ static void pxafb_decode_mach_info(struct pxafb_info *fbi, | |||
1337 | /* fall back to backward compatibility way */ | 1337 | /* fall back to backward compatibility way */ |
1338 | fbi->lccr0 = inf->lccr0; | 1338 | fbi->lccr0 = inf->lccr0; |
1339 | fbi->lccr3 = inf->lccr3; | 1339 | fbi->lccr3 = inf->lccr3; |
1340 | fbi->lccr4 = inf->lccr4; | ||
1341 | goto decode_mode; | 1340 | goto decode_mode; |
1342 | } | 1341 | } |
1343 | 1342 | ||