From cf3885a7e2cad8f88ec46d49abf29cf90926ca49 Mon Sep 17 00:00:00 2001 From: Jason Wright Date: Sun, 31 Mar 2002 17:34:16 +0000 Subject: add a new mode to wsdisplay, WSDISPLAYIO_MODE_DUMBFB. This mode is functionally equivalent what used to be WSDISPLAYIO_MODE_MAPPED, which now means a "native" mapping. vgafb_mmap() returns pci relative mappings in WSDISPLAYIO_MODE_MAPPED and linear framebuffer mappings in WSDISPLAYIO_MODE_DUMBFB --- sys/dev/wscons/wsconsio.h | 3 ++- sys/dev/wscons/wsdisplay.c | 24 ++++++++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) (limited to 'sys/dev/wscons') diff --git a/sys/dev/wscons/wsconsio.h b/sys/dev/wscons/wsconsio.h index d36a48966fe..1e3d98ea86f 100644 --- a/sys/dev/wscons/wsconsio.h +++ b/sys/dev/wscons/wsconsio.h @@ -1,4 +1,4 @@ -/* $OpenBSD: wsconsio.h,v 1.15 2002/03/27 18:54:09 jbm Exp $ */ +/* $OpenBSD: wsconsio.h,v 1.16 2002/03/31 17:34:15 jason Exp $ */ /* $NetBSD: wsconsio.h,v 1.31.2.1 2000/07/07 09:49:17 hannken Exp $ */ /* @@ -314,6 +314,7 @@ struct wsdisplay_cursor { #define WSDISPLAYIO_SMODE _IOW('W', 76, u_int) #define WSDISPLAYIO_MODE_EMUL 0 /* emulation (text) mode */ #define WSDISPLAYIO_MODE_MAPPED 1 /* mapped (graphics) mode */ +#define WSDISPLAYIO_MODE_DUMBFB 2 /* mapped (graphics) fb mode */ struct wsdisplay_font { char name[WSFONT_NAME_SIZE]; diff --git a/sys/dev/wscons/wsdisplay.c b/sys/dev/wscons/wsdisplay.c index 50ac76f1cd5..e83ad68a370 100644 --- a/sys/dev/wscons/wsdisplay.c +++ b/sys/dev/wscons/wsdisplay.c @@ -1,4 +1,4 @@ -/* $OpenBSD: wsdisplay.c,v 1.41 2002/03/27 18:54:09 jbm Exp $ */ +/* $OpenBSD: wsdisplay.c,v 1.42 2002/03/31 17:34:15 jason Exp $ */ /* $NetBSD: wsdisplay.c,v 1.37.4.1 2000/06/30 16:27:53 simonb Exp $ */ /* @@ -98,6 +98,7 @@ struct wsscreen { #define SCR_OPEN 1 /* is it open? */ #define SCR_WAITACTIVE 2 /* someone waiting on activation */ #define SCR_GRAPHICS 4 /* graphics mode, no text (emulation) output */ +#define SCR_DUMBFB 8 /* in use as dumb framebuffer (iff SCR_GRAPHICS) */ const struct wscons_syncops *scr_syncops; void *scr_synccookie; @@ -1066,19 +1067,30 @@ wsdisplay_internal_ioctl(sc, scr, cmd, data, flag, p) switch (cmd) { case WSDISPLAYIO_GMODE: - *(u_int *)data = (scr->scr_flags & SCR_GRAPHICS ? - WSDISPLAYIO_MODE_MAPPED : WSDISPLAYIO_MODE_EMUL); + if (scr->scr_flags & SCR_GRAPHICS) { + if (scr->scr_flags & SCR_DUMBFB) + *(u_int *)data = WSDISPLAYIO_MODE_DUMBFB; + else + *(u_int *)data = WSDISPLAYIO_MODE_MAPPED; + } else + *(u_int *)data = WSDISPLAYIO_MODE_EMUL; return (0); case WSDISPLAYIO_SMODE: #define d (*(int *)data) - if (d != WSDISPLAYIO_MODE_EMUL && d != WSDISPLAYIO_MODE_MAPPED) + if (d != WSDISPLAYIO_MODE_EMUL && + d != WSDISPLAYIO_MODE_MAPPED && + d != WSDISPLAYIO_MODE_DUMBFB) return (EINVAL); if (WSSCREEN_HAS_EMULATOR(scr)) { scr->scr_flags &= ~SCR_GRAPHICS; - if (d == WSDISPLAYIO_MODE_MAPPED) { - scr->scr_flags |= SCR_GRAPHICS; + if (d == WSDISPLAYIO_MODE_MAPPED || + d == WSDISPLAYIO_MODE_DUMBFB) { + scr->scr_flags |= SCR_GRAPHICS | + ((d == WSDISPLAYIO_MODE_DUMBFB) ? + SCR_DUMBFB : 0); + /* * wsmoused cohabitation with X-Window support * X-Window is starting -- cgit v1.2.3