Use either vesa or fbdev, selectable at compile time

This commit is contained in:
Keith Packard 2003-10-09 06:35:11 +00:00
parent adc5b8068d
commit 346aff7ef6
4 changed files with 68 additions and 18 deletions

View File

@ -2,6 +2,7 @@ INCLUDES = \
-I$(top_srcdir)/fb \ -I$(top_srcdir)/fb \
-I$(top_srcdir)/hw/kdrive/src \ -I$(top_srcdir)/hw/kdrive/src \
-I$(top_srcdir)/hw/kdrive/fbdev \ -I$(top_srcdir)/hw/kdrive/fbdev \
-I$(top_srcdir)/hw/kdrive/vesa \
-I$(top_srcdir)/mi \ -I$(top_srcdir)/mi \
-I$(top_srcdir)/miext/layer \ -I$(top_srcdir)/miext/layer \
-I$(top_srcdir)/miext/shadow \ -I$(top_srcdir)/miext/shadow \
@ -25,6 +26,7 @@ Xsmi_SOURCES = \
Xsmi_LDADD = \ Xsmi_LDADD = \
$(top_builddir)/hw/kdrive/smi/libsmi.a \ $(top_builddir)/hw/kdrive/smi/libsmi.a \
$(top_builddir)/hw/kdrive/fbdev/libfbdev.a \ $(top_builddir)/hw/kdrive/fbdev/libfbdev.a \
$(top_builddir)/hw/kdrive/vesa/libvesa.a \
$(top_builddir)/dix/libdix.a \ $(top_builddir)/dix/libdix.a \
$(top_builddir)/os/libos.a \ $(top_builddir)/os/libos.a \
$(top_builddir)/miext/layer/liblayer.a \ $(top_builddir)/miext/layer/liblayer.a \
@ -33,11 +35,13 @@ Xsmi_LDADD = \
$(top_builddir)/miext/shadow/libshadow.a \ $(top_builddir)/miext/shadow/libshadow.a \
$(top_builddir)/randr/librandr.a \ $(top_builddir)/randr/librandr.a \
$(top_builddir)/render/librender.a \ $(top_builddir)/render/librender.a \
$(top_builddir)/xfixes/libxfixes.a \
$(top_builddir)/fb/libfb.a \ $(top_builddir)/fb/libfb.a \
$(top_builddir)/mi/libmi.a \ $(top_builddir)/mi/libmi.a \
$(top_builddir)/Xext/libXext.a \ $(top_builddir)/Xext/libXext.a \
$(top_builddir)/randr/librandr.a \ $(top_builddir)/randr/librandr.a \
$(top_builddir)/render/librender.a \ $(top_builddir)/render/librender.a \
$(top_builddir)/xfixes/libxfixes.a \
$(top_builddir)/dix/libxpstubs.a \ $(top_builddir)/dix/libxpstubs.a \
$(XSERVER_LIBS) \ $(XSERVER_LIBS) \
-lm -lz -lm -lz

View File

@ -40,7 +40,7 @@ smiCardInit (KdCardInfo *card)
(void) smiMapReg (card, smic); (void) smiMapReg (card, smic);
if (!fbdevInitialize (card, &smic->fbdev)) if (!subInitialize (card, &smic->sub))
{ {
xfree (smic); xfree (smic);
return FALSE; return FALSE;
@ -62,7 +62,7 @@ smiScreenInit (KdScreenInfo *screen)
if (!smis) if (!smis)
return FALSE; return FALSE;
memset (smis, '\0', sizeof (SmiScreenInfo)); memset (smis, '\0', sizeof (SmiScreenInfo));
if (!fbdevScreenInitialize (screen, &smis->fbdev)) if (!subScreenInitialize (screen, &smis->sub))
{ {
xfree (smis); xfree (smis);
return FALSE; return FALSE;
@ -70,7 +70,11 @@ smiScreenInit (KdScreenInfo *screen)
if (!smic->reg_base) if (!smic->reg_base)
screen->dumb = TRUE; screen->dumb = TRUE;
screen->softCursor = TRUE; screen->softCursor = TRUE;
smis->screen = smic->fbdev.fb; #ifdef SMI_VESA
smis->screen = smis->sub.fb;
#else
smis->screen = smic->sub.fb;
#endif
screen->driver = smis; screen->driver = smis;
LEAVE(); LEAVE();
return TRUE; return TRUE;
@ -89,7 +93,7 @@ smiInitScreen (ScreenPtr pScreen)
smiInitVideo(pScreen); smiInitVideo(pScreen);
#endif #endif
#endif #endif
ret = fbdevInitScreen (pScreen); ret = subInitScreen (pScreen);
LEAVE(); LEAVE();
return ret; return ret;
} }
@ -106,7 +110,7 @@ smiRandRSetConfig (ScreenPtr pScreen,
ENTER (); ENTER ();
KdCheckSync (pScreen); KdCheckSync (pScreen);
ret = fbdevRandRSetConfig (pScreen, randr, rate, pSize); ret = subRandRSetConfig (pScreen, randr, rate, pSize);
LEAVE(); LEAVE();
return ret; return ret;
} }
@ -127,7 +131,7 @@ Bool
smiFinishInitScreen (ScreenPtr pScreen) smiFinishInitScreen (ScreenPtr pScreen)
{ {
Bool ret; Bool ret;
ret = fbdevFinishInitScreen (pScreen); ret = subFinishInitScreen (pScreen);
#ifdef RANDR #ifdef RANDR
smiRandRInit (pScreen); smiRandRInit (pScreen);
#endif #endif
@ -140,7 +144,7 @@ smiPreserve (KdCardInfo *card)
SmiCardInfo *smic = card->driver; SmiCardInfo *smic = card->driver;
ENTER (); ENTER ();
fbdevPreserve(card); subPreserve(card);
LEAVE(); LEAVE();
} }
@ -232,7 +236,7 @@ smiEnable (ScreenPtr pScreen)
SmiCardInfo *smic = pScreenPriv->card->driver; SmiCardInfo *smic = pScreenPriv->card->driver;
ENTER (); ENTER ();
if (!fbdevEnable (pScreen)) if (!subEnable (pScreen))
return FALSE; return FALSE;
smiSetMMIO (pScreenPriv->card, smic); smiSetMMIO (pScreenPriv->card, smic);
@ -257,7 +261,7 @@ smiDisable (ScreenPtr pScreen)
KdXVDisable (pScreen); KdXVDisable (pScreen);
#endif #endif
smiResetMMIO (pScreenPriv->card, smic); smiResetMMIO (pScreenPriv->card, smic);
fbdevDisable (pScreen); subDisable (pScreen);
LEAVE (); LEAVE ();
} }
@ -266,7 +270,7 @@ smiDPMS (ScreenPtr pScreen, int mode)
{ {
Bool ret; Bool ret;
ENTER (); ENTER ();
ret = fbdevDPMS (pScreen, mode); ret = subDPMS (pScreen, mode);
LEAVE (); LEAVE ();
return ret; return ret;
} }
@ -277,7 +281,7 @@ smiRestore (KdCardInfo *card)
SmiCardInfo *smic = card->driver; SmiCardInfo *smic = card->driver;
ENTER (); ENTER ();
fbdevRestore (card); subRestore (card);
LEAVE(); LEAVE();
} }
@ -287,7 +291,7 @@ smiScreenFini (KdScreenInfo *screen)
SmiScreenInfo *smis = (SmiScreenInfo *) screen->driver; SmiScreenInfo *smis = (SmiScreenInfo *) screen->driver;
ENTER (); ENTER ();
fbdevScreenFini (screen); subScreenFini (screen);
xfree (smis); xfree (smis);
screen->driver = 0; screen->driver = 0;
LEAVE (); LEAVE ();
@ -300,7 +304,7 @@ smiCardFini (KdCardInfo *card)
ENTER (); ENTER ();
smiUnmapReg (card, smic); smiUnmapReg (card, smic);
fbdevCardFini (card); subCardFini (card);
LEAVE (); LEAVE ();
} }
@ -334,8 +338,8 @@ KdCardFuncs smiFuncs = {
smiDrawDisable, /* disableAccel */ smiDrawDisable, /* disableAccel */
smiDrawFini, /* finiAccel */ smiDrawFini, /* finiAccel */
fbdevGetColors, /* getColors */ subGetColors, /* getColors */
fbdevPutColors, /* putColors */ subPutColors, /* putColors */
smiFinishInitScreen, /* finishInitScreen */ smiFinishInitScreen, /* finishInitScreen */
}; };

