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