aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/agp/intel-gtt.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/agp/intel-gtt.c')
-rw-r--r--drivers/char/agp/intel-gtt.c58
1 files changed, 8 insertions, 50 deletions
diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c
index 831f3c527bdf..3d93cd0acc01 100644
--- a/drivers/char/agp/intel-gtt.c
+++ b/drivers/char/agp/intel-gtt.c
@@ -708,7 +708,6 @@ static unsigned int intel_gtt_stolen_entries(void)
708 return stolen_entries; 708 return stolen_entries;
709} 709}
710 710
711#if 0 /* extracted code in bad shape, needs some cleaning before use */
712static unsigned int intel_gtt_total_entries(void) 711static unsigned int intel_gtt_total_entries(void)
713{ 712{
714 int size; 713 int size;
@@ -750,7 +749,6 @@ static unsigned int intel_gtt_total_entries(void)
750 return intel_private.base.gtt_mappable_entries; 749 return intel_private.base.gtt_mappable_entries;
751 } 750 }
752} 751}
753#endif
754 752
755static unsigned int intel_gtt_mappable_entries(void) 753static unsigned int intel_gtt_mappable_entries(void)
756{ 754{
@@ -1248,45 +1246,6 @@ static int intel_i915_remove_entries(struct agp_memory *mem, off_t pg_start,
1248 return 0; 1246 return 0;
1249} 1247}
1250 1248
1251/* Return the aperture size by just checking the resource length. The effect
1252 * described in the spec of the MSAC registers is just changing of the
1253 * resource size.
1254 */
1255static int intel_i915_get_gtt_size(void)
1256{
1257 int size;
1258
1259 if (IS_G33) {
1260 u16 gmch_ctrl;
1261
1262 /* G33's GTT size defined in gmch_ctrl */
1263 pci_read_config_word(intel_private.bridge_dev, I830_GMCH_CTRL, &gmch_ctrl);
1264 switch (gmch_ctrl & I830_GMCH_GMS_MASK) {
1265 case I830_GMCH_GMS_STOLEN_512:
1266 size = 512;
1267 break;
1268 case I830_GMCH_GMS_STOLEN_1024:
1269 size = 1024;
1270 break;
1271 case I830_GMCH_GMS_STOLEN_8192:
1272 size = 8*1024;
1273 break;
1274 default:
1275 dev_info(&intel_private.bridge_dev->dev,
1276 "unknown page table size 0x%x, assuming 512KB\n",
1277 (gmch_ctrl & I830_GMCH_GMS_MASK));
1278 size = 512;
1279 }
1280 } else {
1281 /* On previous hardware, the GTT size was just what was
1282 * required to map the aperture.
1283 */
1284 size = agp_bridge->driver->fetch_size();
1285 }
1286
1287 return KB(size);
1288}
1289
1290/* The intel i915 automatically initializes the agp aperture during POST. 1249/* The intel i915 automatically initializes the agp aperture during POST.
1291 * Use the memory already set aside for in the GTT. 1250 * Use the memory already set aside for in the GTT.
1292 */ 1251 */
@@ -1306,19 +1265,18 @@ static int intel_i915_create_gatt_table(struct agp_bridge_data *bridge)
1306 pci_read_config_dword(intel_private.pcidev, I915_MMADDR, &temp); 1265 pci_read_config_dword(intel_private.pcidev, I915_MMADDR, &temp);
1307 pci_read_config_dword(intel_private.pcidev, I915_PTEADDR, &temp2); 1266 pci_read_config_dword(intel_private.pcidev, I915_PTEADDR, &temp2);
1308 1267
1309 gtt_map_size = intel_i915_get_gtt_size(); 1268 temp &= 0xfff80000;
1310 1269
1311 intel_private.gtt = ioremap(temp2, gtt_map_size); 1270 intel_private.registers = ioremap(temp, 128 * 4096);
1312 if (!intel_private.gtt) 1271 if (!intel_private.registers)
1313 return -ENOMEM; 1272 return -ENOMEM;
1314 1273
1315 intel_private.base.gtt_total_entries = gtt_map_size / 4; 1274 intel_private.base.gtt_total_entries = intel_gtt_total_entries();
1316 1275 gtt_map_size = intel_private.base.gtt_total_entries * 4;
1317 temp &= 0xfff80000;
1318 1276
1319 intel_private.registers = ioremap(temp, 128 * 4096); 1277 intel_private.gtt = ioremap(temp2, gtt_map_size);
1320 if (!intel_private.registers) { 1278 if (!intel_private.gtt) {
1321 iounmap(intel_private.gtt); 1279 iounmap(intel_private.registers);
1322 return -ENOMEM; 1280 return -ENOMEM;
1323 } 1281 }
1324 1282