Skip to contentSkip to conversation

fix hw cursor in doublescan modes

PATCH New Alexander Kern 1 participant 1 message Nov 10, 2004 Framebuffer layer

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fix hw cursor in doublescan modes

fix hw cursor in doublescan modes

drivers/video/aty/mach64_cursor.c renamed from drivers/video/aty/mach64_cursor.c.orig +9 -6
@@ -75,7 +75,7 @@
 {
 	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 @@
 			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);
 	}