Commit d04f61bf authored by Adam Jackson's avatar Adam Jackson 🎧

Bug #400 (partial): Driver fixes for the dlloader. When using dlloader, all

    framebuffer formats except cfb and the overlay modes should work, and
    r128 and radeon need to be loaded from the ati driver (both issues to
    be fixed soon). Tested on i740, s3virge, mach64, tdfx, vesa, and vga
    drivers. elfloader users shouldn't be affected.
parent 6dcb78bb
/*
* atifillin.c: fill in a ScrnInfoPtr with the relevant information for
* atimisc.
*
* (c) 2004 Adam Jackson. Standard MIT license applies.
*/
#include "atifillin.h"
void ATIFillInScreenInfo(ScrnInfoPtr pScreenInfo)
{
pScreenInfo->driverVersion = ATI_VERSION_CURRENT;
pScreenInfo->driverName = ATI_DRIVER_NAME;
pScreenInfo->name = ATI_NAME;
pScreenInfo->Probe = ATIProbe;
pScreenInfo->PreInit = ATIPreInit;
pScreenInfo->ScreenInit = ATIScreenInit;
pScreenInfo->SwitchMode = ATISwitchMode;
pScreenInfo->AdjustFrame = ATIAdjustFrame;
pScreenInfo->EnterVT = ATIEnterVT;
pScreenInfo->LeaveVT = ATILeaveVT;
pScreenInfo->FreeScreen = ATIFreeScreen;
pScreenInfo->ValidMode = ATIValidMode;
}
/*
* atifillin.h: header for atifillin.c.
*
* (c) 2004 Adam Jackson. Standard MIT license applies.
*/
#ifndef ATI_FILLIN_H
#define ATI_FILLIN_H
/* include headers corresponding to fields touched by ATIFillInScreenInfo() */
#include "ativersion.h"
#include "atiprobe.h"
#include "atipreinit.h"
#include "atiscreen.h"
#include "aticonsole.h"
#include "atiadjust.h"
#include "ativalid.h"
extern void ATIFillInScreenInfo FunctionPrototype((ScrnInfoPtr));
#endif
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c,v 1.60 2003/10/07 22:47:11 martin Exp $ */
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c,v 1.62tsi Exp $ */
/*
* Copyright 1997 through 2003 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
* Copyright 1997 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
......@@ -27,6 +27,7 @@
#include "atibus.h"
#include "atichip.h"
#include "aticonsole.h"
#include "atifillin.h"
#include "atiident.h"
#include "atimach64io.h"
#include "atimodule.h"
......@@ -57,32 +58,6 @@
* largely ignored.
*/
#ifdef XFree86LOADER
/*
* The following exists to prevent the compiler from considering entry points
* defined in a separate module from being constants.
*/
static xf86PreInitProc * const volatile PreInitProc = ATIPreInit;
static xf86ScreenInitProc * const volatile ScreenInitProc = ATIScreenInit;
static xf86SwitchModeProc * const volatile SwitchModeProc = ATISwitchMode;
static xf86AdjustFrameProc * const volatile AdjustFrameProc = ATIAdjustFrame;
static xf86EnterVTProc * const volatile EnterVTProc = ATIEnterVT;
static xf86LeaveVTProc * const volatile LeaveVTProc = ATILeaveVT;
static xf86FreeScreenProc * const volatile FreeScreenProc = ATIFreeScreen;
static xf86ValidModeProc * const volatile ValidModeProc = ATIValidMode;
#define ATIPreInit PreInitProc
#define ATIScreenInit ScreenInitProc
#define ATISwitchMode SwitchModeProc
#define ATIAdjustFrame AdjustFrameProc
#define ATIEnterVT EnterVTProc
#define ATILeaveVT LeaveVTProc
#define ATIFreeScreen FreeScreenProc
#define ATIValidMode ValidModeProc
#endif
/* Used as a temporary buffer */
#define Identifier ((char *)(pATI->MMIOCache))
......@@ -214,6 +189,8 @@ ATICheckSparseIOBases
return DoProbe;
}
#ifndef AVOID_NON_PCI
/*
* ATIClaimSparseIOBases --
*
......@@ -236,6 +213,8 @@ ATIClaimSparseIOBases
ProbeFlags[FirstPort] = ProbeFlag;
}
#endif /* AVOID_NON_PCI */
/*
* ATIVGAProbe --
*
......@@ -803,9 +782,8 @@ ATIAssignVGA
outb(VGA_DAC_MASK, 0xA5U);
if (inb(IBM_DAC_MASK) == 0xA5U)
pATI->VGAAdapter = ATI_ADAPTER_VGA;
outb(VGA_DAC_MASK, OldDACMask);
}
outb(VGA_DAC_MASK, OldDACMask);
}
break;
......@@ -825,10 +803,9 @@ ATIAssignVGA
outb(VGA_DAC_MASK, 0xA5U);
if (inb(IBM_DAC_MASK) == 0xA5U)
pATI->VGAAdapter = ATI_ADAPTER_VGA;
outb(VGA_DAC_MASK, OldDACMask);
}
outb(VGA_DAC_MASK, OldDACMask);
if (ClockSel & DISABPASSTHRU)
outw(CLOCK_SEL, ClockSel);
}
......@@ -854,10 +831,9 @@ ATIAssignVGA
outb(VGA_DAC_MASK, 0xA5U);
if (inb(IBM_DAC_MASK) == 0xA5U)
pATI->VGAAdapter = ATI_ADAPTER_MACH32;
outb(VGA_DAC_MASK, OldDACMask);
}
outb(VGA_DAC_MASK, OldDACMask);
if (ClockSel & DISABPASSTHRU)
outw(CLOCK_SEL, ClockSel);
if (MiscOptions & (DISABLE_VGA | DISABLE_DAC))
......@@ -879,10 +855,9 @@ ATIAssignVGA
outb(VGA_DAC_MASK, 0xA5U);
if (in8(M64_DAC_MASK) == 0xA5U)
pATI->VGAAdapter = ATI_ADAPTER_MACH64;
outb(VGA_DAC_MASK, OldDACMask);
}
outb(VGA_DAC_MASK, OldDACMask);
if (!(DACCntl & DAC_VGA_ADR_EN))
outr(DAC_CNTL, DACCntl);
}
......@@ -927,6 +902,8 @@ ATIAssignVGA
xf86MsgVerb(X_INFO, 3, ATI_NAME ": VGA assigned to this adapter.\n");
}
#ifndef AVOID_NON_PCI
/*
* ATIClaimVGA --
*
......@@ -955,6 +932,8 @@ ATIClaimVGA
ATIClaimSparseIOBases(ProbeFlags, pATI->CPIO_VGAWonder, 2, Detected);
}
#endif /* AVOID_NON_PCI */
/*
* ATIFindVGA --
*
......@@ -1217,6 +1196,8 @@ ATIProbe
xfree(PCIPorts);
#ifndef AVOID_NON_PCI
/*
* A note on probe strategy. I/O and memory response by certain PCI
* devices has been disabled by the common layer at this point,
......@@ -1328,6 +1309,9 @@ ATIProbe
ATIClaimSparseIOBases(ProbeFlags, Mach64SparseIOBases[i], 4,
DetectedMach64);
}
#endif /* AVOID_NON_PCI */
}
#endif /* AVOID_CPIO */
......@@ -1370,7 +1354,7 @@ ATIProbe
"Unshared PCI sparse I/O Mach64 in slot %d:%d:%d",
pVideo->bus, pVideo->device, pVideo->func);
xf86MsgVerb(X_INFO, 3,
ATI_NAME ": %s detected through Block 0 at 0x%08X.\n",
ATI_NAME ": %s detected through Block 0 at 0x%08lX.\n",
Identifier, pATI->Block0Base);
AddAdapter(pATI);
pATI->PCIInfo = pVideo;
......@@ -1493,6 +1477,8 @@ ATIProbe
pVideo->bus, pVideo->device, pVideo->func);
break;
#ifndef AVOID_NON_PCI
case Detected8514A:
if ((p8514->BusType >= ATI_BUS_PCI) && !p8514->PCIInfo)
p8514->PCIInfo = pVideo;
......@@ -1514,6 +1500,8 @@ ATIProbe
pVideo->bus, pVideo->device, pVideo->func);
break;
#endif /* AVOID_NON_PCI */
default: /* Must be DoProbe */
if (!xf86CheckPciSlot(pVideo->bus,
pVideo->device,
......@@ -1587,6 +1575,8 @@ ATIProbe
pVideo->bus, pVideo->device, pVideo->func);
break;
#ifndef AVOID_NON_PCI
case Detected8514A:
xf86Msg(X_WARNING,
ATI_NAME ": PCI Mach64 in slot %d:%d:%d will not"
......@@ -1610,6 +1600,8 @@ ATIProbe
Mach64SparseIOBases[j]);
break;
#endif /* AVOID_NON_PCI */
default: /* Must be DoProbe */
if (!xf86CheckPciSlot(pVideo->bus,
pVideo->device,
......@@ -1689,7 +1681,7 @@ ATIProbe
sprintf(Identifier, "Shared PCI Mach64 in slot %d:%d:%d",
pVideo->bus, pVideo->device, pVideo->func);
xf86MsgVerb(X_INFO, 3,
ATI_NAME ": %s with Block 0 base 0x%08X detected.\n",
ATI_NAME ": %s with Block 0 base 0x%08lX detected.\n",
Identifier, pATI->Block0Base);
AddAdapter(pATI);
pATI->SharedAccelerator = TRUE;
......@@ -1724,43 +1716,12 @@ ATIProbe
Chip = ATIChipID(pVideo->chipType, pVideo->chipRev);
if (Chip > ATI_CHIP_Mach64)
{
switch (Chip)
{
case ATI_CHIP_RAGE128GL:
case ATI_CHIP_RAGE128VR:
case ATI_CHIP_RAGE128PROULTRA:
case ATI_CHIP_RAGE128PROGL:
case ATI_CHIP_RAGE128PROVR:
case ATI_CHIP_RAGE128MOBILITY3:
case ATI_CHIP_RAGE128MOBILITY4:
DoRage128 = TRUE;
continue;
case ATI_CHIP_RADEON:
case ATI_CHIP_RADEONVE:
case ATI_CHIP_RADEONMOBILITY6:
case ATI_CHIP_RS100:
case ATI_CHIP_RS200:
case ATI_CHIP_RS250:
case ATI_CHIP_RADEONMOBILITY7:
case ATI_CHIP_R200:
case ATI_CHIP_RV200:
case ATI_CHIP_RV250:
case ATI_CHIP_RADEONMOBILITY9:
case ATI_CHIP_RS300:
case ATI_CHIP_RV280:
case ATI_CHIP_RADEONMOBILITY9PLUS:
case ATI_CHIP_R300:
case ATI_CHIP_RV350:
case ATI_CHIP_R350:
case ATI_CHIP_R360:
DoRadeon = TRUE;
continue;
if (Chip <= ATI_CHIP_Rage128)
DoRage128 = TRUE;
else if (Chip <= ATI_CHIP_Radeon)
DoRadeon = TRUE;
case ATI_CHIP_HDTV:
default:
continue;
}
continue;
}
if (!nATIGDev)
......@@ -2313,18 +2274,7 @@ NoVGAWonder:;
ATIPtrs[j - 1] = NULL;
/* Fill in probe data */
pScreenInfo->driverVersion = ATI_VERSION_CURRENT;
pScreenInfo->driverName = ATI_DRIVER_NAME;
pScreenInfo->name = ATI_NAME;
pScreenInfo->Probe = ATIProbe;
pScreenInfo->PreInit = ATIPreInit;
pScreenInfo->ScreenInit = ATIScreenInit;
pScreenInfo->SwitchMode = ATISwitchMode;
pScreenInfo->AdjustFrame = ATIAdjustFrame;
pScreenInfo->EnterVT = ATIEnterVT;
pScreenInfo->LeaveVT = ATILeaveVT;
pScreenInfo->FreeScreen = ATIFreeScreen;
pScreenInfo->ValidMode = ATIValidMode;
ATIFillInScreenInfo(pScreenInfo);
pScreenInfo->driverPrivate = pATI;
......
......@@ -138,7 +138,7 @@ typedef enum {
OPTION_SHOW_CACHE
} R128Opts;
const OptionInfoRec R128Options[] = {
static const OptionInfoRec R128Options[] = {
{ OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_SW_CURSOR, "SWcursor", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_DAC_6BIT, "Dac6Bit", OPTV_BOOLEAN, {0}, FALSE },
......@@ -165,6 +165,8 @@ const OptionInfoRec R128Options[] = {
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
OptionInfoRec *R128OptionsWeak(void) { return R128Options; }
R128RAMRec R128RAM[] = { /* Memory Specifications
From RAGE 128 Software Development
Manual (Technical Reference Manual P/N
......@@ -1919,9 +1921,9 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
if (!xf86LoadSubModule(pScrn, "fbdevhw")) return FALSE;
xf86LoaderReqSymLists(fbdevHWSymbols, NULL);
if (!fbdevHWInit(pScrn, info->PciInfo, NULL)) return FALSE;
pScrn->SwitchMode = fbdevHWSwitchMode;
pScrn->AdjustFrame = fbdevHWAdjustFrame;
pScrn->ValidMode = fbdevHWValidMode;
pScrn->SwitchMode = LoaderSymbol("fbdevHWSwitchMode");
pScrn->AdjustFrame = LoaderSymbol("fbdevHWAdjustFrame");
pScrn->ValidMode = LoaderSymbol("fbdevHWValidMode");
}
if (!info->FBDev)
......@@ -2425,7 +2427,7 @@ Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* Colormap setup */
if (!miCreateDefColormap(pScreen)) return FALSE;
if (!xf86HandleColormaps(pScreen, 256, info->dac6bits ? 6 : 8,
(info->FBDev ? fbdevHWLoadPalette :
(info->FBDev ? LoaderSymbol("fbdevHWLoadPalette") :
R128LoadPalette), NULL,
CMAP_PALETTED_TRUECOLOR
| CMAP_RELOAD_ON_MODE_SWITCH
......@@ -2436,7 +2438,7 @@ Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* DPMS setup - FIXME: also for mirror mode in non-fbdev case? - Michel */
if (info->FBDev)
xf86DPMSInit(pScreen, fbdevHWDPMSSet, 0);
xf86DPMSInit(pScreen, LoaderSymbol("fbdevHWDPMSSet"), 0);
else {
if (!info->HasPanelRegs || info->BIOSDisplay == R128_BIOS_DISPLAY_CRT)
xf86DPMSInit(pScreen, R128DisplayPowerManagementSet, 0);
......@@ -3674,4 +3676,19 @@ static int r128_set_backlight_enable(ScrnInfoPtr pScrn, int on)
OUTREG(R128_LVDS_GEN_CNTL, lvds_gen_cntl);
return 0;
}
}
void R128FillInScreenInfo(ScrnInfoPtr pScrn)
{
pScrn->driverVersion = R128_VERSION_CURRENT;
pScrn->driverName = R128_DRIVER_NAME;
pScrn->name = R128_NAME;
pScrn->PreInit = R128PreInit;
pScrn->ScreenInit = R128ScreenInit;
pScrn->SwitchMode = R128SwitchMode;
pScrn->AdjustFrame = R128AdjustFrame;
pScrn->EnterVT = R128EnterVT;
pScrn->LeaveVT = R128LeaveVT;
pScrn->FreeScreen = R128FreeScreen;
pScrn->ValidMode = R128ValidMode;
}
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.c,v 1.18 2003/02/09 15:33:17 tsi Exp $ */
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.c,v 1.17 2003/02/07 20:41:15 martin Exp $ */
/*
* Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
* Precision Insight, Inc., Cedar Park, Texas, and
......@@ -48,32 +48,6 @@
#include "xf86_ansic.h"
#include "xf86Resources.h"
#ifdef XFree86LOADER
/*
* The following exists to prevent the compiler from considering entry points
* defined in a separate module from being constants.
*/
static xf86PreInitProc * const volatile PreInitProc = R128PreInit;
static xf86ScreenInitProc * const volatile ScreenInitProc = R128ScreenInit;
static xf86SwitchModeProc * const volatile SwitchModeProc = R128SwitchMode;
static xf86AdjustFrameProc * const volatile AdjustFrameProc = R128AdjustFrame;
static xf86EnterVTProc * const volatile EnterVTProc = R128EnterVT;
static xf86LeaveVTProc * const volatile LeaveVTProc = R128LeaveVT;
static xf86FreeScreenProc * const volatile FreeScreenProc = R128FreeScreen;
static xf86ValidModeProc * const volatile ValidModeProc = R128ValidMode;
#define R128PreInit PreInitProc
#define R128ScreenInit ScreenInitProc
#define R128SwitchMode SwitchModeProc
#define R128AdjustFrame AdjustFrameProc
#define R128EnterVT EnterVTProc
#define R128LeaveVT LeaveVTProc
#define R128FreeScreen FreeScreenProc
#define R128ValidMode ValidModeProc
#endif
SymTabRec R128Chipsets[] = {
/* FIXME: The chipsets with (PCI/AGP) are not known wether they are AGP or
* PCI, so I've labeled them as such in hopes users will submit
......@@ -194,7 +168,7 @@ R128AvailableOptions(int chipid, int busid)
chipid -= PCI_VENDOR_ATI << 16;
for (i = 0; R128PciChipsets[i].PCIid > 0; i++) {
if (chipid == R128PciChipsets[i].PCIid)
return R128Options;
return R128OptionsWeak();
}
return NULL;
}
......@@ -280,18 +254,8 @@ R128Probe(DriverPtr drv, int flags)
#endif
pScrn->driverVersion = R128_VERSION_CURRENT;
pScrn->driverName = R128_DRIVER_NAME;
pScrn->name = R128_NAME;
pScrn->Probe = R128Probe;
pScrn->PreInit = R128PreInit;
pScrn->ScreenInit = R128ScreenInit;
pScrn->SwitchMode = R128SwitchMode;
pScrn->AdjustFrame = R128AdjustFrame;
pScrn->EnterVT = R128EnterVT;
pScrn->LeaveVT = R128LeaveVT;
pScrn->FreeScreen = R128FreeScreen;
pScrn->ValidMode = R128ValidMode;
R128FillInScreenInfo(pScrn);
foundScreen = TRUE;
......
......@@ -69,10 +69,14 @@ extern void R128LeaveVT
FunctionPrototype((int, int));
extern void R128FreeScreen
FunctionPrototype((int, int));
extern int R128ValidMode
extern ModeStatus R128ValidMode
FunctionPrototype((int, DisplayModePtr, Bool,
int));
extern const OptionInfoRec R128Options[];
extern OptionInfoRec * R128OptionsWeak
FunctionPrototype((void));
extern void R128FillInScreenInfo
FunctionPrototype((ScrnInfoPtr));
#endif /* _R128_PROBE_H_ */
......@@ -111,8 +111,6 @@ static struct {
{ RADEON_ROP3_ONE, RADEON_ROP3_ONE } /* GXset */
};
extern int gRADEONEntityIndex;
/* The FIFO has 64 slots. This routines waits until at least `entries'
* of these slots are empty.
*/
......
......@@ -165,7 +165,7 @@ typedef enum {
OPTION_DYNAMIC_CLOCKS
} RADEONOpts;
const OptionInfoRec RADEONOptions[] = {
static const OptionInfoRec RADEONOptions[] = {
{ OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_SW_CURSOR, "SWcursor", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_DAC_6BIT, "Dac6Bit", OPTV_BOOLEAN, {0}, FALSE },
......@@ -210,6 +210,8 @@ const OptionInfoRec RADEONOptions[] = {
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
OptionInfoRec *RADEONOptionsWeak(void) { return RADEONOptions; }
static const char *vgahwSymbols[] = {
"vgaHWFreeHWRec",
"vgaHWGetHWRec",
......@@ -439,7 +441,7 @@ static const RADEONTMDSPll default_tmds_pll[CHIP_FAMILY_LAST][4] =
{{15000, 0xb0155}, {0xffffffff, 0xb01cb}, {0, 0}, {0, 0}}, /*CHIP_FAMILY_RV350*/
};
extern int gRADEONEntityIndex;
extern int getRADEONEntityIndex(void);
struct RADEONInt10Save {
CARD32 MEM_CNTL;
......@@ -455,7 +457,7 @@ static RADEONEntPtr RADEONEntPriv(ScrnInfoPtr pScrn)
DevUnion *pPriv;
RADEONInfoPtr info = RADEONPTR(pScrn);
pPriv = xf86GetEntityPrivate(info->pEnt->index,
gRADEONEntityIndex);
getRADEONEntityIndex());
return pPriv->ptr;
}
......@@ -4152,7 +4154,7 @@ Bool RADEONPreInit(ScrnInfoPtr pScrn, int flags)
xf86LoaderReqSymLists(fbdevHWSymbols, NULL);
if (fbdevHWInit(pScrn, info->PciInfo, NULL)) {
pScrn->ValidMode = fbdevHWValidMode;
pScrn->ValidMode = LoaderSymbol("fbdevHWValidMode");
info->FBDev = TRUE;
xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
"Using framebuffer device\n");
......@@ -8060,3 +8062,20 @@ static void RADEONSetDynamicClock(ScrnInfoPtr pScrn, int mode)
}
}
void RADEONFillInScreenInfo(ScrnInfoPtr pScrn)
{
pScrn->driverVersion = RADEON_VERSION_CURRENT;
pScrn->driverName = RADEON_DRIVER_NAME;
pScrn->name = RADEON_NAME;
pScrn->PreInit = RADEONPreInit;
pScrn->ScreenInit = RADEONScreenInit;
pScrn->SwitchMode = RADEONSwitchMode;
#ifdef X_XF86MiscPassMessage
pScrn->HandleMessage = RADEONHandleMessage;
#endif
pScrn->AdjustFrame = RADEONAdjustFrame;
pScrn->EnterVT = RADEONEnterVT;
pScrn->LeaveVT = RADEONLeaveVT;
pScrn->FreeScreen = RADEONFreeScreen;
pScrn->ValidMode = RADEONValidMode;
}
......@@ -49,39 +49,6 @@
#include "xf86misc.h"
#include "xf86Resources.h"
#ifdef XFree86LOADER
/*
* The following exists to prevent the compiler from considering entry points
* defined in a separate module from being constants.
*/
static xf86PreInitProc *const volatile PreInitProc = RADEONPreInit;
static xf86ScreenInitProc *const volatile ScreenInitProc = RADEONScreenInit;
static xf86SwitchModeProc *const volatile SwitchModeProc = RADEONSwitchMode;
static xf86AdjustFrameProc *const volatile AdjustFrameProc = RADEONAdjustFrame;
static xf86EnterVTProc *const volatile EnterVTProc = RADEONEnterVT;
static xf86LeaveVTProc *const volatile LeaveVTProc = RADEONLeaveVT;
static xf86FreeScreenProc *const volatile FreeScreenProc = RADEONFreeScreen;
static xf86ValidModeProc *const volatile ValidModeProc = RADEONValidMode;
#ifdef X_XF86MiscPassMessage
static xf86HandleMessageProc *const volatile HandleMessageProc
= RADEONHandleMessage;
#endif
#define RADEONPreInit PreInitProc
#define RADEONScreenInit ScreenInitProc
#define RADEONSwitchMode SwitchModeProc
#define RADEONAdjustFrame AdjustFrameProc
#define RADEONEnterVT EnterVTProc
#define RADEONLeaveVT LeaveVTProc
#define RADEONFreeScreen FreeScreenProc
#define RADEONValidMode ValidModeProc
#ifdef X_XF86MiscPassMessage
# define RADEONHandleMessage HandleMessageProc
#endif
#endif
SymTabRec RADEONChipsets[] = {
{ PCI_CHIP_RADEON_QD, "ATI Radeon QD (AGP)" },
{ PCI_CHIP_RADEON_QE, "ATI Radeon QE (AGP)" },
......@@ -220,6 +187,8 @@ PciChipsets RADEONPciChipsets[] = {
int gRADEONEntityIndex = -1;
const int getRADEONEntityIndex(void) { return gRADEONEntityIndex; }
/* Return the options for supported chipset 'n'; NULL otherwise */
const OptionInfoRec *
RADEONAvailableOptions(int chipid, int busid)
......@@ -234,7 +203,7 @@ RADEONAvailableOptions(int chipid, int busid)
chipid -= PCI_VENDOR_ATI << 16;
for (i = 0; RADEONPciChipsets[i].PCIid > 0; i++) {
if (chipid == RADEONPciChipsets[i].PCIid)
return RADEONOptions;
return RADEONOptionsWeak();
}
return NULL;
}
......@@ -317,21 +286,8 @@ RADEONProbe(DriverPtr drv, int flags)
xf86LoaderReqSymLists(RADEONSymbols, NULL);
#endif
pScrn->driverVersion = RADEON_VERSION_CURRENT;
pScrn->driverName = RADEON_DRIVER_NAME;
pScrn->name = RADEON_NAME;
pScrn->Probe = RADEONProbe;
pScrn->PreInit = RADEONPreInit;
pScrn->ScreenInit = RADEONScreenInit;
pScrn->SwitchMode = RADEONSwitchMode;
#ifdef X_XF86MiscPassMessage
pScrn->HandleMessage = RADEONHandleMessage;
#endif
pScrn->AdjustFrame = RADEONAdjustFrame;
pScrn->EnterVT = RADEONEnterVT;
pScrn->LeaveVT = RADEONLeaveVT;
pScrn->FreeScreen = RADEONFreeScreen;
pScrn->ValidMode = RADEONValidMode;
RADEONFillInScreenInfo(pScrn);
foundScreen = TRUE;
}
......
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.h,v 1.11 2003/07/02 17:31:30 martin Exp $ */
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.h,v 1.13 2003/10/30 17:37:00 tsi Exp $ */
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario, and
* VA Linux Systems Inc., Fremont, California.
......@@ -60,9 +60,9 @@ typedef struct
ScrnInfoPtr pPrimaryScrn;
int MonType1;
int MonType2;
int MonType2;
xf86MonPtr MonInfo1;
xf86MonPtr MonInfo2;
xf86MonPtr MonInfo2;
Bool ReversedDAC; /* TVDAC used as primary dac */
Bool ReversedTMDS; /* DDC_DVI is used for external TMDS */
} RADEONEntRec, *RADEONEntPtr;
......@@ -100,10 +100,14 @@ extern void RADEONLeaveVT
FunctionPrototype((int, int));
extern void RADEONFreeScreen
FunctionPrototype((int, int));
extern int RADEONValidMode
extern ModeStatus RADEONValidMode
FunctionPrototype((int, DisplayModePtr, Bool,
int));
extern const OptionInfoRec RADEONOptions[];
extern OptionInfoRec * RADEONOptionsWeak
FunctionPrototype((void));
extern void RADEONFillInScreenInfo
FunctionPrototype((ScrnInfoPtr));
#endif /* _RADEON_PROBE_H_ */
......@@ -21,8 +21,6 @@
#define TIMER_MASK (OFF_TIMER | FREE_TIMER)
extern int gRADEONEntityIndex;
static void RADEONInitOffscreenImages(ScreenPtr);
static XF86VideoAdaptorPtr RADEONSetupImageVideo(ScreenPtr);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment