From: "Antonino A. Daplas" remove/modify all references to info->cursor Signed-off-by: Antonino Daplas Signed-off-by: Andrew Morton --- 25-akpm/drivers/video/riva/fbdev.c | 55 +++++++++++++++++------------------- 25-akpm/drivers/video/riva/rivafb.h | 1 2 files changed, 27 insertions(+), 29 deletions(-) diff -puN drivers/video/riva/fbdev.c~fbdev-cleanup-rivafb-cursor-implementation drivers/video/riva/fbdev.c --- 25/drivers/video/riva/fbdev.c~fbdev-cleanup-rivafb-cursor-implementation Wed Oct 20 15:45:08 2004 +++ 25-akpm/drivers/video/riva/fbdev.c Wed Oct 20 15:45:08 2004 @@ -1166,7 +1166,7 @@ static int rivafb_set_par(struct fb_info riva_load_video_mode(info); riva_setup_accel(info); - memset_io(par->riva.CURSOR, 0, MAX_CURS * MAX_CURS * 2); + par->cursor_reset = 1; info->fix.line_length = (info->var.xres_virtual * (info->var.bits_per_pixel >> 3)); info->fix.visual = (info->var.bits_per_pixel == 8) ? FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_DIRECTCOLOR; @@ -1552,15 +1552,21 @@ static int rivafb_cursor(struct fb_info struct riva_par *par = (struct riva_par *) info->par; u8 data[MAX_CURS * MAX_CURS/8]; u16 fg, bg; - int i; + int i, set = cursor->set; par->riva.ShowHideCursor(&par->riva, 0); - if (cursor->set & FB_CUR_SETPOS) { + if (par->cursor_reset) { + set = FB_CUR_SETALL; + par->cursor_reset = 0; + } + + if (set & FB_CUR_SETSIZE) + memset_io(par->riva.CURSOR, 0, MAX_CURS * MAX_CURS * 2); + + if (set & FB_CUR_SETPOS) { u32 xx, yy, temp; - info->cursor.image.dx = cursor->image.dx; - info->cursor.image.dy = cursor->image.dy; yy = cursor->image.dy - info->var.yoffset; xx = cursor->image.dx - info->var.xoffset; temp = xx & 0xFFFF; @@ -1569,43 +1575,32 @@ static int rivafb_cursor(struct fb_info par->riva.PRAMDAC[0x0000300/4] = temp; } - if (cursor->set & FB_CUR_SETSIZE) { - info->cursor.image.height = cursor->image.height; - info->cursor.image.width = cursor->image.width; - memset_io(par->riva.CURSOR, 0, MAX_CURS * MAX_CURS * 2); - } - - if (cursor->set & FB_CUR_SETCMAP) { - info->cursor.image.bg_color = cursor->image.bg_color; - info->cursor.image.fg_color = cursor->image.fg_color; - } - if (cursor->set & (FB_CUR_SETSHAPE | FB_CUR_SETCMAP | FB_CUR_SETCUR)) { - u32 bg_idx = info->cursor.image.bg_color; - u32 fg_idx = info->cursor.image.fg_color; - u32 s_pitch = (info->cursor.image.width+7) >> 3; + if (set & (FB_CUR_SETSHAPE | FB_CUR_SETCMAP | FB_CUR_SETIMAGE)) { + u32 bg_idx = cursor->image.bg_color; + u32 fg_idx = cursor->image.fg_color; + u32 s_pitch = (cursor->image.width+7) >> 3; u32 d_pitch = MAX_CURS/8; u8 *dat = (u8 *) cursor->image.data; - u8 *msk = (u8 *) info->cursor.mask; + u8 *msk = (u8 *) cursor->mask; u8 src[64]; - info->cursor.image.data = cursor->image.data; - switch (info->cursor.rop) { + switch (cursor->rop) { case ROP_XOR: - for (i = 0; i < s_pitch * info->cursor.image.height; + for (i = 0; i < s_pitch * cursor->image.height; i++) src[i] = dat[i] ^ msk[i]; break; case ROP_COPY: default: - for (i = 0; i < s_pitch * info->cursor.image.height; + for (i = 0; i < s_pitch * cursor->image.height; i++) src[i] = dat[i] & msk[i]; break; } - fb_sysmove_buf_aligned(info, &info->sprite, data, d_pitch, src, - s_pitch, info->cursor.image.height); + fb_sysmove_buf_aligned(info, &info->pixmap, data, d_pitch, src, + s_pitch, cursor->image.height); bg = ((info->cmap.red[bg_idx] & 0xf8) << 7) | ((info->cmap.green[bg_idx] & 0xf8) << 2) | @@ -1618,11 +1613,13 @@ static int rivafb_cursor(struct fb_info par->riva.LockUnlock(&par->riva, 0); rivafb_load_cursor_image(par, data, bg, fg, - info->cursor.image.width, - info->cursor.image.height); + cursor->image.width, + cursor->image.height); } - if (info->cursor.enable) + + if (cursor->enable) par->riva.ShowHideCursor(&par->riva, 1); + return 0; } diff -puN drivers/video/riva/rivafb.h~fbdev-cleanup-rivafb-cursor-implementation drivers/video/riva/rivafb.h --- 25/drivers/video/riva/rivafb.h~fbdev-cleanup-rivafb-cursor-implementation Wed Oct 20 15:45:08 2004 +++ 25-akpm/drivers/video/riva/rivafb.h Wed Oct 20 15:45:08 2004 @@ -62,6 +62,7 @@ struct riva_par { int FlatPanel; struct pci_dev *pdev; int bus; + int cursor_reset; #ifdef CONFIG_MTRR struct { int vram; int vram_valid; } mtrr; #endif _