matroxfb: Color setting fixes
PATCH 1/5 matroxfb: Color setting fixes
- the pseudo_palette is only 16 elements long.
- do not write to the pseudo_palette if regno (array index) is more than 15
- remove code that writes to the 17th entry of the pseudo_palette
---
Petr,
Here's another attempt. Let me know if I missed anything.
Tony
drivers/video/matrox/matroxfb_accel.c | 9 ++------- drivers/video/matrox/matroxfb_base.c | 4 ++++ drivers/video/matrox/matroxfb_base.h | 2 +- drivers/video/matrox/matroxfb_crtc2.c | 6 ------ drivers/video/matrox/matroxfb_crtc2.h | 2 +- 5 files changed, 8 insertions(+), 15 deletions(-)
drivers/video/matrox/matroxfb_accel.c +2 -7
@@ -145,13 +145,10 @@ void matrox_cfbX_init(WPMINFO2) {ACCESS_FBINFO (fbops).fb_imageblit = matroxfb_imageblit; }break ; -case 16 :if (ACCESS_FBINFO (fbcon).var.green.length ==5 ) { +case 16 :if (ACCESS_FBINFO (fbcon).var.green.length ==5 ) maccess =0xC0000001 ; -ACCESS_FBINFO (cmap[16 ]) =0x7FFF7FFF ; - }else { +else maccess =0x40000001 ; -ACCESS_FBINFO (cmap[16 ]) =0xFFFFFFFF ; - } mopmode =M_OPMODE_16BPP ;if (accel) {ACCESS_FBINFO (fbops).fb_copyarea = matroxfb_copyarea;
@@ -161,7 +158,6 @@ void matrox_cfbX_init(WPMINFO2) {break ;case 24 : maccess =0x00000003 ; mopmode =M_OPMODE_24BPP ; -ACCESS_FBINFO (cmap[16 ]) =0xFFFFFFFF ;if (accel) {ACCESS_FBINFO (fbops).fb_copyarea = matroxfb_copyarea;ACCESS_FBINFO (fbops).fb_fillrect = matroxfb_fillrect;
@@ -170,7 +166,6 @@ void matrox_cfbX_init(WPMINFO2) {break ;case 32 : maccess =0x00000002 ; mopmode =M_OPMODE_32BPP ; -ACCESS_FBINFO (cmap[16 ]) =0xFFFFFFFF ;if (accel) {ACCESS_FBINFO (fbops).fb_copyarea = matroxfb_copyarea;ACCESS_FBINFO (fbops).fb_fillrect = matroxfb_fillrect;
drivers/video/matrox/matroxfb_base.c +4 -0
@@ -679,6 +679,8 @@ #endifmga_outb (M_DAC_VAL , blue);break ;case 16 : +if (regno >=16 ) +break ; {u_int16_t col = (red << ACCESS_FBINFO(fbcon).var.red.offset) |
@@ -690,6 +692,8 @@ #endifbreak ;case 24 :case 32 : +if (regno >=16 ) +break ;ACCESS_FBINFO (cmap[regno]) = (red <<ACCESS_FBINFO (fbcon).var.red.offset) | (green << ACCESS_FBINFO(fbcon).var.green.offset) |
drivers/video/matrox/matroxfb_base.h +1 -1
@@ -518,7 +518,7 @@ #endif dll:1 ; } memory; } values; -u_int32_t cmap[17 ]; +u_int32_t cmap[16 ]; };#define info2minfo (info) container_of(info, struct matrox_fb_info, fbcon)
drivers/video/matrox/matroxfb_crtc2.c +0 -6
@@ -163,11 +163,6 @@ static void matroxfb_dh_disable(struct mACCESS_FBINFO (hw).crtc2.ctl =0x00000004 ; } -static void matroxfb_dh_cfbX_init (struct matroxfb_dh_fb_info * m2info) { -/* no acceleration for secondary head... */ - m2info->cmap[16 ] =0xFFFFFFFF ; -} -static void matroxfb_dh_pan_var (struct matroxfb_dh_fb_info * m2info,struct fb_var_screeninfo * var) {unsigned int pos;
@@ -385,7 +380,6 @@ #define m2info (container_of(info, struc } }up_read (&ACCESS_FBINFO (altout).lock); -matroxfb_dh_cfbX_init (m2info); } m2info->initialized =1 ;return 0 ;
drivers/video/matrox/matroxfb_crtc2.h +1 -1
@@ -30,7 +30,7 @@ struct matroxfb_dh_fb_info { unsigned int interlaced:1; - u_int32_t cmap[17]; + u_int32_t cmap[16]; };#endif /* __MATROXFB_CRTC2_H__ */
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 matroxfb: Color setting fixes fix
Remove more code that writes to cmap[16].
---
Quoted 6 lines · Petr Vandrovec
Quoted 5 lines · Antonino A. Daplas
- the
pseudo_paletteis only 16 elements long.
- do not write to thepseudo_paletteif regno (array index) is more than 15
- remove code that writes to the 17th entry of thepseudo_palette
Quoted 8 lines
Quoted 5 lines
Signed-off-by Antonino Daplas <[email protected]>---
Petr,Here's another attempt. Let me know if I missed anything.
You did not run my grep, did you? matroxfb_cfb[48]_* in
matroxfb_accelhave loop:
Actually I did, but it grep'ed "everything". And I'm not too much of an expert with grep.
Here's an incremental patch. Hopefully, this is the end of it
Tony
drivers/video/matrox/matroxfb_accel.c | 2 --
1 files changed, 0 insertions(+), 2 deletions(-)
drivers/video/matrox/matroxfb_accel.c +0 -2
@@ -91,7 +91,6 @@ static inline void matrox_cfb4_pal(u_intfor (i =0 ; i <16 ; i++) { pal[i] = i *0x11111111U ; } - pal[i] =0xFFFFFFFF ; }static inline void matrox_cfb8_pal (u_int32_t * pal) {
@@ -100,7 +99,6 @@ static inline void matrox_cfb8_pal(u_intfor (i =0 ; i <16 ; i++) { pal[i] = i *0x01010101U ; } - pal[i] =0x0F0F0F0F ; }static void matroxfb_copyarea (struct fb_info * info,const struct fb_copyarea * area);
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/