diff options
author | Zhenyu Wang <zhenyuw@linux.intel.com> | 2009-06-05 11:57:57 +0800 |
---|---|---|
committer | Zhenyu Wang <zhenyuw@linux.intel.com> | 2009-06-10 10:24:51 +0800 |
commit | 4f40b33ef4b069b18a6a18406da83a23ca6e1127 (patch) | |
tree | 157371b99422bc1ed26e904fe978212b0e88e9b1 | |
parent | accdbd23676d812d2345f86d8e3ee62f108841ff (diff) |
Add new chipsets PCI ids
Desktop and mobile version of new chipsets are added.
Also do memory config like Intel 4 series chipset.
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
-rw-r--r-- | src/common.h | 27 | ||||
-rw-r--r-- | src/i810_driver.c | 6 | ||||
-rw-r--r-- | src/i830_driver.c | 14 |
3 files changed, 38 insertions, 9 deletions
diff --git a/src/common.h b/src/common.h index 335fe75f..69f56041 100644 --- a/src/common.h +++ b/src/common.h @@ -307,12 +307,22 @@ extern int I810_DEBUG; #ifndef PCI_CHIP_G41_G #define PCI_CHIP_G41_G 0x2E32 #define PCI_CHIP_G41_G_BRIDGE 0x2E30 #endif +#ifndef PCI_CHIP_IGDNG_D_G +#define PCI_CHIP_IGDNG_D_G 0x0042 +#define PCI_CHIP_IGDNG_D_G_BRIDGE 0x0040 +#endif + +#ifndef PCI_CHIP_IGDNG_M_G +#define PCI_CHIP_IGDNG_M_G 0x0046 +#define PCI_CHIP_IGDNG_M_G_BRIDGE 0x0044 +#endif + #define I810_MEMBASE(p,n) (p)->regions[(n)].base_addr #define VENDOR_ID(p) (p)->vendor_id #define DEVICE_ID(p) (p)->device_id #define SUBVENDOR_ID(p) (p)->subvendor_id #define SUBSYS_ID(p) (p)->subdevice_id #define CHIP_REVISION(p) (p)->revision @@ -336,34 +346,37 @@ extern int I810_DEBUG; #define IS_IGDG(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_IGD_G) #define IS_IGD(pI810) (IS_IGDG(pI810) || IS_IGDGM(pI810)) #define IS_GM45(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_GM45_GM) #define IS_G4X(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_IGD_E_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G45_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_Q45_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G41_G || IS_GM45(pI810)) #define IS_I965GM(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GME) #define IS_965_Q(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_Q) -#define IS_I965G(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G35_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_Q || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I946_GZ || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GME || IS_G4X(pI810)) +#define IS_IGDNG_D(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_IGDNG_D_G) +#define IS_IGDNG_M(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_IGDNG_M_G) +#define IS_IGDNG(pI810) (IS_IGDNG_D(pI810) || IS_IGDNG_M(pI810)) +#define IS_I965G(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G35_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_Q || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I946_GZ || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GME || IS_G4X(pI810) || IS_IGDNG(pI810)) #define IS_G33CLASS(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G33_G ||\ DEVICE_ID(pI810->PciInfo) == PCI_CHIP_Q35_G ||\ DEVICE_ID(pI810->PciInfo) == PCI_CHIP_Q33_G || \ IS_IGD(pI810)) #define IS_I9XX(pI810) (IS_I915G(pI810) || IS_I915GM(pI810) || IS_I945G(pI810) || IS_I945GM(pI810) || IS_I965G(pI810) || IS_G33CLASS(pI810)) #define IS_I915(pI810) (IS_I915G(pI810) || IS_I915GM(pI810) || IS_I945G(pI810) || IS_I945GM(pI810) || IS_G33CLASS(pI810)) -#define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810) || IS_I945GM(pI810) || IS_I965GM(pI810) || IS_GM45(pI810) || IS_IGD(pI810)) +#define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810) || IS_I945GM(pI810) || IS_I965GM(pI810) || IS_GM45(pI810) || IS_IGD(pI810) || IS_IGDNG_M(pI810)) /* mark chipsets for using gfx VM offset for overlay */ #define OVERLAY_NOPHYSICAL(pI810) (IS_G33CLASS(pI810) || IS_I965G(pI810)) /* mark chipsets without overlay hw */ -#define OVERLAY_NOEXIST(pI810) (IS_G4X(pI810)) +#define OVERLAY_NOEXIST(pI810) (IS_G4X(pI810) || IS_IGDNG(pI810)) /* chipsets require graphics mem for hardware status page */ #define HWS_NEED_GFX(pI810) (!pI810->use_drm_mode && \ (IS_G33CLASS(pI810) ||\ - IS_G4X(pI810))) + IS_G4X(pI810) || IS_IGDNG(pI810))) /* chipsets require status page in non stolen memory */ -#define HWS_NEED_NONSTOLEN(pI810) (IS_G4X(pI810)) -#define SUPPORTS_INTEGRATED_HDMI(pI810) (IS_G4X(pI810)) +#define HWS_NEED_NONSTOLEN(pI810) (IS_G4X(pI810) || IS_IGDNG(pI810)) +#define SUPPORTS_INTEGRATED_HDMI(pI810) (IS_G4X(pI810) || IS_IGDNG(pI810)) /* dsparb controlled by hw only */ -#define DSPARB_HWCONTROL(pI810) (IS_G4X(pI810)) +#define DSPARB_HWCONTROL(pI810) (IS_G4X(pI810) || IS_IGDNG(pI810)) /* supports Y tiled surfaces (pre-965 Mesa isn't ready yet) */ #define SUPPORTS_YTILING(pI810) (IS_I965G(pI830)) #define GTT_PAGE_SIZE KB(4) #define ROUND_TO(x, y) (((x) + (y) - 1) / (y) * (y)) #define ROUND_DOWN_TO(x, y) ((x) / (y) * (y)) diff --git a/src/i810_driver.c b/src/i810_driver.c index 21c35da1..4b8c4590 100644 --- a/src/i810_driver.c +++ b/src/i810_driver.c @@ -135,12 +135,14 @@ static const struct pci_id_match intel_device_match[] = { INTEL_DEVICE_MATCH (PCI_CHIP_Q33_G, 0 ), INTEL_DEVICE_MATCH (PCI_CHIP_GM45_GM, 0 ), INTEL_DEVICE_MATCH (PCI_CHIP_IGD_E_G, 0 ), INTEL_DEVICE_MATCH (PCI_CHIP_G45_G, 0 ), INTEL_DEVICE_MATCH (PCI_CHIP_Q45_G, 0 ), INTEL_DEVICE_MATCH (PCI_CHIP_G41_G, 0 ), + INTEL_DEVICE_MATCH (PCI_CHIP_IGDNG_D_G, 0 ), + INTEL_DEVICE_MATCH (PCI_CHIP_IGDNG_M_G, 0 ), { 0, 0, 0 }, }; _X_EXPORT DriverRec I810 = { I810_VERSION, I810_DRIVER_NAME, @@ -186,12 +188,14 @@ static SymTabRec I810Chipsets[] = { {PCI_CHIP_Q33_G, "Q33"}, {PCI_CHIP_GM45_GM, "Mobile IntelĀ® GM45 Express Chipset"}, {PCI_CHIP_IGD_E_G, "Intel Integrated Graphics Device"}, {PCI_CHIP_G45_G, "G45/G43"}, {PCI_CHIP_Q45_G, "Q45/Q43"}, {PCI_CHIP_G41_G, "G41"}, + {PCI_CHIP_IGDNG_D_G, "IGDNG_D"}, + {PCI_CHIP_IGDNG_M_G, "IGDNG_M"}, {-1, NULL} }; static PciChipsets I810PciChipsets[] = { #ifndef I830_ONLY {PCI_CHIP_I810, PCI_CHIP_I810, RES_SHARED_VGA}, @@ -222,12 +226,14 @@ static PciChipsets I810PciChipsets[] = { {PCI_CHIP_Q33_G, PCI_CHIP_Q33_G, RES_SHARED_VGA}, {PCI_CHIP_GM45_GM, PCI_CHIP_GM45_GM, RES_SHARED_VGA}, {PCI_CHIP_IGD_E_G, PCI_CHIP_IGD_E_G, RES_SHARED_VGA}, {PCI_CHIP_G45_G, PCI_CHIP_G45_G, RES_SHARED_VGA}, {PCI_CHIP_Q45_G, PCI_CHIP_Q45_G, RES_SHARED_VGA}, {PCI_CHIP_G41_G, PCI_CHIP_G41_G, RES_SHARED_VGA}, + {PCI_CHIP_IGDNG_D_G, PCI_CHIP_IGDNG_D_G, RES_SHARED_VGA}, + {PCI_CHIP_IGDNG_M_G, PCI_CHIP_IGDNG_M_G, RES_SHARED_VGA}, {-1, -1, RES_UNDEFINED } }; #ifndef I830_ONLY typedef enum { OPTION_NOACCEL, diff --git a/src/i830_driver.c b/src/i830_driver.c index 73d350f8..84008726 100644 --- a/src/i830_driver.c +++ b/src/i830_driver.c @@ -115,12 +115,14 @@ static SymTabRec I830Chipsets[] = { {PCI_CHIP_Q33_G, "Q33"}, {PCI_CHIP_GM45_GM, "Mobile IntelĀ® GM45 Express Chipset"}, {PCI_CHIP_IGD_E_G, "Intel Integrated Graphics Device"}, {PCI_CHIP_G45_G, "G45/G43"}, {PCI_CHIP_Q45_G, "Q45/Q43"}, {PCI_CHIP_G41_G, "G41"}, + {PCI_CHIP_IGDNG_D_G, "IGDNG_D"}, + {PCI_CHIP_IGDNG_M_G, "IGDNG_M"}, {-1, NULL} }; static PciChipsets I830PciChipsets[] = { {PCI_CHIP_I830_M, PCI_CHIP_I830_M, RES_SHARED_VGA}, {PCI_CHIP_845_G, PCI_CHIP_845_G, RES_SHARED_VGA}, @@ -145,12 +147,14 @@ static PciChipsets I830PciChipsets[] = { {PCI_CHIP_Q33_G, PCI_CHIP_Q33_G, RES_SHARED_VGA}, {PCI_CHIP_GM45_GM, PCI_CHIP_GM45_GM, RES_SHARED_VGA}, {PCI_CHIP_IGD_E_G, PCI_CHIP_IGD_E_G, RES_SHARED_VGA}, {PCI_CHIP_G45_G, PCI_CHIP_G45_G, RES_SHARED_VGA}, {PCI_CHIP_Q45_G, PCI_CHIP_Q45_G, RES_SHARED_VGA}, {PCI_CHIP_G41_G, PCI_CHIP_G41_G, RES_SHARED_VGA}, + {PCI_CHIP_IGDNG_D_G, PCI_CHIP_IGDNG_D_G, RES_SHARED_VGA}, + {PCI_CHIP_IGDNG_M_G, PCI_CHIP_IGDNG_M_G, RES_SHARED_VGA}, {-1, -1, RES_UNDEFINED} }; /* * Note: "ColorKey" is provided for compatibility with the i810 driver. * However, the correct option name is "VideoKey". "ColorKey" usually @@ -321,13 +325,13 @@ I830DetectMemory(ScrnInfoPtr pScrn) /* The stolen memory has the GTT at the top, and the 4KB popup below that. * Everything else can be freely used by the graphics driver. */ range = gtt_size + 4; /* new 4 series hardware has seperate GTT stolen with GFX stolen */ - if (IS_G4X(pI830) || IS_IGD(pI830)) + if (IS_G4X(pI830) || IS_IGD(pI830) || IS_IGDNG(pI830)) range = 4; if (IS_I85X(pI830) || IS_I865G(pI830) || IS_I9XX(pI830)) { switch (gmch_ctrl & I855_GMCH_GMS_MASK) { case I855_GMCH_GMS_STOLEN_1M: memsize = MB(1) - KB(range); @@ -437,13 +441,13 @@ I830MapMMIO(ScrnInfoPtr pScrn) */ if (IS_I9XX(pI830)) { uint32_t gttaddr; if (IS_I965G(pI830)) { - if (IS_G4X(pI830)) { + if (IS_G4X(pI830) || IS_IGDNG(pI830)) { gttaddr = pI830->MMIOAddr + MB(2); pI830->GTTMapSize = MB(2); } else { gttaddr = pI830->MMIOAddr + KB(512); pI830->GTTMapSize = KB(512); } @@ -1132,12 +1136,18 @@ i830_detect_chipset(ScrnInfoPtr pScrn) case PCI_CHIP_Q45_G: chipname = "Q45/Q43"; break; case PCI_CHIP_G41_G: chipname = "G41"; break; + case PCI_CHIP_IGDNG_D_G: + chipname = "IGDNG_D"; + break; + case PCI_CHIP_IGDNG_M_G: + chipname = "IGDNG_M"; + break; default: chipname = "unknown chipset"; break; } xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Integrated Graphics Chipset: Intel(R) %s\n", chipname); |