Module Name:    src
Committed By:   macallan
Date:           Wed Oct 28 04:25:13 UTC 2009

Modified Files:
        src/sys/dev/pci: pm2fb.c pm2reg.h

Log Message:
fix occasionally wrong colours in rectangle fills


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/dev/pci/pm2fb.c src/sys/dev/pci/pm2reg.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/pm2fb.c
diff -u src/sys/dev/pci/pm2fb.c:1.1 src/sys/dev/pci/pm2fb.c:1.2
--- src/sys/dev/pci/pm2fb.c:1.1	Wed Oct 28 02:10:27 2009
+++ src/sys/dev/pci/pm2fb.c	Wed Oct 28 04:25:13 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: pm2fb.c,v 1.1 2009/10/28 02:10:27 macallan Exp $	*/
+/*	$NetBSD: pm2fb.c,v 1.2 2009/10/28 04:25:13 macallan Exp $	*/
 
 /*
  * Copyright (c) 2009 Michael Lorenz
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pm2fb.c,v 1.1 2009/10/28 02:10:27 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pm2fb.c,v 1.2 2009/10/28 04:25:13 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -600,16 +600,18 @@
 {
 
 	pm2fb_wait(sc, 6);
+	bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_DDA_MODE, 
+	    0);
 	bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_CONFIG,
 	    PM2RECFG_WRITE_EN);
-	bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_CONST_COLOUR,
+	bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_BLOCK_COLOUR,
 	    colour);
 	bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_RECT_START,
 	    (y << 16) | x);
 	bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_RECT_SIZE,
 	    (he << 16) | wi);
 	bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_RENDER,
-	    PM2RE_RECTANGLE);
+	    PM2RE_RECTANGLE | PM2RE_INC_X | PM2RE_INC_Y | PM2RE_FASTFILL);
 	
 	pm2fb_flush_engine(sc);
 }
@@ -620,14 +622,14 @@
 {
 	uint32_t dir = 0;
 
-	pm2fb_wait(sc, 5);
-
 	if (yd <= ys) {
 		dir |= PM2RE_INC_Y;
 	}
 	if (xd <= xs) {
 		dir |= PM2RE_INC_X;
 	}
+	pm2fb_wait(sc, 6);
+	bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_DDA_MODE, 0);
 	bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_CONFIG,
 	    PM2RECFG_READ_SRC | PM2RECFG_WRITE_EN | PM2RECFG_ROP_EN |
 	    (rop << 6));
Index: src/sys/dev/pci/pm2reg.h
diff -u src/sys/dev/pci/pm2reg.h:1.1 src/sys/dev/pci/pm2reg.h:1.2
--- src/sys/dev/pci/pm2reg.h:1.1	Wed Oct 28 02:10:27 2009
+++ src/sys/dev/pci/pm2reg.h	Wed Oct 28 04:25:13 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: pm2reg.h,v 1.1 2009/10/28 02:10:27 macallan Exp $	*/
+/*	$NetBSD: pm2reg.h,v 1.2 2009/10/28 04:25:13 macallan Exp $	*/
 
 /*
  * Copyright (c) 2009 Michael Lorenz
@@ -130,4 +130,8 @@
 #define PM2_RE_SYNC		0x00008c40
 #define PM2_RE_FILTER_MODE	0x00008c00
 #define		PM2FLT_PASS_SYNC	0x00000400
+#define PM2_RE_DDA_MODE		0x000087e0
+#define		PM2DDA_ENABLE		0x00000001
+#define		PM2DDA_GORAUD		0x00000002 /* flat otherwise */
+#define PM2_RE_BLOCK_COLOUR	0x00008ac8
 #endif /* PM2_REG_H */

Reply via email to