summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Hourihane <alanh@fairlite.demon.co.uk>2005-05-20 11:56:45 +0000
committerAlan Hourihane <alanh@fairlite.demon.co.uk>2005-05-20 11:56:45 +0000
commitb99ef9cd59fce0e02e8829210c7cb8aadb6a3499 (patch)
treee851f4d5dbe03531df16e422aa5996ba3e2265ab
parent3b87fac327b5549678f91a9c961b9fe5c0bf8a37 (diff)
Bugzilla #2585: https://bugs.freedesktop.org/show_bug.cgi?id=2585
Support the Intel E7221 server chipset.
-rw-r--r--src/common.h10
-rw-r--r--src/i810_driver.c3
-rw-r--r--src/i830_driver.c21
3 files changed, 30 insertions, 4 deletions
diff --git a/src/common.h b/src/common.h
index 62854455..dda5d36b 100644
--- a/src/common.h
+++ b/src/common.h
@@ -310,6 +310,12 @@ extern int I810_DEBUG;
#define PCI_CHIP_I915_GM_BRIDGE 0x2590
#endif
+#ifndef PCI_CHIP_E7221_G
+#define PCI_CHIP_E7221_G 0x258A
+/* Same as I915_G_BRIDGE */
+#define PCI_CHIP_E7221_G_BRIDGE 0x2580
+#endif
+
#define IS_I810(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I810 || \
pI810->PciInfo->chipType == PCI_CHIP_I810_DC100 || \
pI810->PciInfo->chipType == PCI_CHIP_I810_E)
@@ -317,8 +323,10 @@ extern int I810_DEBUG;
#define IS_I830(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I830_M)
#define IS_845G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_845_G)
#define IS_I85X(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I855_GM)
+#define IS_I852(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I855_GM && (pI810->variant == I852_GM || pI810->variant == I852_GME))
+#define IS_I855(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I855_GM && (pI810->variant == I855_GM || pI810->variant == I855_GME))
#define IS_I865G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I865_G)
-#define IS_I915G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I915_G)
+#define IS_I915G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I915_G || pI810->PciInfo->chipType == PCI_CHIP_E7221_G)
#define IS_I915GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I915_GM)
#define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810))
diff --git a/src/i810_driver.c b/src/i810_driver.c
index 73480c2b..fe4ed5ec 100644
--- a/src/i810_driver.c
+++ b/src/i810_driver.c
@@ -129,6 +129,7 @@ static SymTabRec I810Chipsets[] = {
{PCI_CHIP_I855_GM, "852GM/855GM"},
{PCI_CHIP_I865_G, "865G"},
{PCI_CHIP_I915_G, "915G"},
+ {PCI_CHIP_E7221_G, "E7221 (i915)"},
{PCI_CHIP_I915_GM, "915GM"},
{-1, NULL}
};
@@ -145,6 +146,7 @@ static PciChipsets I810PciChipsets[] = {
{PCI_CHIP_I855_GM, PCI_CHIP_I855_GM, RES_SHARED_VGA},
{PCI_CHIP_I865_G, PCI_CHIP_I865_G, RES_SHARED_VGA},
{PCI_CHIP_I915_G, PCI_CHIP_I915_G, RES_SHARED_VGA},
+ {PCI_CHIP_E7221_G, PCI_CHIP_E7221_G, RES_SHARED_VGA},
{PCI_CHIP_I915_GM, PCI_CHIP_I915_GM, RES_SHARED_VGA},
{-1, -1, RES_UNDEFINED }
};
@@ -562,6 +564,7 @@ I810Probe(DriverPtr drv, int flags)
case PCI_CHIP_I830_M:
case PCI_CHIP_I855_GM:
case PCI_CHIP_I915_G:
+ case PCI_CHIP_E7221_G:
case PCI_CHIP_I915_GM:
xf86SetEntitySharable(usedChips[i]);
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 93082840..afc2bd41 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -185,6 +185,7 @@ static SymTabRec I830BIOSChipsets[] = {
{PCI_CHIP_I855_GM, "852GM/855GM"},
{PCI_CHIP_I865_G, "865G"},
{PCI_CHIP_I915_G, "915G"},
+ {PCI_CHIP_E7221_G, "E7221 (i915)"},
{PCI_CHIP_I915_GM, "915GM"},
{-1, NULL}
};
@@ -195,6 +196,7 @@ static PciChipsets I830BIOSPciChipsets[] = {
{PCI_CHIP_I855_GM, PCI_CHIP_I855_GM, RES_SHARED_VGA},
{PCI_CHIP_I865_G, PCI_CHIP_I865_G, RES_SHARED_VGA},
{PCI_CHIP_I915_G, PCI_CHIP_I915_G, RES_SHARED_VGA},
+ {PCI_CHIP_E7221_G, PCI_CHIP_E7221_G, RES_SHARED_VGA},
{PCI_CHIP_I915_GM, PCI_CHIP_I915_GM, RES_SHARED_VGA},
{-1, -1, RES_UNDEFINED}
};
@@ -697,10 +699,14 @@ GetDisplayDevices(ScrnInfoPtr pScrn)
pVbe->pInt10->bx = 0x100;
xf86ExecX86int10_wrapper(pVbe->pInt10, pScrn);
- if (Check5fStatus(pScrn, 0x5f64, pVbe->pInt10->ax))
+ if (Check5fStatus(pScrn, 0x5f64, pVbe->pInt10->ax)) {
return pVbe->pInt10->cx & 0xffff;
- else
- return -1;
+ } else {
+ if (pI830->PciInfo->chipType == PCI_CHIP_E7221_G) /* FIXED CONFIG */
+ return PIPE_CRT;
+ else
+ return -1;
+ }
}
/* This is needed for SetDisplayDevices to work correctly on I915G
@@ -1872,6 +1878,9 @@ I830BIOSPreInit(ScrnInfoPtr pScrn, int flags)
case PCI_CHIP_I915_G:
chipname = "915G";
break;
+ case PCI_CHIP_E7221_G:
+ chipname = "E7221 (i915)";
+ break;
case PCI_CHIP_I915_GM:
chipname = "915GM";
break;
@@ -1984,6 +1993,9 @@ I830BIOSPreInit(ScrnInfoPtr pScrn, int flags)
pI830->FbMapSize = 0x8000000; /* 128MB aperture */
else
pI830->FbMapSize = 0x10000000; /* 256MB aperture */
+
+ if (pI830->PciInfo->chipType == PCI_CHIP_E7221_G)
+ pI830->FbMapSize = 0x8000000; /* 128MB aperture */
} else
/* 128MB aperture for later chips */
pI830->FbMapSize = 0x8000000;
@@ -2006,6 +2018,9 @@ I830BIOSPreInit(ScrnInfoPtr pScrn, int flags)
}
}
+ if (pI830->PciInfo->chipType == PCI_CHIP_E7221_G)
+ pI830->availablePipes = 1;
+ else
if (IS_MOBILE(pI830) || IS_I915G(pI830))
pI830->availablePipes = 2;
else