Module Name:    src
Committed By:   macallan
Date:           Sat Oct 30 05:37:39 UTC 2021

Modified Files:
        src/sys/dev/sbus: mgx.c mgxreg.h

Log Message:
actually mmap() the blitter registers when asked to, while there do some
magic number reduction


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/dev/sbus/mgx.c
cvs rdiff -u -r1.5 -r1.6 src/sys/dev/sbus/mgxreg.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/sbus/mgx.c
diff -u src/sys/dev/sbus/mgx.c:1.17 src/sys/dev/sbus/mgx.c:1.18
--- src/sys/dev/sbus/mgx.c:1.17	Fri Oct 22 19:21:12 2021
+++ src/sys/dev/sbus/mgx.c	Sat Oct 30 05:37:39 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: mgx.c,v 1.17 2021/10/22 19:21:12 macallan Exp $ */
+/*	$NetBSD: mgx.c,v 1.18 2021/10/30 05:37:39 macallan Exp $ */
 
 /*-
  * Copyright (c) 2014 Michael Lorenz
@@ -29,7 +29,7 @@
 /* a console driver for the SSB 4096V-MGX graphics card */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mgx.c,v 1.17 2021/10/22 19:21:12 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mgx.c,v 1.18 2021/10/30 05:37:39 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -684,6 +684,8 @@ mgx_putchar_aa(void *cookie, int row, in
 	uint32_t fg, bg;
 	int x, y, wi, he, rv;
 
+if (sc->sc_mode != WSDISPLAYIO_MODE_EMUL) return;
+
 	wi = font->fontwidth;
 	he = font->fontheight;
 
@@ -731,6 +733,8 @@ mgx_putchar_mono(void *cookie, int row, 
 	uint32_t fg, bg, scratch = ((sc->sc_stride * sc->sc_height) + 7) & ~7;
 	int x, y, wi, he, len, i;
 
+if (sc->sc_mode != WSDISPLAYIO_MODE_EMUL) return;
+
 	wi = font->fontwidth;
 	he = font->fontheight;
 
@@ -1120,7 +1124,7 @@ mgx_mmap(void *v, void *vs, off_t offset
 	}
 
 	/*
-	 * Blitter registers at 0x80000000, only in mapped mode.
+	 * Blitter registers at 0x00800000, only in mapped mode.
 	 * Restrict to root, even though I'm fairly sure the DMA engine lives
 	 * elsewhere ( and isn't documented anyway )
 	 */
@@ -1132,9 +1136,9 @@ mgx_mmap(void *v, void *vs, off_t offset
 		return -1;
 	}
 	if ((sc->sc_mode == WSDISPLAYIO_MODE_MAPPED) &&
-	    (offset >= 0x80000000) && (offset < 0x80001000)) {
+	    (offset >= MGX_BLTOFFSET) && (offset < MGX_BLTOFFSET + 0x1000)) {
 		return bus_space_mmap(sc->sc_tag, sc->sc_rpaddr,
-		    offset, prot, BUS_SPACE_MAP_LINEAR);
+		    offset - MGX_BLTOFFSET, prot, BUS_SPACE_MAP_LINEAR);
 	}
 	return -1;
 }
@@ -1270,7 +1274,7 @@ mgxmmap(dev_t dev, off_t offset, int pro
 	}
 
 	/*
-	 * Blitter registers at 0x80000000, only in mapped mode.
+	 * Blitter registers at 0x00800000, only in mapped mode.
 	 * Restrict to root, even though I'm fairly sure the DMA engine lives
 	 * elsewhere ( and isn't documented anyway )
 	 */
@@ -1282,9 +1286,9 @@ mgxmmap(dev_t dev, off_t offset, int pro
 		return -1;
 	}
 	if ((sc->sc_mode == WSDISPLAYIO_MODE_MAPPED) &&
-	    (offset >= 0x80000000) && (offset < 0x80001000)) {
+	    (offset >= MGX_BLTOFFSET) && (offset < MGX_BLTOFFSET + 0x1000)) {
 		return bus_space_mmap(sc->sc_tag, sc->sc_rpaddr,
-		    offset, prot, BUS_SPACE_MAP_LINEAR);
+		    offset - MGX_BLTOFFSET, prot, BUS_SPACE_MAP_LINEAR);
 	}
 	return -1;
 }

Index: src/sys/dev/sbus/mgxreg.h
diff -u src/sys/dev/sbus/mgxreg.h:1.5 src/sys/dev/sbus/mgxreg.h:1.6
--- src/sys/dev/sbus/mgxreg.h:1.5	Sat Jul 29 03:29:49 2017
+++ src/sys/dev/sbus/mgxreg.h	Sat Oct 30 05:37:39 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: mgxreg.h,v 1.5 2017/07/29 03:29:49 macallan Exp $ */
+/*	$NetBSD: mgxreg.h,v 1.6 2021/10/30 05:37:39 macallan Exp $ */
 
 /* register definitions based on OpenBSD's atxxreg.h: */
 
@@ -30,6 +30,9 @@
 #ifndef MGX_REG_H
 #define MGX_REG_H
 
+#define MGX_FBOFFSET  0x00000000
+#define MGX_BLTOFFSET 0x00800000
+
 #define VGA_BASE 0x3c0
 #define CRTC_INDEX	0x3d4
 #define CRTC_DATA	0x3d5

Reply via email to