summaryrefslogtreecommitdiffstats
path: root/sys/pc98
diff options
context:
space:
mode:
authornyan <nyan@FreeBSD.org>2003-01-15 13:12:12 +0000
committernyan <nyan@FreeBSD.org>2003-01-15 13:12:12 +0000
commit4743c6079e199ae4df4fe4d0525ec85ce489b0ea (patch)
tree8178bb36c49b5527242eb0ba666f6184ef9e5f78 /sys/pc98
parent47afd0c33001f58ff1492d002ad0cffaac46a9d8 (diff)
downloadFreeBSD-src-4743c6079e199ae4df4fe4d0525ec85ce489b0ea.zip
FreeBSD-src-4743c6079e199ae4df4fe4d0525ec85ce489b0ea.tar.gz
Merged from sys/isa/syscons_isa.c revision 1.21.
Diffstat (limited to 'sys/pc98')
-rw-r--r--sys/pc98/cbus/syscons_cbus.c27
-rw-r--r--sys/pc98/pc98/syscons_pc98.c27
2 files changed, 38 insertions, 16 deletions
diff --git a/sys/pc98/cbus/syscons_cbus.c b/sys/pc98/cbus/syscons_cbus.c
index fd9d28d..14a096a 100644
--- a/sys/pc98/cbus/syscons_cbus.c
+++ b/sys/pc98/cbus/syscons_cbus.c
@@ -35,6 +35,7 @@
#include <sys/bus.h>
#include <sys/cons.h>
#include <sys/consio.h>
+#include <sys/sysctl.h>
#include <machine/clock.h>
@@ -50,6 +51,17 @@
static devclass_t sc_devclass;
static sc_softc_t main_softc;
+#ifdef SC_NO_SUSPEND_VTYSWITCH
+static int sc_no_suspend_vtswitch = 1;
+#else
+static int sc_no_suspend_vtswitch = 0;
+#endif
+static int sc_cur_scr;
+
+TUNABLE_INT("hw.syscons.sc_no_suspend_vtswitch", (int *)&sc_no_suspend_vtswitch);
+SYSCTL_DECL(_hw_syscons);
+SYSCTL_INT(_hw_syscons, OID_AUTO, sc_no_suspend_vtswitch, CTLFLAG_RW,
+ &sc_no_suspend_vtswitch, 0, "Disable VT switch before suspend.");
static void
scidentify (driver_t *driver, device_t parent)
@@ -74,20 +86,19 @@ scattach(device_t dev)
return sc_attach_unit(device_get_unit(dev), device_get_flags(dev));
}
-#ifndef SC_NO_SUSPEND_VTYSWITCH
-static int sc_cur_scr;
-#endif
-
static int
scsuspend(device_t dev)
{
-#ifndef SC_NO_SUSPEND_VTYSWITCH
int retry = 10;
static int dummy;
sc_softc_t *sc;
sc = &main_softc;
sc_cur_scr = sc->cur_scp->index;
+
+ if (sc_no_suspend_vtswitch)
+ return (0);
+
do {
sc_switch_scr(sc, 0);
if (!sc->switch_in_progress) {
@@ -96,20 +107,20 @@ scsuspend(device_t dev)
tsleep(&dummy, 0, "scsuspend", 100);
} while (retry--);
-#endif
return (0);
}
static int
scresume(device_t dev)
{
-#ifndef SC_NO_SUSPEND_VTYSWITCH
sc_softc_t *sc;
+ if (sc_no_suspend_vtswitch)
+ return (0);
+
sc = &main_softc;
sc_switch_scr(sc, sc_cur_scr);
-#endif
return (0);
}
diff --git a/sys/pc98/pc98/syscons_pc98.c b/sys/pc98/pc98/syscons_pc98.c
index fd9d28d..14a096a 100644
--- a/sys/pc98/pc98/syscons_pc98.c
+++ b/sys/pc98/pc98/syscons_pc98.c
@@ -35,6 +35,7 @@
#include <sys/bus.h>
#include <sys/cons.h>
#include <sys/consio.h>
+#include <sys/sysctl.h>
#include <machine/clock.h>
@@ -50,6 +51,17 @@
static devclass_t sc_devclass;
static sc_softc_t main_softc;
+#ifdef SC_NO_SUSPEND_VTYSWITCH
+static int sc_no_suspend_vtswitch = 1;
+#else
+static int sc_no_suspend_vtswitch = 0;
+#endif
+static int sc_cur_scr;
+
+TUNABLE_INT("hw.syscons.sc_no_suspend_vtswitch", (int *)&sc_no_suspend_vtswitch);
+SYSCTL_DECL(_hw_syscons);
+SYSCTL_INT(_hw_syscons, OID_AUTO, sc_no_suspend_vtswitch, CTLFLAG_RW,
+ &sc_no_suspend_vtswitch, 0, "Disable VT switch before suspend.");
static void
scidentify (driver_t *driver, device_t parent)
@@ -74,20 +86,19 @@ scattach(device_t dev)
return sc_attach_unit(device_get_unit(dev), device_get_flags(dev));
}
-#ifndef SC_NO_SUSPEND_VTYSWITCH
-static int sc_cur_scr;
-#endif
-
static int
scsuspend(device_t dev)
{
-#ifndef SC_NO_SUSPEND_VTYSWITCH
int retry = 10;
static int dummy;
sc_softc_t *sc;
sc = &main_softc;
sc_cur_scr = sc->cur_scp->index;
+
+ if (sc_no_suspend_vtswitch)
+ return (0);
+
do {
sc_switch_scr(sc, 0);
if (!sc->switch_in_progress) {
@@ -96,20 +107,20 @@ scsuspend(device_t dev)
tsleep(&dummy, 0, "scsuspend", 100);
} while (retry--);
-#endif
return (0);
}
static int
scresume(device_t dev)
{
-#ifndef SC_NO_SUSPEND_VTYSWITCH
sc_softc_t *sc;
+ if (sc_no_suspend_vtswitch)
+ return (0);
+
sc = &main_softc;
sc_switch_scr(sc, sc_cur_scr);
-#endif
return (0);
}
OpenPOWER on IntegriCloud