summaryrefslogtreecommitdiff
path: root/src/i830_driver.c
diff options
context:
space:
mode:
authorEgbert Eich <eich@suse.de>2004-04-23 19:35:55 +0000
committerEgbert Eich <eich@suse.de>2004-04-23 19:35:55 +0000
commit41eba03d0d62fe03a7b437c9c4914016c3125141 (patch)
tree9b74e1bc450726c2cb7c2abadec6d2662b7f406c /src/i830_driver.c
parente27494f2a9262b6310c2f1e0a40c406f578fc693 (diff)
Merging XORG-CURRENT into trunkXACE-SELINUX-MERGE
Diffstat (limited to 'src/i830_driver.c')
-rw-r--r--src/i830_driver.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 790d3b09..a96ada52 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c,v 1.51 2004/02/25 12:53:14 eich Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c,v 1.50 2004/02/20 00:06:00 alanh Exp $ */
/**************************************************************************
Copyright 2001 VA Linux Systems Inc., Fremont, California.
@@ -1079,7 +1079,9 @@ static CARD32
TweakMemorySize(ScrnInfoPtr pScrn, CARD32 newsize, Bool preinit)
{
#define SIZE 0x10000
-#define IDOFFSET (-23)
+#define _855_IDOFFSET (-23)
+#define _845_IDOFFSET (-19)
+
const char *MAGICstring = "Total time for VGA POST:";
const int len = strlen(MAGICstring);
I830Ptr pI830 = I830PTR(pScrn);
@@ -1090,9 +1092,11 @@ TweakMemorySize(ScrnInfoPtr pScrn, CARD32 newsize, Bool preinit)
CARD32 ret = 0;
int i,j = 0;
PCITAG tag =pciTag(0,0,0);
-
+ int reg = IS_845G(pI830) ? _845_DRAM_RW_CONTROL : _855_DRAM_RW_CONTROL;
+
if(!pI830->PciInfo
- || !(pI830->PciInfo->chipType == PCI_CHIP_I855_GM
+ || !(pI830->PciInfo->chipType == PCI_CHIP_845_G
+ || pI830->PciInfo->chipType == PCI_CHIP_I855_GM
|| pI830->PciInfo->chipType == PCI_CHIP_I865_G))
return 0;
@@ -1119,19 +1123,19 @@ TweakMemorySize(ScrnInfoPtr pScrn, CARD32 newsize, Bool preinit)
}
if (j < len) return 0;
- pI830->BIOSMemSizeLoc = (i - j + 1 + IDOFFSET);
+ pI830->BIOSMemSizeLoc = (i - j + 1 + (IS_845G(pI830)
+ ? _845_IDOFFSET : _855_IDOFFSET));
}
position = biosAddr + pI830->BIOSMemSizeLoc;
oldsize = *(CARD32 *)position;
ret = oldsize - (3 << 16);
-
/* verify that register really contains current size */
if (preinit && ((oldsize) >> 16) - 3 != pI830->vbeInfo->TotalMemory)
return 0;
- oldpermission = pciReadLong(tag, DRAM_RW_CONTROL);
- pciWriteLong(tag, DRAM_RW_CONTROL, 0x33330000);
+ oldpermission = pciReadLong(tag, reg);
+ pciWriteLong(tag, reg, 0x33330000);
*(CARD32 *)position = newsize + (3 << 16);
if (preinit) {
@@ -1142,7 +1146,7 @@ TweakMemorySize(ScrnInfoPtr pScrn, CARD32 newsize, Bool preinit)
pI830->vbeInfo = VBEGetVBEInfo(pI830->pVbe);
/* verify that change was successful */
- if (pI830->vbeInfo->TotalMemory * 64 * 1024 != pI830->newBIOSMemSize) {
+ if (pI830->vbeInfo->TotalMemory * 64 * 1024 != pI830->newBIOSMemSize){
ret = 0;
*(CARD32 *)position = oldsize;
} else {
@@ -1153,7 +1157,7 @@ TweakMemorySize(ScrnInfoPtr pScrn, CARD32 newsize, Bool preinit)
}
}
- pciWriteLong(tag, DRAM_RW_CONTROL, oldpermission);
+ pciWriteLong(tag, reg, oldpermission);
return ret;
}