intel-agp: add new chipset ID

This one adds new pci ids for Intel intergrated graphics chipset, with gtt
table access change on it and new gtt table size definition.

Signed-off-by: Zhenyu Wang <zhenyu.z.wang@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Dave Airlie <airlied@linux.ie>

authored by Zhenyu Wang and committed by Dave Airlie 4e8b6e25 91d361c2

+29 -5
+3
drivers/char/agp/agp.h
··· 236 236 #define I965_PGETBL_SIZE_512KB (0 << 1) 237 237 #define I965_PGETBL_SIZE_256KB (1 << 1) 238 238 #define I965_PGETBL_SIZE_128KB (2 << 1) 239 + #define I965_PGETBL_SIZE_1MB (3 << 1) 240 + #define I965_PGETBL_SIZE_2MB (4 << 1) 241 + #define I965_PGETBL_SIZE_1_5MB (5 << 1) 239 242 #define G33_PGETBL_SIZE_MASK (3 << 8) 240 243 #define G33_PGETBL_SIZE_1M (1 << 8) 241 244 #define G33_PGETBL_SIZE_2M (2 << 8)
+26 -5
drivers/char/agp/intel-agp.c
··· 32 32 #define PCI_DEVICE_ID_INTEL_Q35_IG 0x29B2 33 33 #define PCI_DEVICE_ID_INTEL_Q33_HB 0x29D0 34 34 #define PCI_DEVICE_ID_INTEL_Q33_IG 0x29D2 35 + #define PCI_DEVICE_ID_INTEL_IGD_HB 0x2A40 36 + #define PCI_DEVICE_ID_INTEL_IGD_IG 0x2A42 35 37 36 38 #define IS_I965 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82946GZ_HB || \ 37 39 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965G_1_HB || \ 38 40 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965Q_HB || \ 39 41 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965G_HB || \ 40 42 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GM_HB || \ 41 - agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GME_HB) 43 + agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GME_HB || \ 44 + agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGD_HB) 42 45 43 46 #define IS_G33 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G33_HB || \ 44 47 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q35_HB || \ ··· 463 460 break; 464 461 case I965_PGETBL_SIZE_512KB: 465 462 size = 512; 463 + break; 464 + case I965_PGETBL_SIZE_1MB: 465 + size = 1024; 466 + break; 467 + case I965_PGETBL_SIZE_2MB: 468 + size = 2048; 469 + break; 470 + case I965_PGETBL_SIZE_1_5MB: 471 + size = 1024 + 512; 466 472 break; 467 473 default: 468 474 printk(KERN_INFO PFX "Unknown page table size, " ··· 1136 1124 struct aper_size_info_fixed *size; 1137 1125 int num_entries; 1138 1126 u32 temp; 1127 + int gtt_offset, gtt_size; 1139 1128 1140 1129 size = agp_bridge->current_size; 1141 1130 page_order = size->page_order; ··· 1146 1133 pci_read_config_dword(intel_private.pcidev, I915_MMADDR, &temp); 1147 1134 1148 1135 temp &= 0xfff00000; 1149 - intel_private.gtt = ioremap((temp + (512 * 1024)) , 512 * 1024); 1150 1136 1151 - if (!intel_private.gtt) 1152 - return -ENOMEM; 1137 + if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGD_HB) 1138 + gtt_offset = gtt_size = MB(2); 1139 + else 1140 + gtt_offset = gtt_size = KB(512); 1153 1141 1142 + intel_private.gtt = ioremap((temp + gtt_offset) , gtt_size); 1154 1143 1155 - intel_private.registers = ioremap(temp,128 * 4096); 1144 + if (!intel_private.gtt) 1145 + return -ENOMEM; 1146 + 1147 + intel_private.registers = ioremap(temp, 128 * 4096); 1156 1148 if (!intel_private.registers) { 1157 1149 iounmap(intel_private.gtt); 1158 1150 return -ENOMEM; ··· 2054 2036 NULL, &intel_g33_driver }, 2055 2037 { PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33", 2056 2038 NULL, &intel_g33_driver }, 2039 + { PCI_DEVICE_ID_INTEL_IGD_HB, PCI_DEVICE_ID_INTEL_IGD_IG, 0, 2040 + "Intel Integrated Graphics Device", NULL, &intel_i965_driver }, 2057 2041 { 0, 0, 0, NULL, NULL, NULL } 2058 2042 }; 2059 2043 ··· 2246 2226 ID(PCI_DEVICE_ID_INTEL_G33_HB), 2247 2227 ID(PCI_DEVICE_ID_INTEL_Q35_HB), 2248 2228 ID(PCI_DEVICE_ID_INTEL_Q33_HB), 2229 + ID(PCI_DEVICE_ID_INTEL_IGD_HB), 2249 2230 { } 2250 2231 }; 2251 2232