Use VESA driver underneath

This commit is contained in:
Keith Packard 2000-08-29 17:20:15 +00:00
parent 77331f9670
commit 3805965684
5 changed files with 61 additions and 8 deletions

View File

@ -6,7 +6,9 @@ SRCS = trident.c tridentdraw.c tridentcurs.c tridentstub.c
OBJS = trident.o tridentdraw.o tridentcurs.o tridentstub.o OBJS = trident.o tridentdraw.o tridentcurs.o tridentstub.o
INCLUDES = -I.. -I../fbdev -I. -I$(XBUILDINCDIR) -I$(FONTINCSRC) \ DEFINES = -DVESA
INCLUDES = -I.. -I../fbdev -I../vesa -I. -I$(XBUILDINCDIR) -I$(FONTINCSRC) \
-I../../../fb -I../../../mi -I../../../include -I../../../os \ -I../../../fb -I../../../mi -I../../../include -I../../../os \
-I$(EXTINCSRC) -I$(XINCLUDESRC) -I$(EXTINCSRC) -I$(XINCLUDESRC)

View File

@ -21,7 +21,7 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE. * PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/trident.c,v 1.3 2000/01/21 01:12:02 dawes Exp $ */ /* $XFree86: xc/programs/Xserver/hw/kdrive/trident/trident.c,v 1.6 2000/08/26 00:17:50 keithp Exp $ */
#include "trident.h" #include "trident.h"
#define extern #define extern
@ -41,7 +41,11 @@ tridentCardInit (KdCardInfo *card)
if (!tridentc) if (!tridentc)
return FALSE; return FALSE;
#ifdef VESA
if (!vesaInitialize (card, &tridentc->vesa))
#else
if (!fbdevInitialize (card, &tridentc->fb)) if (!fbdevInitialize (card, &tridentc->fb))
#endif
{ {
xfree (tridentc); xfree (tridentc);
return FALSE; return FALSE;
@ -67,19 +71,26 @@ tridentScreenInit (KdScreenInfo *screen)
if (!tridents) if (!tridents)
return FALSE; return FALSE;
memset (tridents, '\0', sizeof (TridentScreenInfo)); memset (tridents, '\0', sizeof (TridentScreenInfo));
#ifdef VESA
if (!vesaScreenInit (screen))
#else
if (!fbdevScreenInit (screen)) if (!fbdevScreenInit (screen))
#endif
{ {
xfree (tridents); xfree (tridents);
return FALSE; return FALSE;
} }
if (!tridentc->cop) if (!tridentc->cop)
screen->dumb = TRUE; screen->dumb = TRUE;
#ifdef VESA
tridentc->screen = tridentc->vesa.fb;
#else
tridentc->screen = tridentc->fb.fb;
#endif
screen_size = screen->fb[0].byteStride * screen->height; screen_size = screen->fb[0].byteStride * screen->height;
memory = (2048 + 512) * 1024; memory = (2048 + 512) * 1024;
if (memory >= screen_size + 2048) if (memory >= screen_size + 2048)
{ tridents->cursor_base = tridentc->screen + memory - 2048;
tridents->cursor_base = tridentc->fb.fb + memory - 2048;
}
else else
tridents->cursor_base = 0; tridents->cursor_base = 0;
screen->driver = tridents; screen->driver = tridents;
@ -124,7 +135,11 @@ tridentPreserve (KdCardInfo *card)
{ {
TridentCardInfo *tridentc = card->driver; TridentCardInfo *tridentc = card->driver;
#ifdef VESA
vesaPreserve(card);
#else
fbdevPreserve (card); fbdevPreserve (card);
#endif
tridentPause (); tridentPause ();
tridentc->save.reg_3c4_0e = tridentReadIndex (tridentc, 0x3c4, 0x0e); tridentc->save.reg_3c4_0e = tridentReadIndex (tridentc, 0x3c4, 0x0e);
tridentc->save.reg_3d4_36 = tridentReadIndex (tridentc, 0x3d4, 0x36); tridentc->save.reg_3d4_36 = tridentReadIndex (tridentc, 0x3d4, 0x36);
@ -206,14 +221,22 @@ tridentEnable (ScreenPtr pScreen)
KdScreenPriv(pScreen); KdScreenPriv(pScreen);
TridentCardInfo *tridentc = pScreenPriv->card->driver; TridentCardInfo *tridentc = pScreenPriv->card->driver;
#ifdef VESA
vesaEnable (pScreen);
#else
fbdevEnable (pScreen); fbdevEnable (pScreen);
#endif
tridentSetMMIO (tridentc); tridentSetMMIO (tridentc);
} }
void void
tridentDisable (ScreenPtr pScreen) tridentDisable (ScreenPtr pScreen)
{ {
#ifdef VESA
vesaDisable (pScreen);
#else
fbdevDisable (pScreen); fbdevDisable (pScreen);
#endif
} }
const CARD8 tridentDPMSModes[4] = { const CARD8 tridentDPMSModes[4] = {
@ -242,7 +265,11 @@ tridentRestore (KdCardInfo *card)
TridentCardInfo *tridentc = card->driver; TridentCardInfo *tridentc = card->driver;
tridentResetMMIO (tridentc); tridentResetMMIO (tridentc);
#ifdef VESA
vesaRestore (card);
#else
fbdevRestore (card); fbdevRestore (card);
#endif
} }
void void
@ -261,7 +288,11 @@ tridentCardFini (KdCardInfo *card)
if (tridentc->cop_base) if (tridentc->cop_base)
KdUnmapDevice ((void *) tridentc->cop_base, TRIDENT_COP_SIZE); KdUnmapDevice ((void *) tridentc->cop_base, TRIDENT_COP_SIZE);
#ifdef VESA
vesaCardFini (card);
#else
fbdevCardFini (card); fbdevCardFini (card);
#endif
} }
KdCardFuncs tridentFuncs = { KdCardFuncs tridentFuncs = {
@ -288,6 +319,11 @@ KdCardFuncs tridentFuncs = {
tridentDrawDisable, /* disableAccel */ tridentDrawDisable, /* disableAccel */
tridentDrawFini, /* finiAccel */ tridentDrawFini, /* finiAccel */
#ifdef VESA
vesaGetColors, /* getColors */
vesaPutColors, /* putColors */
#else
fbdevGetColors, /* getColors */ fbdevGetColors, /* getColors */
fbdevPutColors, /* putColors */ fbdevPutColors, /* putColors */
#endif
}; };

View File

@ -25,7 +25,11 @@
#ifndef _TRIDENT_H_ #ifndef _TRIDENT_H_
#define _TRIDENT_H_ #define _TRIDENT_H_
#ifdef VESA
#include <vesa.h>
#else
#include <fbdev.h> #include <fbdev.h>
#endif
/* /*
* offset from ioport beginning * offset from ioport beginning
@ -146,7 +150,12 @@ typedef struct _tridentSave {
} TridentSave; } TridentSave;
typedef struct _tridentCardInfo { typedef struct _tridentCardInfo {
#ifdef VESA
VesaPrivRec vesa;
#else
FbdevPriv fb; FbdevPriv fb;
#endif
CARD8 *screen;
CARD8 *cop_base; CARD8 *cop_base;
Cop *cop; Cop *cop;
CARD32 cop_depth; CARD32 cop_depth;

View File

@ -21,7 +21,7 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE. * PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $XFree86: xc/programs/Xserver/hw/kdrive/trident/tridentcurs.c,v 1.2 1999/12/30 03:03:17 robin Exp $ */ /* $XFree86: xc/programs/Xserver/hw/kdrive/trident/tridentcurs.c,v 1.4 2000/05/06 22:17:51 keithp Exp $ */
#include "trident.h" #include "trident.h"
#include "cursorstr.h" #include "cursorstr.h"
@ -221,7 +221,7 @@ tridentLoadCursor (ScreenPtr pScreen, int x, int y)
} }
/* Set address for cursor bits */ /* Set address for cursor bits */
offset = tridents->cursor_base - (CARD8 *) tridentc->fb.fb; offset = tridents->cursor_base - (CARD8 *) tridentc->screen;
offset >>= 10; offset >>= 10;
tridentWriteIndex (tridentc, 0x3d4, 0x44, (CARD8) (offset & 0xff)); tridentWriteIndex (tridentc, 0x3d4, 0x44, (CARD8) (offset & 0xff));
tridentWriteIndex (tridentc, 0x3d4, 0x45, (CARD8) (offset >> 8)); tridentWriteIndex (tridentc, 0x3d4, 0x45, (CARD8) (offset >> 8));

View File

@ -50,5 +50,11 @@ InitInput (int argc, char **argv)
int int
ddxProcessArgument (int argc, char **argv, int i) ddxProcessArgument (int argc, char **argv, int i)
{ {
return KdProcessArgument (argc, argv, i); int ret;
#ifdef VESA
if (!(ret = vesaProcessArgument (argc, argv, i)))
#endif
ret = KdProcessArgument(argc, argv, i);
return ret;
} }