Fix fbdev server to allow accelerated servers on top to use RandR. Switch

smi server to fbdev (vesa bios doesnt work on the Acer I have here)
This commit is contained in:
Keith Packard 2003-10-05 05:22:35 +00:00
parent f3d8476ced
commit adc5b8068d
8 changed files with 202 additions and 163 deletions

View File

@ -192,6 +192,7 @@ fbdevScreenInitialize (KdScreenInfo *screen, FbdevScrPriv *scrpriv)
} }
screen->rate = 72; screen->rate = 72;
scrpriv->randr = screen->randr; scrpriv->randr = screen->randr;
scrpriv->layerKind = LAYER_FB;
#ifdef FAKE24_ON_16 #ifdef FAKE24_ON_16
if (screen->fb[0].depth == 24 && screen->fb[0].bitsPerPixel == 24 && if (screen->fb[0].depth == 24 && screen->fb[0].bitsPerPixel == 24 &&
@ -339,18 +340,13 @@ fbdevUpdateFake24 (ScreenPtr pScreen,
} }
#endif /* FAKE24_ON_16 */ #endif /* FAKE24_ON_16 */
LayerPtr void
fbdevLayerCreate (ScreenPtr pScreen) fbdevConfigureScreen (ScreenPtr pScreen)
{ {
KdScreenPriv(pScreen); KdScreenPriv(pScreen);
KdScreenInfo *screen = pScreenPriv->screen; KdScreenInfo *screen = pScreenPriv->screen;
FbdevPriv *priv = pScreenPriv->card->driver; FbdevPriv *priv = pScreenPriv->card->driver;
FbdevScrPriv *scrpriv = screen->driver; FbdevScrPriv *scrpriv = screen->driver;
LayerPtr pLayer;
ShadowUpdateProc update;
ShadowWindowProc window;
PixmapPtr pPixmap;
int kind;
KdMouseMatrix m; KdMouseMatrix m;
#ifdef FAKE24_ON_16 #ifdef FAKE24_ON_16
@ -385,7 +381,22 @@ fbdevLayerCreate (ScreenPtr pScreen)
pScreen->mmHeight = screen->width_mm; pScreen->mmHeight = screen->width_mm;
} }
KdSetMouseMatrix (&m); KdSetMouseMatrix (&m);
}
LayerPtr
fbdevLayerCreate (ScreenPtr pScreen)
{
KdScreenPriv(pScreen);
KdScreenInfo *screen = pScreenPriv->screen;
FbdevPriv *priv = pScreenPriv->card->driver;
FbdevScrPriv *scrpriv = screen->driver;
LayerPtr pLayer;
ShadowUpdateProc update;
ShadowWindowProc window;
PixmapPtr pPixmap;
int kind;
KdMouseMatrix m;
if (scrpriv->shadow) if (scrpriv->shadow)
{ {
window = fbdevWindowLinear; window = fbdevWindowLinear;
@ -410,7 +421,7 @@ fbdevLayerCreate (ScreenPtr pScreen)
} }
else else
{ {
kind = LAYER_FB; kind = scrpriv->layerKind;
pPixmap = LAYER_SCREEN_PIXMAP; pPixmap = LAYER_SCREEN_PIXMAP;
update = 0; update = 0;
window = 0; window = 0;
@ -486,55 +497,76 @@ fbdevRandRSetConfig (ScreenPtr pScreen,
KdScreenInfo *screen = pScreenPriv->screen; KdScreenInfo *screen = pScreenPriv->screen;
FbdevPriv *priv = pScreenPriv->card->driver; FbdevPriv *priv = pScreenPriv->card->driver;
FbdevScrPriv *scrpriv = screen->driver; FbdevScrPriv *scrpriv = screen->driver;
int rotate;
int reflect;
Bool wasEnabled = pScreenPriv->enabled; Bool wasEnabled = pScreenPriv->enabled;
FbdevScrPriv oldscr;
int oldwidth;
int oldheight;
int oldmmwidth;
int oldmmheight;
LayerPtr pNewLayer;
int newwidth, newheight;
/* if (screen->randr & (RR_Rotate_0|RR_Rotate_180))
* The only thing that can change is rotation
*/
randr = KdAddRotation (randr, screen->randr);
if (scrpriv->randr != randr)
{ {
LayerPtr pNewLayer; newwidth = pSize->width;
int kind; newheight = pSize->height;
int oldrandr = scrpriv->randr;
int oldshadow = scrpriv->shadow;
int oldwidth = pScreen->width;
int oldheight = pScreen->height;
PixmapPtr pPixmap;
if (wasEnabled)
KdDisableScreen (pScreen);
scrpriv->randr = randr;
pNewLayer = fbdevLayerCreate (pScreen);
if (!pNewLayer)
{
scrpriv->shadow = oldshadow;
scrpriv->randr = oldrandr;
}
if (WalkTree (pScreen, fbdevLayerAdd, (pointer) pNewLayer) == WT_STOPWALKING)
{
WalkTree (pScreen, fbdevLayerRemove, (pointer) pNewLayer);
LayerDestroy (pScreen, pNewLayer);
scrpriv->randr = oldrandr;
scrpriv->shadow = oldshadow;
pScreen->width = oldwidth;
pScreen->height = oldheight;
if (wasEnabled)
KdEnableScreen (pScreen);
return FALSE;
}
WalkTree (pScreen, fbdevLayerRemove, (pointer) scrpriv->pLayer);
LayerDestroy (pScreen, scrpriv->pLayer);
scrpriv->pLayer = pNewLayer;
KdSetSubpixelOrder (pScreen, scrpriv->randr);
if (wasEnabled)
KdEnableScreen (pScreen);
} }
else
{
newwidth = pSize->height;
newheight = pSize->width;
}
if (wasEnabled)
KdDisableScreen (pScreen);
oldscr = *scrpriv;
oldwidth = screen->width;
oldheight = screen->height;
oldmmwidth = pScreen->mmWidth;
oldmmheight = pScreen->mmHeight;
/*
* Set new configuration
*/
scrpriv->randr = KdAddRotation (screen->randr, randr);
fbdevConfigureScreen (pScreen);
pNewLayer = fbdevLayerCreate (pScreen);
if (!pNewLayer)
goto bail4;
if (WalkTree (pScreen, fbdevLayerAdd, (pointer) pNewLayer) == WT_STOPWALKING)
goto bail5;
WalkTree (pScreen, fbdevLayerRemove, (pointer) scrpriv->pLayer);
LayerDestroy (pScreen, scrpriv->pLayer);
scrpriv->pLayer = pNewLayer;
KdSetSubpixelOrder (pScreen, scrpriv->randr);
if (wasEnabled)
KdEnableScreen (pScreen);
return TRUE; return TRUE;
bail5:
WalkTree (pScreen, fbdevLayerRemove, (pointer) pNewLayer);
LayerDestroy (pScreen, pNewLayer);
bail4:
pScreen->width = oldwidth;
pScreen->height = oldheight;
pScreen->mmWidth = oldmmwidth;
pScreen->mmHeight = oldmmheight;
bail2:
*scrpriv = oldscr;
bail1:
if (wasEnabled)
KdEnableScreen (pScreen);
bail0:
return FALSE;
} }
Bool Bool
@ -590,10 +622,6 @@ Bool
fbdevInitScreen (ScreenPtr pScreen) fbdevInitScreen (ScreenPtr pScreen)
{ {
KdScreenPriv(pScreen); KdScreenPriv(pScreen);
FbdevPriv *priv = pScreenPriv->card->driver;
FbdevScrPriv *scrpriv = pScreenPriv->screen->driver;
ShadowUpdateProc update;
ShadowWindowProc window;
#ifdef TOUCHSCREEN #ifdef TOUCHSCREEN
KdTsPhyScreen = pScreen->myNum; KdTsPhyScreen = pScreen->myNum;
@ -603,15 +631,30 @@ fbdevInitScreen (ScreenPtr pScreen)
if (!LayerStartInit (pScreen)) if (!LayerStartInit (pScreen))
return FALSE; return FALSE;
return TRUE;
}
Bool
fbdevFinishInitScreen (ScreenPtr pScreen)
{
KdScreenPriv(pScreen);
FbdevPriv *priv = pScreenPriv->card->driver;
FbdevScrPriv *scrpriv = pScreenPriv->screen->driver;
scrpriv->layerKind = LayerNewKind (pScreen);
if (!LayerFinishInit (pScreen)) if (!LayerFinishInit (pScreen))
return FALSE; return FALSE;
scrpriv->pLayer = fbdevLayerCreate (pScreen); scrpriv->pLayer = fbdevLayerCreate (pScreen);
if (!scrpriv->pLayer) if (!scrpriv->pLayer)
return FALSE; return FALSE;
#ifdef RANDR #ifdef RANDR
if (!fbdevRandRInit (pScreen)) if (!fbdevRandRInit (pScreen))
return FALSE; return FALSE;
#endif #endif
return TRUE; return TRUE;
} }
@ -789,32 +832,3 @@ fbdevPutColors (ScreenPtr pScreen, int fb, int n, xColorItem *pdefs)
cmap.transp = 0; cmap.transp = 0;
ioctl (priv->fd, FBIOPUTCMAP, &cmap); ioctl (priv->fd, FBIOPUTCMAP, &cmap);
} }
KdCardFuncs fbdevFuncs = {
fbdevCardInit, /* cardinit */
fbdevScreenInit, /* scrinit */
fbdevInitScreen, /* initScreen */
fbdevPreserve, /* preserve */
fbdevEnable, /* enable */
fbdevDPMS, /* dpms */
fbdevDisable, /* disable */
fbdevRestore, /* restore */
fbdevScreenFini, /* scrfini */
fbdevCardFini, /* cardfini */
0, /* initCursor */
0, /* enableCursor */
0, /* disableCursor */
0, /* finiCursor */
0, /* recolorCursor */
0, /* initAccel */
0, /* enableAccel */
0, /* syncAccel */
0, /* disableAccel */
0, /* finiAccel */
fbdevGetColors, /* getColors */
fbdevPutColors, /* putColors */
};

View File

@ -50,6 +50,7 @@ typedef struct _fbdevPriv {
typedef struct _fbdevScrPriv { typedef struct _fbdevScrPriv {
Rotation randr; Rotation randr;
Bool shadow; Bool shadow;
int layerKind;
LayerPtr pLayer; LayerPtr pLayer;
} FbdevScrPriv; } FbdevScrPriv;
@ -97,5 +98,7 @@ fbdevGetColors (ScreenPtr pScreen, int fb, int n, xColorItem *pdefs);
void void
fbdevPutColors (ScreenPtr pScreen, int fb, int n, xColorItem *pdefs); fbdevPutColors (ScreenPtr pScreen, int fb, int n, xColorItem *pdefs);
Bool
fbdevFinishInitScreen (ScreenPtr pScreen);
#endif /* _FBDEV_H_ */ #endif /* _FBDEV_H_ */

View File

@ -56,3 +56,35 @@ ddxProcessArgument (int argc, char **argv, int i)
{ {
return KdProcessArgument (argc, argv, i); return KdProcessArgument (argc, argv, i);
} }
KdCardFuncs fbdevFuncs = {
fbdevCardInit, /* cardinit */
fbdevScreenInit, /* scrinit */
fbdevInitScreen, /* initScreen */
fbdevPreserve, /* preserve */
fbdevEnable, /* enable */
fbdevDPMS, /* dpms */
fbdevDisable, /* disable */
fbdevRestore, /* restore */
fbdevScreenFini, /* scrfini */
fbdevCardFini, /* cardfini */
0, /* initCursor */
0, /* enableCursor */
0, /* disableCursor */
0, /* finiCursor */
0, /* recolorCursor */
0, /* initAccel */
0, /* enableAccel */
0, /* syncAccel */
0, /* disableAccel */
0, /* finiAccel */
fbdevGetColors, /* getColors */
fbdevPutColors, /* putColors */
fbdevFinishInitScreen, /* finishInitScreen */
};

View File

@ -1,7 +1,7 @@
INCLUDES = \ 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/vesa \ -I$(top_srcdir)/hw/kdrive/fbdev \
-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 \
@ -24,7 +24,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/vesa/libvesa.a \ $(top_builddir)/hw/kdrive/fbdev/libfbdev.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 \

View File

@ -27,18 +27,6 @@
#include "smi.h" #include "smi.h"
#include <sys/io.h> #include <sys/io.h>
#define DEBUG
#ifdef DEBUG
#define DBGOUT(fmt,a...) fprintf (stderr, fmt, ##a)
#else
#define DBGOUT(fmt,a...)
#endif
#define ENTER() DBGOUT("Enter %s\n", __FUNCTION__)
#define LEAVE() DBGOUT("Leave %s\n", __FUNCTION__)
Bool Bool
smiCardInit (KdCardInfo *card) smiCardInit (KdCardInfo *card)
{ {
@ -48,10 +36,11 @@ smiCardInit (KdCardInfo *card)
smic = (SmiCardInfo *) xalloc (sizeof (SmiCardInfo)); smic = (SmiCardInfo *) xalloc (sizeof (SmiCardInfo));
if (!smic) if (!smic)
return FALSE; return FALSE;
memset (smic, '\0', sizeof (SmiCardInfo));
(void) smiMapReg (card, smic); (void) smiMapReg (card, smic);
if (!vesaInitialize (card, &smic->vesa)) if (!fbdevInitialize (card, &smic->fbdev))
{ {
xfree (smic); xfree (smic);
return FALSE; return FALSE;
@ -67,37 +56,21 @@ smiScreenInit (KdScreenInfo *screen)
{ {
SmiCardInfo *smic = screen->card->driver; SmiCardInfo *smic = screen->card->driver;
SmiScreenInfo *smis; SmiScreenInfo *smis;
int screen_size, memory;
ENTER(); ENTER();
smis = (SmiScreenInfo *) xalloc (sizeof (SmiScreenInfo)); smis = (SmiScreenInfo *) xalloc (sizeof (SmiScreenInfo));
if (!smis) if (!smis)
return FALSE; return FALSE;
memset (smis, '\0', sizeof (SmiScreenInfo)); memset (smis, '\0', sizeof (SmiScreenInfo));
if (!vesaScreenInitialize (screen, &smis->vesa)) if (!fbdevScreenInitialize (screen, &smis->fbdev))
{ {
xfree (smis); xfree (smis);
return FALSE; return FALSE;
} }
if (!smic->reg_base) if (!smic->reg_base)
screen->dumb = TRUE; screen->dumb = TRUE;
if (smis->vesa.mapping != VESA_LINEAR)
screen->dumb = TRUE;
smis->screen = smis->vesa.fb;
memory = smis->vesa.fb_size;
screen_size = screen->fb[0].byteStride * screen->height;
screen->softCursor = TRUE; screen->softCursor = TRUE;
memory -= screen_size; smis->screen = smic->fbdev.fb;
if (memory > screen->fb[0].byteStride)
{
smis->off_screen = smis->screen + screen_size;
smis->off_screen_size = memory;
}
else
{
smis->off_screen = 0;
smis->off_screen_size = 0;
}
screen->driver = smis; screen->driver = smis;
LEAVE(); LEAVE();
return TRUE; return TRUE;
@ -116,8 +89,9 @@ smiInitScreen (ScreenPtr pScreen)
smiInitVideo(pScreen); smiInitVideo(pScreen);
#endif #endif
#endif #endif
ret = vesaInitScreen (pScreen); ret = fbdevInitScreen (pScreen);
LEAVE(); LEAVE();
return ret;
} }
#ifdef RANDR #ifdef RANDR
@ -132,7 +106,7 @@ smiRandRSetConfig (ScreenPtr pScreen,
ENTER (); ENTER ();
KdCheckSync (pScreen); KdCheckSync (pScreen);
ret = vesaRandRSetConfig (pScreen, randr, rate, pSize); ret = fbdevRandRSetConfig (pScreen, randr, rate, pSize);
LEAVE(); LEAVE();
return ret; return ret;
} }
@ -152,15 +126,12 @@ smiRandRInit (ScreenPtr pScreen)
Bool Bool
smiFinishInitScreen (ScreenPtr pScreen) smiFinishInitScreen (ScreenPtr pScreen)
{ {
ENTER (); Bool ret;
if (!vesaFinishInitScreen (pScreen)) ret = fbdevFinishInitScreen (pScreen);
return FALSE;
#ifdef RANDR #ifdef RANDR
if (!smiRandRInit (pScreen)) smiRandRInit (pScreen);
return FALSE;
#endif #endif
LEAVE (); return ret;
return TRUE;
} }
void void
@ -169,7 +140,7 @@ smiPreserve (KdCardInfo *card)
SmiCardInfo *smic = card->driver; SmiCardInfo *smic = card->driver;
ENTER (); ENTER ();
vesaPreserve(card); fbdevPreserve(card);
LEAVE(); LEAVE();
} }
@ -261,7 +232,7 @@ smiEnable (ScreenPtr pScreen)
SmiCardInfo *smic = pScreenPriv->card->driver; SmiCardInfo *smic = pScreenPriv->card->driver;
ENTER (); ENTER ();
if (!vesaEnable (pScreen)) if (!fbdevEnable (pScreen))
return FALSE; return FALSE;
smiSetMMIO (pScreenPriv->card, smic); smiSetMMIO (pScreenPriv->card, smic);
@ -286,7 +257,7 @@ smiDisable (ScreenPtr pScreen)
KdXVDisable (pScreen); KdXVDisable (pScreen);
#endif #endif
smiResetMMIO (pScreenPriv->card, smic); smiResetMMIO (pScreenPriv->card, smic);
vesaDisable (pScreen); fbdevDisable (pScreen);
LEAVE (); LEAVE ();
} }
@ -295,7 +266,7 @@ smiDPMS (ScreenPtr pScreen, int mode)
{ {
Bool ret; Bool ret;
ENTER (); ENTER ();
ret = vesaDPMS (pScreen, mode); ret = fbdevDPMS (pScreen, mode);
LEAVE (); LEAVE ();
return ret; return ret;
} }
@ -306,7 +277,7 @@ smiRestore (KdCardInfo *card)
SmiCardInfo *smic = card->driver; SmiCardInfo *smic = card->driver;
ENTER (); ENTER ();
vesaRestore (card); fbdevRestore (card);
LEAVE(); LEAVE();
} }
@ -316,7 +287,7 @@ smiScreenFini (KdScreenInfo *screen)
SmiScreenInfo *smis = (SmiScreenInfo *) screen->driver; SmiScreenInfo *smis = (SmiScreenInfo *) screen->driver;
ENTER (); ENTER ();
vesaScreenFini (screen); fbdevScreenFini (screen);
xfree (smis); xfree (smis);
screen->driver = 0; screen->driver = 0;
LEAVE (); LEAVE ();
@ -329,7 +300,7 @@ smiCardFini (KdCardInfo *card)
ENTER (); ENTER ();
smiUnmapReg (card, smic); smiUnmapReg (card, smic);
vesaCardFini (card); fbdevCardFini (card);
LEAVE (); LEAVE ();
} }
@ -363,8 +334,8 @@ KdCardFuncs smiFuncs = {
smiDrawDisable, /* disableAccel */ smiDrawDisable, /* disableAccel */
smiDrawFini, /* finiAccel */ smiDrawFini, /* finiAccel */
vesaGetColors, /* getColors */ fbdevGetColors, /* getColors */
vesaPutColors, /* putColors */ fbdevPutColors, /* putColors */
smiFinishInitScreen, /* finishInitScreen */ smiFinishInitScreen, /* finishInitScreen */
}; };

View File

@ -25,9 +25,19 @@
#ifndef _SMI_H_ #ifndef _SMI_H_
#define _SMI_H_ #define _SMI_H_
#include <vesa.h> #include <fbdev.h>
#include "kxv.h" #include "kxv.h"
#define DEBUG
#ifdef DEBUG
#define DBGOUT(fmt,a...) fprintf (stderr, fmt, ##a)
#else
#define DBGOUT(fmt,a...)
#endif
#define ENTER() DBGOUT("Enter %s\n", __FUNCTION__)
#define LEAVE() DBGOUT("Leave %s\n", __FUNCTION__)
/* /*
* offset from ioport beginning * offset from ioport beginning
*/ */
@ -114,7 +124,7 @@ typedef struct _DPR {
#define VGA_SEQ_DATA 0x3C5 #define VGA_SEQ_DATA 0x3C5
typedef struct _smiCardInfo { typedef struct _smiCardInfo {
VesaCardPrivRec vesa; FbdevPriv fbdev;
CARD16 io_base; CARD16 io_base;
CARD8 *reg_base; CARD8 *reg_base;
DPR *dpr; DPR *dpr;
@ -125,13 +135,11 @@ typedef struct _smiCardInfo {
#define smiCardInfo(kd) SmiCardInfo *smic = getSmiCardInfo(kd) #define smiCardInfo(kd) SmiCardInfo *smic = getSmiCardInfo(kd)
typedef struct _smiScreenInfo { typedef struct _smiScreenInfo {
VesaScreenPrivRec vesa; FbdevScrPriv fbdev;
CARD8 *screen; CARD8 *screen;
CARD8 *off_screen; CARD32 stride;
int off_screen_size; CARD32 data_format;
CARD32 stride; CARD8 dpr_vpr_enable;
CARD32 data_format;
CARD8 dpr_vpr_enable;
} SmiScreenInfo; } SmiScreenInfo;
#define getSmiScreenInfo(kd) ((SmiScreenInfo *) ((kd)->screen->driver)) #define getSmiScreenInfo(kd) ((SmiScreenInfo *) ((kd)->screen->driver))

View File

@ -86,18 +86,6 @@ CARD8 smiSolidRop[16] = {
#define ENGINE_IDLE_EMPTY(smic) ((GET_STATUS(smic) & 0x18) == 0x10) #define ENGINE_IDLE_EMPTY(smic) ((GET_STATUS(smic) & 0x18) == 0x10)
#define FIFO_EMPTY(smic) ((GET_STATUS(smic) & 0x10) == 0x10) #define FIFO_EMPTY(smic) ((GET_STATUS(smic) & 0x10) == 0x10)
static void
smiSleep (int ms)
{
struct timespec req;
req.tv_sec = ms / 1000;
req.tv_nsec = (ms % 1000) * 1000000;
while (req.tv_sec || req.tv_nsec)
if (nanosleep (&req, &req) == 0)
break;
}
#define MAX_FIFO 16 #define MAX_FIFO 16
void void
@ -126,7 +114,7 @@ static DPR *dpr;
static CARD32 accel_cmd; static CARD32 accel_cmd;
static Bool static Bool
smiSetup (ScreenPtr pScreen, int wait) smiSetup (ScreenPtr pScreen, int wait)
{ {
KdScreenPriv(pScreen); KdScreenPriv(pScreen);
@ -259,13 +247,29 @@ Bool
smiDrawInit (ScreenPtr pScreen) smiDrawInit (ScreenPtr pScreen)
{ {
KdScreenPriv(pScreen); KdScreenPriv(pScreen);
smiCardInfo (pScreenPriv);
smiScreenInfo (pScreenPriv);
ENTER ();
if (pScreenPriv->screen->fb[0].depth == 4) if (pScreenPriv->screen->fb[0].depth == 4)
{
LEAVE ();
return FALSE; return FALSE;
}
if (!kaaDrawInit (pScreen, &smiKaa)) if (!smic->dpr)
{
LEAVE ();
return FALSE; return FALSE;
}
if (!kaaDrawInit (pScreen, &smiKaa))
{
LEAVE ();
return FALSE;
}
LEAVE ();
return TRUE; return TRUE;
} }
@ -276,10 +280,13 @@ smiDrawEnable (ScreenPtr pScreen)
int i; int i;
static const int xyAddress[] = { 320, 400, 512, 640, 800, 1024, 1280, 1600, 2048 }; static const int xyAddress[] = { 320, 400, 512, 640, 800, 1024, 1280, 1600, 2048 };
ENTER ();
smis = getSmiScreenInfo (pScreenPriv); smis = getSmiScreenInfo (pScreenPriv);
smic = getSmiCardInfo(pScreenPriv); smic = getSmiCardInfo(pScreenPriv);
dpr = smic->dpr; dpr = smic->dpr;
iopl(3);
smis->stride = pScreenPriv->screen->fb[0].byteStride; smis->stride = pScreenPriv->screen->fb[0].byteStride;
smis->dpr_vpr_enable = smiGetIndex (smic, VGA_SEQ_INDEX, smis->dpr_vpr_enable = smiGetIndex (smic, VGA_SEQ_INDEX,
VGA_SEQ_DATA, 0x21) & ~0x03; VGA_SEQ_DATA, 0x21) & ~0x03;
@ -310,23 +317,27 @@ smiDrawEnable (ScreenPtr pScreen)
} }
} }
smiSetup (pScreen, 0);
KdMarkSync (pScreen); KdMarkSync (pScreen);
LEAVE ();
} }
void void
smiDrawDisable (ScreenPtr pScreen) smiDrawDisable (ScreenPtr pScreen)
{ {
ENTER ();
smic = 0; smic = 0;
smis = 0; smis = 0;
dpr = 0; dpr = 0;
accel_cmd = 0; accel_cmd = 0;
iopl (0);
LEAVE ();
} }
void void
smiDrawFini (ScreenPtr pScreen) smiDrawFini (ScreenPtr pScreen)
{ {
ENTER ();
LEAVE ();
} }
void void

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 = vesaProcessArgument (argc, argv, i))) */
ret = KdProcessArgument(argc, argv, i); ret = KdProcessArgument(argc, argv, i);
return ret; return ret;
} }