diff options
author | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2007-04-07 17:01:03 +0000 |
---|---|---|
committer | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2007-04-07 17:01:03 +0000 |
commit | 3d871596882e725bb55609b95c362b939be7819b (patch) | |
tree | ac117a0baed4d60e983dd8b842cb5fefd6d89b88 /driver | |
parent | 98fd99841832353e0e8475953d5954494e87adcb (diff) |
Bring back i945GM support that was left out because I used an
out-of-date XF4 tree when importing this driver. Noticed and tested
by krw@. Thanks.
Diffstat (limited to 'driver')
-rw-r--r-- | driver/xf86-video-i810/src/common.h | 10 | ||||
-rw-r--r-- | driver/xf86-video-i810/src/i810_driver.c | 3 | ||||
-rw-r--r-- | driver/xf86-video-i810/src/i830_cursor.c | 8 | ||||
-rw-r--r-- | driver/xf86-video-i810/src/i830_driver.c | 21 | ||||
-rw-r--r-- | driver/xf86-video-i810/src/i830_memory.c | 8 | ||||
-rw-r--r-- | driver/xf86-video-i810/src/i830_video.c | 40 |
6 files changed, 53 insertions, 37 deletions
diff --git a/driver/xf86-video-i810/src/common.h b/driver/xf86-video-i810/src/common.h index 85a24ab34..32ea39900 100644 --- a/driver/xf86-video-i810/src/common.h +++ b/driver/xf86-video-i810/src/common.h @@ -322,6 +322,11 @@ extern int I810_DEBUG; #define PCI_CHIP_I945_G_BRIDGE 0x2770 #endif +#ifndef PCI_CHIP_I945_GM +#define PCI_CHIP_I945_GM 0x27A2 +#define PCI_CHIP_I945_GM_BRIDGE 0x27A0 +#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) @@ -332,11 +337,14 @@ extern int I810_DEBUG; #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 || pI810->PciInfo->chipType == PCI_CHIP_E7221_G) #define IS_I915GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I915_GM) #define IS_I945G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I945_G) +#define IS_I945GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I945_GM) +#define IS_I9XX(pI810) (IS_I915G(pI810) || IS_I915GM(pI810) || IS_I945G(pI810) || IS_I945GM(pI810)) -#define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810)) +#define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810) || IS_I945GM(pI810)) #define GTT_PAGE_SIZE KB(4) #define ROUND_TO(x, y) (((x) + (y) - 1) / (y) * (y)) diff --git a/driver/xf86-video-i810/src/i810_driver.c b/driver/xf86-video-i810/src/i810_driver.c index bfa1dae9a..5359b9b8d 100644 --- a/driver/xf86-video-i810/src/i810_driver.c +++ b/driver/xf86-video-i810/src/i810_driver.c @@ -136,6 +136,7 @@ static SymTabRec I810Chipsets[] = { {PCI_CHIP_E7221_G, "E7221 (i915)"}, {PCI_CHIP_I915_GM, "915GM"}, {PCI_CHIP_I945_G, "945G"}, + {PCI_CHIP_I945_GM, "945GM"}, {-1, NULL} }; @@ -154,6 +155,7 @@ static PciChipsets I810PciChipsets[] = { {PCI_CHIP_E7221_G, PCI_CHIP_E7221_G, RES_SHARED_VGA}, {PCI_CHIP_I915_GM, PCI_CHIP_I915_GM, RES_SHARED_VGA}, {PCI_CHIP_I945_G, PCI_CHIP_I945_G, RES_SHARED_VGA}, + {PCI_CHIP_I945_GM, PCI_CHIP_I945_GM, RES_SHARED_VGA}, {-1, -1, RES_UNDEFINED } }; @@ -569,6 +571,7 @@ I810Probe(DriverPtr drv, int flags) case PCI_CHIP_E7221_G: case PCI_CHIP_I915_GM: case PCI_CHIP_I945_G: + case PCI_CHIP_I945_GM: xf86SetEntitySharable(usedChips[i]); /* Allocate an entity private if necessary */ diff --git a/driver/xf86-video-i810/src/i830_cursor.c b/driver/xf86-video-i810/src/i830_cursor.c index 241141920..83cbcead2 100644 --- a/driver/xf86-video-i810/src/i830_cursor.c +++ b/driver/xf86-video-i810/src/i830_cursor.c @@ -86,7 +86,7 @@ I830InitHWCursor(ScrnInfoPtr pScrn) DPRINTF(PFX, "I830InitHWCursor\n"); /* Initialise the HW cursor registers, leaving the cursor hidden. */ - if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) { + if (IS_MOBILE(pI830) || IS_I9XX(pI830)) { temp = INREG(CURSOR_A_CONTROL); temp &= ~(CURSOR_MODE | MCURSOR_GAMMA_ENABLE | MCURSOR_MEM_TYPE_LOCAL | MCURSOR_PIPE_SELECT); @@ -308,7 +308,7 @@ I830SetCursorPosition(ScrnInfoPtr pScrn, int x, int y) } /* have to upload the base for the new position */ - if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) { + if (IS_I9XX(pI830)) { if (pI830->CursorIsARGB) OUTREG(CURSOR_A_BASE, pI830->CursorMemARGB->Physical); else @@ -339,7 +339,7 @@ I830ShowCursor(ScrnInfoPtr pScrn) pI830->CursorMemARGB->Physical, pI830->CursorMemARGB->Start); pI830->cursorOn = TRUE; - if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) { + if (IS_MOBILE(pI830) || IS_I9XX(pI830)) { temp = INREG(CURSOR_A_CONTROL); temp &= ~(CURSOR_MODE | MCURSOR_PIPE_SELECT); if (pI830->CursorIsARGB) @@ -387,7 +387,7 @@ I830HideCursor(ScrnInfoPtr pScrn) DPRINTF(PFX, "I830HideCursor\n"); pI830->cursorOn = FALSE; - if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) { + if (IS_MOBILE(pI830) || IS_I9XX(pI830)) { temp = INREG(CURSOR_A_CONTROL); temp &= ~CURSOR_MODE; temp |= CURSOR_MODE_DISABLE; diff --git a/driver/xf86-video-i810/src/i830_driver.c b/driver/xf86-video-i810/src/i830_driver.c index b281affd5..4f01539ed 100644 --- a/driver/xf86-video-i810/src/i830_driver.c +++ b/driver/xf86-video-i810/src/i830_driver.c @@ -196,6 +196,7 @@ static SymTabRec I830BIOSChipsets[] = { {PCI_CHIP_E7221_G, "E7221 (i915)"}, {PCI_CHIP_I915_GM, "915GM"}, {PCI_CHIP_I945_G, "945G"}, + {PCI_CHIP_I945_GM, "945GM"}, {-1, NULL} }; @@ -208,6 +209,7 @@ static PciChipsets I830BIOSPciChipsets[] = { {PCI_CHIP_E7221_G, PCI_CHIP_E7221_G, RES_SHARED_VGA}, {PCI_CHIP_I915_GM, PCI_CHIP_I915_GM, RES_SHARED_VGA}, {PCI_CHIP_I945_G, PCI_CHIP_I945_G, RES_SHARED_VGA}, + {PCI_CHIP_I945_GM, PCI_CHIP_I945_GM, RES_SHARED_VGA}, {-1, -1, RES_UNDEFINED} }; @@ -1323,7 +1325,7 @@ I830DetectMemory(ScrnInfoPtr pScrn) * The GTT varying according the the FbMapSize and the popup is 4KB */ range = (pI830->FbMapSize / (1024*1024)) + 4; - if (IS_I85X(pI830) || IS_I865G(pI830) || IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) { + if (IS_I85X(pI830) || IS_I865G(pI830) || IS_I9XX(pI830)) { switch (gmch_ctrl & I830_GMCH_GMS_MASK) { case I855_GMCH_GMS_STOLEN_1M: memsize = MB(1) - KB(range); @@ -1341,11 +1343,11 @@ I830DetectMemory(ScrnInfoPtr pScrn) memsize = MB(32) - KB(range); break; case I915G_GMCH_GMS_STOLEN_48M: - if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) + if (IS_I9XX(pI830)) memsize = MB(48) - KB(range); break; case I915G_GMCH_GMS_STOLEN_64M: - if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) + if (IS_I9XX(pI830)) memsize = MB(64) - KB(range); break; } @@ -2090,6 +2092,9 @@ I830BIOSPreInit(ScrnInfoPtr pScrn, int flags) case PCI_CHIP_I945_G: chipname = "945G"; break; + case PCI_CHIP_I945_GM: + chipname = "945GM"; + break; default: chipname = "unknown chipset"; break; @@ -2127,7 +2132,7 @@ I830BIOSPreInit(ScrnInfoPtr pScrn, int flags) pI830->LinearAddr = pI830->pEnt->device->MemBase; from = X_CONFIG; } else { - if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) { + if (IS_I9XX(pI830)) { pI830->LinearAddr = pI830->PciInfo->memBase[2] & 0xF0000000; from = X_PROBED; } else if (pI830->PciInfo->memBase[1] != 0) { @@ -2149,7 +2154,7 @@ I830BIOSPreInit(ScrnInfoPtr pScrn, int flags) pI830->MMIOAddr = pI830->pEnt->device->IOBase; from = X_CONFIG; } else { - if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) { + if (IS_I9XX(pI830)) { pI830->MMIOAddr = pI830->PciInfo->memBase[0] & 0xFFF80000; from = X_PROBED; } else if (pI830->PciInfo->memBase[1]) { @@ -2194,7 +2199,7 @@ I830BIOSPreInit(ScrnInfoPtr pScrn, int flags) pI830->FbMapSize = 0x4000000; /* 64MB - has this been tested ?? */ } } else { - if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) { + if (IS_I9XX(pI830)) { if (pI830->PciInfo->memBase[2] & 0x08000000) pI830->FbMapSize = 0x8000000; /* 128MB aperture */ else @@ -2227,7 +2232,7 @@ I830BIOSPreInit(ScrnInfoPtr pScrn, int flags) if (pI830->PciInfo->chipType == PCI_CHIP_E7221_G) pI830->availablePipes = 1; else - if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) + if (IS_MOBILE(pI830) || IS_I9XX(pI830)) pI830->availablePipes = 2; else pI830->availablePipes = 1; @@ -2872,7 +2877,7 @@ I830BIOSPreInit(ScrnInfoPtr pScrn, int flags) } /* Check if the HW cursor needs physical address. */ - if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) + if (IS_MOBILE(pI830) || IS_I9XX(pI830)) pI830->CursorNeedsPhysical = TRUE; else pI830->CursorNeedsPhysical = FALSE; diff --git a/driver/xf86-video-i810/src/i830_memory.c b/driver/xf86-video-i810/src/i830_memory.c index 27cf01781..e4aab6872 100644 --- a/driver/xf86-video-i810/src/i830_memory.c +++ b/driver/xf86-video-i810/src/i830_memory.c @@ -1239,7 +1239,7 @@ SetFence(ScrnInfoPtr pScrn, int nr, unsigned int start, unsigned int pitch, i830Reg->Fence[nr] = 0; - if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) + if (IS_I9XX(pI830)) fence_mask = ~I915G_FENCE_START_MASK; else fence_mask = ~I830_FENCE_START_MASK; @@ -1247,7 +1247,7 @@ SetFence(ScrnInfoPtr pScrn, int nr, unsigned int start, unsigned int pitch, if (start & fence_mask) { xf86DrvMsg(X_WARNING, pScrn->scrnIndex, "SetFence: %d: start (0x%08x) is not %s aligned\n", - nr, start, (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) ? "1MB" : "512k"); + nr, start, (IS_I9XX(pI830)) ? "1MB" : "512k"); return; } @@ -1267,7 +1267,7 @@ SetFence(ScrnInfoPtr pScrn, int nr, unsigned int start, unsigned int pitch, val = (start | FENCE_X_MAJOR | FENCE_VALID); - if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) { + if (IS_I9XX(pI830)) { switch (size) { case MB(1): val |= I915G_FENCE_SIZE_1M; @@ -1328,7 +1328,7 @@ SetFence(ScrnInfoPtr pScrn, int nr, unsigned int start, unsigned int pitch, } } - if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) + if (IS_I9XX(pI830)) fence_pitch = pitch / 512; else fence_pitch = pitch / 128; diff --git a/driver/xf86-video-i810/src/i830_video.c b/driver/xf86-video-i810/src/i830_video.c index 12c25e054..4a7f1f78c 100644 --- a/driver/xf86-video-i810/src/i830_video.c +++ b/driver/xf86-video-i810/src/i830_video.c @@ -617,7 +617,7 @@ I830SetupImageVideo(ScreenPtr pScreen) adapt->nAttributes = NUM_ATTRIBUTES; if (pI830->Clone) adapt->nAttributes += CLONE_ATTRIBUTES; - if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) + if (IS_I9XX(pI830)) adapt->nAttributes += GAMMA_ATTRIBUTES; /* has gamma */ adapt->pAttributes = xnfalloc(sizeof(XF86AttributeRec) * adapt->nAttributes); /* Now copy the attributes */ @@ -628,7 +628,7 @@ I830SetupImageVideo(ScreenPtr pScreen) memcpy((char*)att, (char*)CloneAttributes, sizeof(XF86AttributeRec) * CLONE_ATTRIBUTES); att+=CLONE_ATTRIBUTES; } - if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) { + if (IS_I9XX(pI830)) { memcpy((char*)att, (char*)GammaAttributes, sizeof(XF86AttributeRec) * GAMMA_ATTRIBUTES); att+=GAMMA_ATTRIBUTES; } @@ -688,7 +688,7 @@ I830SetupImageVideo(ScreenPtr pScreen) if (pI830->Clone) xvPipe = MAKE_ATOM("XV_PIPE"); - if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) { + if (IS_I9XX(pI830)) { xvGamma0 = MAKE_ATOM("XV_GAMMA0"); xvGamma1 = MAKE_ATOM("XV_GAMMA1"); xvGamma2 = MAKE_ATOM("XV_GAMMA2"); @@ -806,7 +806,7 @@ I830SetPortAttribute(ScrnInfoPtr pScrn, overlay->OCONFIG |= OVERLAY_PIPE_B; if (pPriv->overlayOK) OVERLAY_UPDATE; - } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) { + } else if (attribute == xvGamma0 && (IS_I9XX(pI830))) { /* Avoid video anomalies, so set gamma registers when overlay is off */ /* We also clamp the values if they are outside the ranges */ if (!*pI830->overlayOn) { @@ -815,35 +815,35 @@ I830SetPortAttribute(ScrnInfoPtr pScrn, pPriv->gamma1 = pPriv->gamma0 + 0x7d; } else return BadRequest; - } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) { + } else if (attribute == xvGamma1 && (IS_I9XX(pI830))) { if (!*pI830->overlayOn) { pPriv->gamma1 = value; if (pPriv->gamma1 - pPriv->gamma0 > 0x7d) pPriv->gamma0 = pPriv->gamma1 - 0x7d; } else return BadRequest; - } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) { + } else if (attribute == xvGamma2 && (IS_I9XX(pI830))) { if (!*pI830->overlayOn) { pPriv->gamma2 = value; if (pPriv->gamma3 - pPriv->gamma2 > 0x7d) pPriv->gamma3 = pPriv->gamma2 + 0x7d; } else return BadRequest; - } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) { + } else if (attribute == xvGamma3 && (IS_I9XX(pI830))) { if (!*pI830->overlayOn) { pPriv->gamma3 = value; if (pPriv->gamma3 - pPriv->gamma2 > 0x7d) pPriv->gamma2 = pPriv->gamma3 - 0x7d; } else return BadRequest; - } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) { + } else if (attribute == xvGamma4 && (IS_I9XX(pI830))) { if (!*pI830->overlayOn) { pPriv->gamma4 = value; if (pPriv->gamma5 - pPriv->gamma4 > 0x7d) pPriv->gamma5 = pPriv->gamma4 + 0x7d; } else return BadRequest; - } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) { + } else if (attribute == xvGamma5 && (IS_I9XX(pI830))) { if (!*pI830->overlayOn) { pPriv->gamma5 = value; if (pPriv->gamma5 - pPriv->gamma4 > 0x7d) @@ -875,7 +875,7 @@ I830SetPortAttribute(ScrnInfoPtr pScrn, attribute == xvGamma2 || attribute == xvGamma3 || attribute == xvGamma4 || - attribute == xvGamma5) && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) { + attribute == xvGamma5) && (IS_I9XX(pI830))) { I830UpdateGamma(pScrn); } @@ -895,17 +895,17 @@ I830GetPortAttribute(ScrnInfoPtr pScrn, *value = pPriv->contrast; } else if (pI830->Clone && attribute == xvPipe) { *value = pPriv->pipe; - } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) { + } else if (attribute == xvGamma0 && (IS_I9XX(pI830))) { *value = pPriv->gamma0; - } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) { + } else if (attribute == xvGamma1 && (IS_I9XX(pI830))) { *value = pPriv->gamma1; - } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) { + } else if (attribute == xvGamma2 && (IS_I9XX(pI830))) { *value = pPriv->gamma2; - } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) { + } else if (attribute == xvGamma3 && (IS_I9XX(pI830))) { *value = pPriv->gamma3; - } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) { + } else if (attribute == xvGamma4 && (IS_I9XX(pI830))) { *value = pPriv->gamma4; - } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) { + } else if (attribute == xvGamma5 && (IS_I9XX(pI830))) { *value = pPriv->gamma5; } else if (attribute == xvColorKey) { *value = pPriv->colorKey; @@ -1182,7 +1182,7 @@ I830DisplayVideo(ScrnInfoPtr pScrn, int id, short width, short height, if (!pPriv->overlayOK) return; - if (IS_I915G(pI830) || IS_I915GM(pI830)) { + if (IS_I9XX(pI830)) { shift = 6; mask = 0x3f; } else { @@ -1221,7 +1221,7 @@ I830DisplayVideo(ScrnInfoPtr pScrn, int id, short width, short height, swidth = ((offsety + width + mask) >> shift) - (offsety >> shift); - if (IS_I915G(pI830) || IS_I915GM(pI830)) + if (IS_I9XX(pI830)) swidth <<= 1; swidth -= 1; @@ -1233,7 +1233,7 @@ I830DisplayVideo(ScrnInfoPtr pScrn, int id, short width, short height, swidth = ((offsetu + (width / 2) + mask) >> shift) - (offsetu >> shift); - if (IS_I915G(pI830) || IS_I915GM(pI830)) + if (IS_I9XX(pI830)) swidth <<= 1; swidth -= 1; @@ -1257,7 +1257,7 @@ I830DisplayVideo(ScrnInfoPtr pScrn, int id, short width, short height, swidth = ((offsety + (width << 1) + mask) >> shift) - (offsety >> shift); - if (IS_I915G(pI830) || IS_I915GM(pI830)) + if (IS_I9XX(pI830)) swidth <<= 1; swidth -= 1; |