diff options
-rw-r--r-- | src/common.h | 10 | ||||
-rw-r--r-- | src/i810_driver.c | 3 | ||||
-rw-r--r-- | src/i830_driver.c | 21 |
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 |