On-board bwtwo diddles a system enable register bit for video, per Jason
Thorpe (PR#1672).
This commit is contained in:
parent
f2345fb358
commit
7a9ddaff33
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: bwtwo.c,v 1.15 1995/10/09 15:39:34 pk Exp $ */
|
/* $NetBSD: bwtwo.c,v 1.16 1995/10/23 23:35:03 pk Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1992, 1993
|
* Copyright (c) 1992, 1993
|
||||||
|
@ -65,6 +65,8 @@
|
||||||
#include <machine/fbvar.h>
|
#include <machine/fbvar.h>
|
||||||
#if defined(SUN4)
|
#if defined(SUN4)
|
||||||
#include <machine/eeprom.h>
|
#include <machine/eeprom.h>
|
||||||
|
#include <machine/ctlreg.h>
|
||||||
|
#include <sparc/sparc/asm.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <sparc/dev/bwtworeg.h>
|
#include <sparc/dev/bwtworeg.h>
|
||||||
|
@ -77,6 +79,7 @@ struct bwtwo_softc {
|
||||||
struct fbdevice sc_fb; /* frame buffer device */
|
struct fbdevice sc_fb; /* frame buffer device */
|
||||||
volatile struct bwtworeg *sc_reg;/* control registers */
|
volatile struct bwtworeg *sc_reg;/* control registers */
|
||||||
caddr_t sc_phys; /* display RAM (phys addr) */
|
caddr_t sc_phys; /* display RAM (phys addr) */
|
||||||
|
int sc_bustype; /* type of bus we live on */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* autoconfiguration driver */
|
/* autoconfiguration driver */
|
||||||
|
@ -165,7 +168,7 @@ bwtwoattach(parent, self, args)
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
sc->sc_bustype = ca->ca_bustype;
|
||||||
|
|
||||||
sc->sc_fb.fb_type.fb_depth = 1;
|
sc->sc_fb.fb_type.fb_depth = 1;
|
||||||
fb_setsize(&sc->sc_fb, sc->sc_fb.fb_type.fb_depth,
|
fb_setsize(&sc->sc_fb, sc->sc_fb.fb_type.fb_depth,
|
||||||
|
@ -210,6 +213,12 @@ bwtwoattach(parent, self, args)
|
||||||
sc->sc_phys = p->ba_ram;
|
sc->sc_phys = p->ba_ram;
|
||||||
|
|
||||||
/* Insure video is enabled */
|
/* Insure video is enabled */
|
||||||
|
#if defined(SUN4)
|
||||||
|
if ((cputyp == CPU_SUN4) && (sc->sc_bustype == BUS_OBIO))
|
||||||
|
stba(AC_SYSENABLE, ASI_CONTROL,
|
||||||
|
lduba(AC_SYSENABLE, ASI_CONTROL) | SYSEN_VIDEO);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
sc->sc_reg->bw_ctl |= CTL_VE;
|
sc->sc_reg->bw_ctl |= CTL_VE;
|
||||||
|
|
||||||
if (isconsole) {
|
if (isconsole) {
|
||||||
|
@ -271,10 +280,28 @@ bwtwoioctl(dev, cmd, data, flags, p)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FBIOGVIDEO:
|
case FBIOGVIDEO:
|
||||||
|
#if defined(SUN4)
|
||||||
|
if ((cputyp == CPU_SUN4) && (sc->sc_bustype == BUS_OBIO))
|
||||||
|
*(int *)data =
|
||||||
|
(lduba(AC_SYSENABLE, ASI_CONTROL) & SYSEN_VIDEO) != 0;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
*(int *)data = (sc->sc_reg->bw_ctl & CTL_VE) != 0;
|
*(int *)data = (sc->sc_reg->bw_ctl & CTL_VE) != 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FBIOSVIDEO:
|
case FBIOSVIDEO:
|
||||||
|
#if defined(SUN4)
|
||||||
|
if ((cputyp == CPU_SUN4) && (sc->sc_bustype == BUS_OBIO))
|
||||||
|
if (*(int *)data)
|
||||||
|
stba(AC_SYSENABLE, ASI_CONTROL,
|
||||||
|
lduba(AC_SYSENABLE, ASI_CONTROL) |
|
||||||
|
SYSEN_VIDEO);
|
||||||
|
else
|
||||||
|
stba(AC_SYSENABLE, ASI_CONTROL,
|
||||||
|
lduba(AC_SYSENABLE, ASI_CONTROL) &
|
||||||
|
~SYSEN_VIDEO);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
if (*(int *)data)
|
if (*(int *)data)
|
||||||
sc->sc_reg->bw_ctl |= CTL_VE;
|
sc->sc_reg->bw_ctl |= CTL_VE;
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue