mirror of
https://github.com/X11Libre/xf86-video-xgi.git
synced 2026-03-24 01:24:35 +00:00
Various trivial clean ups.
This commit is contained in:
162
src/xgi_dac.c
162
src/xgi_dac.c
@@ -61,9 +61,6 @@ static void Volari_Save(ScrnInfoPtr pScrn, XGIRegPtr xgiReg) ;
|
||||
static void Volari_Restore(ScrnInfoPtr pScrn, XGIRegPtr xgiReg) ;
|
||||
static void Volari_Threshold(ScrnInfoPtr pScrn, DisplayModePtr mode,
|
||||
unsigned short *Low, unsigned short *High);
|
||||
/*
|
||||
static void SetBlock(CARD16 port, CARD8 from, CARD8 to, CARD8 *DataPtr);
|
||||
*/
|
||||
int
|
||||
compute_vclk(
|
||||
int Clock,
|
||||
@@ -444,7 +441,6 @@ PDEBUG(ErrorF("--- Volari_Restore(). \n")) ;
|
||||
}
|
||||
|
||||
|
||||
/*outb(0x3C2, xgiReg->xgiRegs3C2);*/
|
||||
outb(pXGI->RelIO+0x42, xgiReg->xgiRegs3C2);
|
||||
|
||||
/* MemClock needs this to take effect */
|
||||
@@ -457,81 +453,63 @@ PDEBUG(ErrorF("--- Volari_Restore(). \n")) ;
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
static void
|
||||
Volari_Threshold(ScrnInfoPtr pScrn, DisplayModePtr mode,
|
||||
unsigned short *Low, unsigned short *High)
|
||||
unsigned short *Low, unsigned short *High)
|
||||
{
|
||||
XGIPtr pXGI = XGIPTR(pScrn);
|
||||
/* XGIRegPtr pReg = &pXGI->ModeReg;
|
||||
int mclk = pXGI->MemClock;
|
||||
int vclk = mode->Clock;
|
||||
int bpp = pScrn->bitsPerPixel/8;
|
||||
int lowa, lowb, low;
|
||||
struct funcargc *p;
|
||||
unsigned int i, j;
|
||||
*/
|
||||
XGIPtr pXGI = XGIPTR(pScrn);
|
||||
|
||||
orXGIIDXREG(XGISR, 0x3D, 0x01) ;
|
||||
orXGIIDXREG(XGISR, 0x3D, 0x01);
|
||||
}
|
||||
|
||||
const float magic315[4] = { 1.2, 1.368421, 2.263158, 1.2};
|
||||
|
||||
int XG40_MemBandWidth(ScrnInfoPtr pScrn)
|
||||
/**
|
||||
* Calculate available memory bandwidth for an XG40 series chip.
|
||||
*
|
||||
* \sa XG20_MemBandWidth
|
||||
*/
|
||||
static int XG40_MemBandWidth(ScrnInfoPtr pScrn)
|
||||
{
|
||||
XGIPtr pXGI = XGIPTR(pScrn);
|
||||
int bus = pXGI->BusWidth;
|
||||
int mclk = pXGI->MemClock;
|
||||
int bpp = pScrn->bitsPerPixel;
|
||||
float magic, total;
|
||||
|
||||
if ( bus > 128 ) bus = 128 ;
|
||||
|
||||
magic = magic315[bus/64];
|
||||
static const float magic315[4] = { 1.2, 1.368421, 2.263158, 1.2 };
|
||||
XGIPtr pXGI = XGIPTR(pScrn);
|
||||
const int bus = (pXGI->BusWidth > 128) ? 128 : pXGI->BusWidth;
|
||||
const int mclk = pXGI->MemClock;
|
||||
const int bpp = pScrn->bitsPerPixel;
|
||||
const float magic = magic315[bus / 64];
|
||||
float total = (mclk * bus) / bpp;
|
||||
|
||||
PDEBUG5(ErrorF("mclk: %d, bus: %d, magic: %f, bpp: %d\n",
|
||||
mclk, bus, magic, bpp));
|
||||
|
||||
total = mclk*bus/bpp;
|
||||
PDEBUG5(ErrorF("Total Adapter Bandwidth is %fM\n", total/1000));
|
||||
|
||||
if (pXGI->VBFlags & CRT2_ENABLE) {
|
||||
if (total/2 > 540000)
|
||||
{
|
||||
total = total - 540000;
|
||||
}
|
||||
else
|
||||
{
|
||||
total = total/2;
|
||||
}
|
||||
/* ErrorF("CRT1 Used Bandwidth is %gM\n", total/1000); */
|
||||
total = ((total / 2) > 540000)
|
||||
? (total - 540000) : (total / 2);
|
||||
}
|
||||
/*
|
||||
if( (total/magic) > (float)(MAX_INT))
|
||||
{
|
||||
return MAX_INT ;
|
||||
}
|
||||
*/
|
||||
return (int)(total/magic);
|
||||
|
||||
return (int)(total / magic);
|
||||
}
|
||||
|
||||
int XG20_MemBandWidth(ScrnInfoPtr pScrn)
|
||||
|
||||
/**
|
||||
* Calculate available memory bandwidth for an XG20 series chip.
|
||||
*
|
||||
* \sa XG40_MemBandWidth
|
||||
*/
|
||||
static int XG20_MemBandWidth(ScrnInfoPtr pScrn)
|
||||
{
|
||||
XGIPtr pXGI = XGIPTR(pScrn);
|
||||
int bus = pXGI->BusWidth;
|
||||
int mclk = pXGI->MemClock;
|
||||
int bpp = pScrn->bitsPerPixel;
|
||||
float magic, total;
|
||||
|
||||
if ( bus > 128 ) bus = 128 ;
|
||||
|
||||
magic = 1.44 ;
|
||||
XGIPtr pXGI = XGIPTR(pScrn);
|
||||
const int bus = (pXGI->BusWidth > 128) ? 128 : pXGI->BusWidth;
|
||||
const int mclk = pXGI->MemClock;
|
||||
const int bpp = pScrn->bitsPerPixel;
|
||||
const float magic = 1.44;
|
||||
float total = (mclk * bus) / bpp;
|
||||
|
||||
PDEBUG5(ErrorF("mclk: %d, bus: %d, magic: %f, bpp: %d\n",
|
||||
mclk, bus, magic, bpp));
|
||||
|
||||
total = mclk*bus/bpp;
|
||||
PDEBUG5(ErrorF("Total Adapter Bandwidth is %fM\n", total/1000));
|
||||
|
||||
return (int)(total/magic);
|
||||
return (int)(total / magic);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -645,32 +623,14 @@ XGIDACPreInit(ScrnInfoPtr pScrn)
|
||||
|
||||
PDEBUG(ErrorF("XGIDACPreInit()\n"));
|
||||
|
||||
switch (pXGI->Chipset) {
|
||||
case PCI_CHIP_XGIXG20:
|
||||
pXGI->MaxClock = XG20_MemBandWidth(pScrn);
|
||||
pXGI->XGISave = Volari_Save;
|
||||
pXGI->XGIRestore = Volari_Restore;
|
||||
pXGI->SetThreshold = Volari_Threshold;
|
||||
break;
|
||||
case PCI_CHIP_XGIXG40:
|
||||
default:
|
||||
pXGI->MaxClock = XG40_MemBandWidth(pScrn);
|
||||
pXGI->XGISave = Volari_Save;
|
||||
pXGI->XGIRestore = Volari_Restore;
|
||||
pXGI->SetThreshold = Volari_Threshold;
|
||||
break;
|
||||
}
|
||||
pXGI->XGISave = Volari_Save;
|
||||
pXGI->XGIRestore = Volari_Restore;
|
||||
pXGI->SetThreshold = Volari_Threshold;
|
||||
|
||||
pXGI->MaxClock = (pXGI->Chipset == PCI_CHIP_XGIXG20)
|
||||
? XG20_MemBandWidth(pScrn) : XG40_MemBandWidth(pScrn);
|
||||
}
|
||||
|
||||
/* static void
|
||||
SetBlock(CARD16 port, CARD8 from, CARD8 to, CARD8 *DataPtr)
|
||||
{
|
||||
CARD8 index;
|
||||
|
||||
for(index = from; index <= to; index++, DataPtr++) {
|
||||
outXGIIDXREG(port, index, *DataPtr);
|
||||
}
|
||||
} */
|
||||
|
||||
int
|
||||
XG40Mclk(XGIPtr pXGI)
|
||||
@@ -679,34 +639,24 @@ XG40Mclk(XGIPtr pXGI)
|
||||
unsigned char Num, Denum;
|
||||
|
||||
/* Numerator */
|
||||
switch (pXGI->Chipset) {
|
||||
case PCI_CHIP_XGIXG40:
|
||||
default:
|
||||
/* Numerator */
|
||||
read_xr(0x28, Num);
|
||||
mclk = 14318*((Num &0x7f)+1);
|
||||
inXGIIDXREG(0x3c4, 0x28, Num);
|
||||
mclk = 14318 * ((Num & 0x7f) + 1);
|
||||
|
||||
/* Denumerator */
|
||||
read_xr(0x29, Denum);
|
||||
mclk = mclk/((Denum & 0x1f)+1);
|
||||
/* Denumerator */
|
||||
inXGIIDXREG(0x3c4, 0x29, Denum);
|
||||
mclk = mclk / ((Denum & 0x1f) + 1);
|
||||
|
||||
/* Divider */
|
||||
if ((Num & 0x80)!=0) {
|
||||
mclk = mclk * 2;
|
||||
}
|
||||
|
||||
/* Post-Scaler */
|
||||
if ((Denum & 0x80)==0) {
|
||||
mclk = mclk / (((Denum & 0x60) >> 5) + 1);
|
||||
}
|
||||
else {
|
||||
mclk = mclk / ((((Denum & 0x60) >> 5) + 1) * 2);
|
||||
}
|
||||
break;
|
||||
/* mclk = 0; */
|
||||
/* Divider */
|
||||
if ((Num & 0x80)!=0) {
|
||||
mclk = mclk * 2;
|
||||
}
|
||||
|
||||
return(mclk);
|
||||
/* Post-Scaler */
|
||||
mclk /= ((Denum & 0x80) == 0)
|
||||
? (((Denum & 0x60) >> 5) + 1)
|
||||
: ((((Denum & 0x60) >> 5) + 1) * 2);
|
||||
|
||||
return mclk;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -28,34 +28,18 @@
|
||||
*
|
||||
*/
|
||||
|
||||
int compute_vclk(int Clock, int *out_n, int *out_dn, int *out_div,
|
||||
int *out_sbit, int *out_scale);
|
||||
int compute_vclk(int Clock, int *out_n, int *out_dn, int *out_div,
|
||||
int *out_sbit, int *out_scale);
|
||||
|
||||
void XGIDACPreInit(ScrnInfoPtr pScrn);
|
||||
|
||||
void XGILoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices,
|
||||
LOCO *colors, VisualPtr pVisual);
|
||||
void XGICalcClock(ScrnInfoPtr pScrn, int clock, int max_VLD,
|
||||
unsigned int *vclk);
|
||||
void XGIIODump(ScrnInfoPtr pScrn);
|
||||
int XG40_MemBandWidth(ScrnInfoPtr pScrn);
|
||||
int XGIMclk(XGIPtr pXGI);
|
||||
void XGIRestoreBridge(ScrnInfoPtr pScrn, XGIRegPtr xgiReg);
|
||||
LOCO *colors, VisualPtr pVisual);
|
||||
|
||||
void XGICalcClock(ScrnInfoPtr pScrn, int clock, int max_VLD, unsigned *vclk);
|
||||
|
||||
|
||||
/* Functions from init.c and init301.c */
|
||||
|
||||
extern void XGI_New_EnableBridge(XGI_Private *XGI_Pr, PXGI_HW_DEVICE_INFO);
|
||||
extern USHORT XGI_GetCH700x(XGI_Private *XGI_Pr, USHORT tempbx);
|
||||
extern void XGI_SetCH700x(XGI_Private *XGI_Pr, USHORT tempbx);
|
||||
extern USHORT XGI_GetCH701x(XGI_Private *XGI_Pr, USHORT tempbx);
|
||||
extern void XGI_SetCH701x(XGI_Private *XGI_Pr, USHORT tempbx);
|
||||
extern USHORT XGI_GetCH70xx(XGI_Private *XGI_Pr, USHORT tempbx);
|
||||
extern void XGI_SetCH70xx(XGI_Private *XGI_Pr, USHORT tempbx);
|
||||
extern void XGI_SetCH70xxANDOR(XGI_Private *XGI_Pr, USHORT tempax,USHORT tempbh);
|
||||
extern void XGI_SetTrumpReg(XGI_Private *XGI_Pr, USHORT tempbx);
|
||||
extern USHORT XGI_GetTrumpReg(XGI_Private *XGI_Pr, USHORT tempbx);
|
||||
extern void XGI_DDC2Delay(XGI_Private *XGI_Pr, USHORT delaytime);
|
||||
extern void XGI_SetChrontelGPIO(XGI_Private *XGI_Pr, USHORT myvbinfo);
|
||||
extern void XGI_New_DisplayOn(XGI_Private *XGI_Pr);
|
||||
extern unsigned char XGI_GetSetModeID(ScrnInfoPtr pScrn, unsigned char id);
|
||||
extern void XGI_SetEnableDstn(XGI_Private *XGI_Pr, int enable);
|
||||
extern void XGI_SetEnableFstn(XGI_Private *XGI_Pr, int enable);
|
||||
/* Functions from init.c
|
||||
*/
|
||||
extern void XGI_SetEnableDstn(XGI_Private *XGI_Pr, int enable);
|
||||
extern void XGI_SetEnableFstn(XGI_Private *XGI_Pr, int enable);
|
||||
|
||||
@@ -133,8 +133,6 @@
|
||||
#define XGIPART5 (pXGI->RelIO+0x16)
|
||||
|
||||
|
||||
#define read_xr(num,var) do {outb(0x3c4, num);var=inb(0x3c5);} while (0)
|
||||
|
||||
/* PART1 */
|
||||
#define xgiPART1_FUNCTION 0x00
|
||||
#define xgiPART1_THRESHOLD_HIGH 0x01
|
||||
|
||||
Reference in New Issue
Block a user