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

View File

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

View File

@ -25,7 +25,49 @@
#ifndef _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>
#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"
#define DEBUG
@ -124,7 +166,7 @@ typedef struct _DPR {
#define VGA_SEQ_DATA 0x3C5
typedef struct _smiCardInfo {
FbdevPriv fbdev;
SubCardPrivRec sub;
CARD16 io_base;
CARD8 *reg_base;
DPR *dpr;
@ -135,7 +177,7 @@ typedef struct _smiCardInfo {
#define smiCardInfo(kd) SmiCardInfo *smic = getSmiCardInfo(kd)
typedef struct _smiScreenInfo {
FbdevScrPriv fbdev;
SubScreenPrivRec sub;
CARD8 *screen;
CARD32 stride;
CARD32 data_format;

View File

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