Module Name:    xsrc
Committed By:   tsutsui
Date:           Tue Nov  3 15:25:21 UTC 2020

Modified Files:
        xsrc/external/mit/xorg-server/dist/hw/netbsd/x68k: x68kFb.c

Log Message:
Restore video mode properly on exit even on CRT Mode 19 (640x480 31kHz VGA).


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 \
    xsrc/external/mit/xorg-server/dist/hw/netbsd/x68k/x68kFb.c

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

Modified files:

Index: xsrc/external/mit/xorg-server/dist/hw/netbsd/x68k/x68kFb.c
diff -u xsrc/external/mit/xorg-server/dist/hw/netbsd/x68k/x68kFb.c:1.4 xsrc/external/mit/xorg-server/dist/hw/netbsd/x68k/x68kFb.c:1.5
--- xsrc/external/mit/xorg-server/dist/hw/netbsd/x68k/x68kFb.c:1.4	Sat Aug  1 20:09:03 2020
+++ xsrc/external/mit/xorg-server/dist/hw/netbsd/x68k/x68kFb.c	Tue Nov  3 15:25:21 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: x68kFb.c,v 1.4 2020/08/01 20:09:03 tsutsui Exp $ */
+/* $NetBSD: x68kFb.c,v 1.5 2020/11/03 15:25:21 tsutsui Exp $ */
 /*-------------------------------------------------------------------------
  * Copyright (c) 1996 Yasushi Yamasaki
  * All rights reserved.
@@ -30,6 +30,8 @@ static void x68kRegSetup(X68kScreenRec *
 
 DevPrivateKeyRec x68kScreenPrivateKeyRec;
 
+static int cons_dwidth;
+
 /*-------------------------------------------------------------------------
  * function "x68kFbCommonOpen"
  *
@@ -68,6 +70,7 @@ x68kFbCommonOpen(X68kScreenRec *pPriv, c
     pPriv->fb = (uint8_t *)((uint32_t)pPriv->reg + gi.gd_regsize);
 
     x68kRegSetup( pPriv );
+    cons_dwidth = gi.gd_dwidth;
 
     return TRUE;
 }
@@ -83,7 +86,8 @@ x68kFbCommonOpen(X68kScreenRec *pPriv, c
 void
 x68kFbCommonClose(X68kScreenRec *pPriv)
 {
-    X68kFbReg graphNone = {
+    static const X68kFbReg graphNone_mode16 = {
+	/* CRT mode 16 (768x512 31.5kHz) */
         { 137,14, 28, 124,
           567, 5, 40, 552,
            27, 0,  0,   0,
@@ -93,8 +97,19 @@ x68kFbCommonClose(X68kScreenRec *pPriv)
         { 0x0004, 0x21e4, 0x0020 },
         0
     };
+    static const X68kFbReg graphNone_mode19 = {
+	/* CRT mode 19 (640x480 31.5kHz VGA mode) */
+        {  99,11, 13,  93,
+          524, 1, 33, 513,
+           27, 0,  0,   0,
+            0, 0,  0,   0,
+            0, 0,  0,   0,
+       0x0417, 0,  0,   0, 0 },
+        { 0x0004, 0x21e4, 0x0020 },
+        0
+    };
     /* change video mode */
-    pPriv->x68kreg = graphNone;
+    pPriv->x68kreg = (cons_dwidth == 640) ? graphNone_mode19 : graphNone_mode16;
     x68kRegSetup(pPriv);
 
     /* unmap and close frame buffer */

Reply via email to