Module Name:    src
Committed By:   rkujawa
Date:           Wed Oct  4 09:44:09 UTC 2017

Modified Files:
        src/sys/arch/amiga/dev: mntva.c mntvareg.h mntvavar.h zbus.c

Log Message:
Update driver to support firmware v1.5+.

>From Lukas F. Hartmann. With hopeful style fixes from me.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/amiga/dev/mntva.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/amiga/dev/mntvareg.h \
    src/sys/arch/amiga/dev/mntvavar.h
cvs rdiff -u -r1.74 -r1.75 src/sys/arch/amiga/dev/zbus.c

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

Modified files:

Index: src/sys/arch/amiga/dev/mntva.c
diff -u src/sys/arch/amiga/dev/mntva.c:1.2 src/sys/arch/amiga/dev/mntva.c:1.3
--- src/sys/arch/amiga/dev/mntva.c:1.2	Sun Oct 23 18:40:52 2016
+++ src/sys/arch/amiga/dev/mntva.c	Wed Oct  4 09:44:09 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: mntva.c,v 1.2 2016/10/23 18:40:52 phx Exp $	*/
+/*	$NetBSD: mntva.c,v 1.3 2017/10/04 09:44:09 rkujawa Exp $	*/
 
 /*
  * Copyright (c) 2012, 2016 The NetBSD Foundation, Inc.		
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mntva.c,v 1.2 2016/10/23 18:40:52 phx Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mntva.c,v 1.3 2017/10/04 09:44:09 rkujawa Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -147,7 +147,7 @@ mntva_attach(device_t parent, device_t s
 	sc->sc_isconsole = true;
 #endif /* MNTVA_CONSOLE */
 
-	printf(": MNTMN VA2000");
+	printf(": MNT VA2000");
 
 	if(sc->sc_isconsole)
 		printf(" (console)");
@@ -161,16 +161,16 @@ mntva_attach(device_t parent, device_t s
 	sc->sc_bst.absm = &amiga_bus_stride_1;
 	sc->sc_iot = &sc->sc_bst;
 
-	if (bus_space_map(sc->sc_iot, MNTVA_OFF_FB, sc->sc_memsize + 0x1000,
-	    BUS_SPACE_MAP_LINEAR, &sc->sc_fbh)) {
-		aprint_error_dev(sc->sc_dev, "mapping framebuffer failed\n");
-		return;
-	}
 	if (bus_space_map(sc->sc_iot, MNTVA_OFF_REG, MNTVA_REG_SIZE , 0,
 	    &sc->sc_regh)) {
 		aprint_error_dev(sc->sc_dev, "mapping registers failed\n");
 		return;
 	}
+	if (bus_space_map(sc->sc_iot, MNTVA_OFF_FB, sc->sc_memsize,
+	    BUS_SPACE_MAP_LINEAR, &sc->sc_fbh)) {
+		aprint_error_dev(sc->sc_dev, "mapping framebuffer failed\n");
+		return;
+	}
 
 	sc->sc_regpa = (bus_addr_t) kvtop((void*) sc->sc_regh);
 	sc->sc_fbpa = (bus_addr_t) kvtop((void*) sc->sc_fbh);
@@ -223,13 +223,13 @@ mntva_attach(device_t parent, device_t s
 		sc->sc_defaultscreen_descr.ncols = ri->ri_cols;
 
 		wsdisplay_cnattach(&sc->sc_defaultscreen_descr, ri, 0, 0,
-				defattr);
+		     defattr);
 		vcons_replay_msgbuf(&sc->sc_console_screen);
 	} else {
-		if (sc->sc_console_screen.scr_ri.ri_rows == 0) {
+		if (sc->sc_console_screen.scr_ri.ri_rows == 0)
 			vcons_init_screen(&sc->vd, &sc->sc_console_screen, 1,
-					&defattr);
-		} else
+			    &defattr);
+		else
 			(*ri->ri_ops.allocattr)(ri, 0, 0, 0, &defattr);
 	}
 
