Hello.
Sergei Shtylylov wrote:
This driver was using an incorrect typecast when setting pseudopalette,
hence were the blue strips on the black char background. As this driver
happens to be maintaned by Linux/MIPS, here's the patch (I've also
noticed a
typo in the head comment, hence comes another hunk)...
Have noticed that regno check in smi_setcolreg() is too relaxed as
pseudo-palette has only 16 entries. So, had to update the patch.
WBR, Sergei
Signed-off-by: Konstantin Baydarov <kbaidarov@xxxxxxxxxxxxx>
Signed-off-by: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx>
diff --git a/drivers/video/smivgxfb.c b/drivers/video/smivgxfb.c
index d5755c5..944ff4a 100644
--- a/drivers/video/smivgxfb.c
+++ b/drivers/video/smivgxfb.c
@@ -1,5 +1,5 @@
/***************************************************************************
- * Silicon Motion VoyaagerGX framebuffer driver
+ * Silicon Motion VoyagerGX framebuffer driver
*
* ported to 2.6 by Embedded Alley Solutions, Inc
* Copyright (C) 2005 Embedded Alley Solutions, Inc
@@ -159,10 +159,10 @@ smi_setcolreg(unsigned regno, unsigned r
unsigned blue, unsigned transp,
struct fb_info *info)
{
- if (regno > 255)
+ if (regno > 15)
return 1;
- ((u16 *)(info->pseudo_palette))[regno] =
+ ((u32 *)(info->pseudo_palette))[regno] =
((red & 0xf800) >> 0) |
((green & 0xfc00) >> 5) |
((blue & 0xf800) >> 11);
@@ -318,9 +318,9 @@ static int __devinit vgx_pci_probe(struc
if (!info.pseudo_palette) {
return -ENOMEM;
}
- memset(info.pseudo_palette, 0, sizeof(u32) *16);
+ memset(info.pseudo_palette, 0, sizeof(u32) * 16);
- fb_alloc_cmap(&info.cmap,256,0);
+ fb_alloc_cmap(&info.cmap, 256, 0);
smi_setmode();