From: "Antonino A. Daplas" fix hw cursor in doublescan modes Signed-off-by: Alexander Kern Signed-off-by: Antonino Daplas Signed-off-by: Andrew Morton --- 25-akpm/drivers/video/aty/mach64_cursor.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-) diff -puN drivers/video/aty/mach64_cursor.c~fbdev-fix-cursor-in-doublescan-mode-in-atyfb drivers/video/aty/mach64_cursor.c --- 25/drivers/video/aty/mach64_cursor.c~fbdev-fix-cursor-in-doublescan-mode-in-atyfb 2004-11-10 18:36:21.771088640 -0800 +++ 25-akpm/drivers/video/aty/mach64_cursor.c 2004-11-10 18:36:21.774088184 -0800 @@ -75,7 +75,7 @@ int atyfb_cursor(struct fb_info *info, s { struct atyfb_par *par = (struct atyfb_par *) info->par; u16 xoff, yoff; - int x, y; + int x, y, h; #ifdef __sparc__ if (par->mmaped) @@ -106,17 +106,20 @@ int atyfb_cursor(struct fb_info *info, s yoff = 0; } + h = cursor->image.height; + /* - * In doublescan mode, the cursor location also needs to be - * doubled. + * In doublescan mode, the cursor location + * and heigh also needs to be doubled. */ - if (par->crtc.gen_cntl & CRTC_DBL_SCAN_EN) + if (par->crtc.gen_cntl & CRTC_DBL_SCAN_EN) { y<<=1; + h<<=1; + } wait_for_fifo(4, par); aty_st_le32(CUR_OFFSET, (info->fix.smem_len >> 3) + (yoff << 1), par); aty_st_le32(CUR_HORZ_VERT_OFF, - ((u32) (64 - cursor->image.height + yoff) << 16) | xoff, - par); + ((u32) (64 - h + yoff) << 16) | xoff, par); aty_st_le32(CUR_HORZ_VERT_POSN, ((u32) y << 16) | x, par); } _