@@ -298,9 +298,25 @@ mntva_init_screen(void *cookie, struct v
 static bool
 mntva_mode_set(struct mntva_softc *sc)
 {
+	mntva_reg_write(sc, MNTVA_CAPTURE_MODE, 0);
+	
+	mntva_reg_write(sc, MNTVA_H_SYNC_START, 1390);
+	mntva_reg_write(sc, MNTVA_H_SYNC_END, 1430);
+	mntva_reg_write(sc, MNTVA_H_MAX, 1650);
+	mntva_reg_write(sc, MNTVA_V_SYNC_START, 725);
+	mntva_reg_write(sc, MNTVA_V_SYNC_END, 730);
+	mntva_reg_write(sc, MNTVA_V_MAX, 750);
+	mntva_reg_write(sc, MNTVA_PIXEL_CLK_SEL, MNTVA_CLK_75MHZ);
+	
 	mntva_reg_write(sc, MNTVA_SCALEMODE, 0);
 	mntva_reg_write(sc, MNTVA_SCREENW, sc->sc_width);
 	mntva_reg_write(sc, MNTVA_SCREENH, sc->sc_height);
+	mntva_reg_write(sc, MNTVA_ROW_PITCH, 2048);
+	mntva_reg_write(sc, MNTVA_ROW_PITCH_SHIFT, 11);
+	mntva_reg_write(sc, MNTVA_BLITTER_ROW_PITCH, 2048);
+	mntva_reg_write(sc, MNTVA_BLITTER_ROW_PITCH_SHIFT, 11);
+	mntva_reg_write(sc, MNTVA_MARGIN_X, 8);
+	mntva_reg_write(sc, MNTVA_SAFE_X, 0x50);
 
 	if (sc->sc_bpp == 8)
 		mntva_reg_write(sc, MNTVA_COLORMODE, MNTVA_COLORMODE8);
@@ -314,9 +330,6 @@ mntva_mode_set(struct mntva_softc *sc)
 	mntva_reg_write(sc, MNTVA_BLITTERBASEHI, 0);
 	mntva_reg_write(sc, MNTVA_BLITTERBASELO, 0);
 	
-	/* XXX: should rectfill with bg color taken from wscons? */
-	mntva_rectfill(sc, 0, 0, sc->sc_width, sc->sc_height, 0xffffffff);
-
 	return true;
 }
 
@@ -577,7 +590,7 @@ mntva_mmap(void *v, void *vs, off_t offs
 
 	if (offset >= 0 && offset < sc->sc_memsize) {
 		pa = bus_space_mmap(sc->sc_iot, sc->sc_fbpa, offset, prot,
-			BUS_SPACE_MAP_LINEAR);
+		     BUS_SPACE_MAP_LINEAR);
 		return pa;
 	}	
 

Index: src/sys/arch/amiga/dev/mntvareg.h
diff -u src/sys/arch/amiga/dev/mntvareg.h:1.1 src/sys/arch/amiga/dev/mntvareg.h:1.2
--- src/sys/arch/amiga/dev/mntvareg.h:1.1	Mon Oct  3 14:26:02 2016
+++ src/sys/arch/amiga/dev/mntvareg.h	Wed Oct  4 09:44:09 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: mntvareg.h,v 1.1 2016/10/03 14:26:02 rkujawa Exp $  */
+/*	$NetBSD: mntvareg.h,v 1.2 2017/10/04 09:44:09 rkujawa Exp $  */
 
 /*
  * Copyright (c) 2012, 2016 The NetBSD Foundation, Inc. 
@@ -34,10 +34,10 @@
 #define MNTVA2000REG_H
 
 /* address space */
-#define MNTVA_OFF_REG		0x5f0000	/* memory mapped registers */
-#define MNTVA_REG_SIZE		0xFF
+#define MNTVA_OFF_REG		0x000000	/* memory mapped registers */
+#define MNTVA_REG_SIZE	0x001000
 
-#define MNTVA_OFF_FB		0x000000	/* frame buffer */
+#define MNTVA_OFF_FB		0x010000	/* frame buffer */
 #define MNTVA_FB_SIZE		0x5f0000
 
 /* registers */
@@ -47,8 +47,11 @@
 #define MNTVA_SCALEMODE3X		2	
 #define MNTVA_SCALEMODE4X		3	
 
+#define MNTVA_LINEW     0x02
 #define MNTVA_SCREENW		0x06
 #define MNTVA_SCREENH		0x08
+#define MNTVA_MARGIN_X  0x0c
+#define MNTVA_SAFE_X    0x14
 
 #define MNTVA_BLITTERBASEHI	0x1C	/* [23:16] */
 #define MNTVA_BLITTERBASELO	0x1E	/* [15:0] */
@@ -100,7 +103,27 @@
 #define MNTVA_COLORMODE16		__BIT(0)	
 #define MNTVA_COLORMODE32		__BIT(1)
 
+#define MNTVA_BLITTER_ROW_PITCH 0x42
+#define MNTVA_BLITTER_ROW_PITCH_SHIFT 0x44
+#define MNTVA_BLITTER_COLORMODE 0x46
+
 #define MNTVA_PANPTRHI 0x38 /* [23:16] */
 #define MNTVA_PANPTRLO 0x3A /* [15:0] */
 
+#define MNTVA_CAPTURE_MODE 0x4E
+
+#define MNTVA_ROW_PITCH       0x58
+#define MNTVA_ROW_PITCH_SHIFT 0x5c
+
+#define MNTVA_H_SYNC_START  0x70
+#define MNTVA_H_SYNC_END    0x72
+#define MNTVA_H_MAX         0x74
+#define MNTVA_V_SYNC_START  0x76
+#define MNTVA_V_SYNC_END    0x78
+#define MNTVA_V_MAX         0x7a
+
+#define MNTVA_PIXEL_CLK_SEL 0x7c
+#define MNTVA_CLK_75MHZ 0
+#define MNTVA_CLK_40MHZ 1
+
 #endif /* MNTVA2000REG_H */
Index: src/sys/arch/amiga/dev/mntvavar.h
diff -u src/sys/arch/amiga/dev/mntvavar.h:1.1 src/sys/arch/amiga/dev/mntvavar.h:1.2
--- src/sys/arch/amiga/dev/mntvavar.h:1.1	Mon Oct  3 14:26:02 2016
+++ src/sys/arch/amiga/dev/mntvavar.h	Wed Oct  4 09:44:09 2017
@@ -1,4 +1,4 @@
-/*  $NetBSD: mntvavar.h,v 1.1 2016/10/03 14:26:02 rkujawa Exp $ */
+/*  $NetBSD: mntvavar.h,v 1.2 2017/10/04 09:44:09 rkujawa Exp $ */
 
 /*
  * Copyright (c) 2012, 2016 The NetBSD Foundation, Inc. 

Index: src/sys/arch/amiga/dev/zbus.c
diff -u src/sys/arch/amiga/dev/zbus.c:1.74 src/sys/arch/amiga/dev/zbus.c:1.75
--- src/sys/arch/amiga/dev/zbus.c:1.74	Mon Oct  3 14:26:02 2016
+++ src/sys/arch/amiga/dev/zbus.c	Wed Oct  4 09:44:09 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: zbus.c,v 1.74 2016/10/03 14:26:02 rkujawa Exp $ */
+/*	$NetBSD: zbus.c,v 1.75 2017/10/04 09:44:09 rkujawa Exp $ */
 
 /*
  * Copyright (c) 1994 Christian E. Hopps
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: zbus.c,v 1.74 2016/10/03 14:26:02 rkujawa Exp $");
+__KERNEL_RCSID(0, "$NetBSD: zbus.c,v 1.75 2017/10/04 09:44:09 rkujawa Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -193,8 +193,8 @@ static const struct aconfdata aconftab[]
 	{ "hyper3+",	5001,	7},	/* Hypercom3+ */
 	/* Matay Grzegorz Kraszewski */
 	{ "mppb",	44359,	1},	/* Prometheus PCI bridge */
-	/* MNTMN */
-	{ "mntva",	28014,	1}	/* MNTMN VA2000 */
+	/* MNT */
+	{ "mntva",	28014,	1}	/* MNT VA2000 */
 };
 static int naconfent = sizeof(aconftab) / sizeof(struct aconfdata);
 

Reply via email to