View File

@ -25,7 +25,49 @@
#ifndef _SMI_H_ #ifndef _SMI_H_
#define _SMI_H_ #define _SMI_H_
#define SMI_VESA 1
#ifdef SMI_VESA
#include <vesa.h>
#define subGetColors vesaGetColors
#define subPutColors vesaPutColors
#define subInitialize vesaInitialize
#define subScreenInitialize vesaScreenInitialize
#define subInitScreen vesaInitScreen
#define subRandRSetConfig vesaRandRSetConfig
#define subFinishInitScreen vesaFinishInitScreen
#define subPreserve vesaPreserve
#define subEnable vesaEnable
#define subDPMS vesaDPMS
#define subRestore vesaRestore
#define subScreenFini vesaScreenFini
#define subCardFini vesaCardFini
#define subDisable vesaDisable
#define SubCardPrivRec VesaCardPrivRec
#define SubScreenPrivRec VesaScreenPrivRec
#define subProcessArgument(c,v,i) vesaProcessArgument(c,v,i)
#else
#include <fbdev.h> #include <fbdev.h>
#define subGetColors fbdevGetColors
#define subPutColors fbdevPutColors
#define subInitialize fbdevInitialize
#define subScreenInitialize fbdevScreenInitialize
#define subInitScreen fbdevInitScreen
#define subRandRSetConfig fbdevRandRSetConfig
#define subFinishInitScreen fbdevFinishInitScreen
#define subPreserve fbdevPreserve
#define subEnable fbdevEnable
#define subDPMS fbdevDPMS
#define subRestore fbdevRestore
#define subScreenFini fbdevScreenFini
#define subCardFini fbdevCardFini
#define subDisable fbdevDisable
#define SubCardPrivRec FbdevPriv
#define SubScreenPrivRec FbdevScrPriv
#define subProcessArgument(c,v,i) 0
#endif
#include "kxv.h" #include "kxv.h"
#define DEBUG #define DEBUG
@ -124,7 +166,7 @@ typedef struct _DPR {
#define VGA_SEQ_DATA 0x3C5 #define VGA_SEQ_DATA 0x3C5
typedef struct _smiCardInfo { typedef struct _smiCardInfo {
FbdevPriv fbdev; SubCardPrivRec sub;
CARD16 io_base; CARD16 io_base;
CARD8 *reg_base; CARD8 *reg_base;
DPR *dpr; DPR *dpr;
@ -135,7 +177,7 @@ typedef struct _smiCardInfo {
#define smiCardInfo(kd) SmiCardInfo *smic = getSmiCardInfo(kd) #define smiCardInfo(kd) SmiCardInfo *smic = getSmiCardInfo(kd)
typedef struct _smiScreenInfo { typedef struct _smiScreenInfo {
FbdevScrPriv fbdev; SubScreenPrivRec sub;
CARD8 *screen; CARD8 *screen;
CARD32 stride; CARD32 stride;
CARD32 data_format; CARD32 data_format;

View File

@ -55,7 +55,7 @@ ddxProcessArgument (int argc, char **argv, int i)
{ {
int ret; int ret;
/* if (!(ret = vesaProcessArgument (argc, argv, i))) */ if (!(ret = subProcessArgument (argc, argv, i)))
ret = KdProcessArgument(argc, argv, i); ret = KdProcessArgument(argc, argv, i);
return ret; return ret;
} }