aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/agp/intel-gtt.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2010-08-29 08:18:49 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2010-09-08 16:20:19 -0400
commit3b15a9d7cd59b7ec79f61aafabfbe84116561461 (patch)
treefa53438e6bee5bedd9ce32a9ba35854dcc6f1b73 /drivers/char/agp/intel-gtt.c
parent2d2430cf9bf9e8b0ad9ea34a103625f4fe7e4477 (diff)
intel-gtt: call init_gtt_init in probe function
This way create_gatt_table become dummy glue functions for the fake agp driver - rename them accordingly (and kill the now unnecessary i9xx copy). With this change, the gtt initialization code is almost independant from the agp stuff. Two things are still missing: - the scratch page is created by the generic agp code. - filling the whole gtt with scratch_page ptes is not yet consolidated - this needs abstracted pte handling, first. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/char/agp/intel-gtt.c')
-rw-r--r--drivers/char/agp/intel-gtt.c60
1 files changed, 15 insertions, 45 deletions
diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c
index 7ac7d5cb3dc1..d7207e8092ab 100644
--- a/drivers/char/agp/intel-gtt.c
+++ b/drivers/char/agp/intel-gtt.c
@@ -804,6 +804,13 @@ static unsigned int intel_gtt_mappable_entries(void)
804static int intel_gtt_init(void) 804static int intel_gtt_init(void)
805{ 805{
806 u32 gtt_map_size; 806 u32 gtt_map_size;
807 int ret;
808
809 intel_private.base.gtt_mappable_entries = intel_gtt_mappable_entries();
810
811 ret = intel_private.driver->setup();
812 if (ret != 0)
813 return ret;
807 814
808 intel_private.base.gtt_mappable_entries = intel_gtt_mappable_entries(); 815 intel_private.base.gtt_mappable_entries = intel_gtt_mappable_entries();
809 intel_private.base.gtt_total_entries = intel_gtt_total_entries(); 816 intel_private.base.gtt_total_entries = intel_gtt_total_entries();
@@ -938,21 +945,8 @@ static int i830_setup(void)
938 return 0; 945 return 0;
939} 946}
940 947
941/* The intel i830 automatically initializes the agp aperture during POST. 948static int intel_fake_agp_create_gatt_table(struct agp_bridge_data *bridge)
942 * Use the memory already set aside for in the GTT.
943 */
944static int intel_i830_create_gatt_table(struct agp_bridge_data *bridge)
945{ 949{
946 int ret;
947
948 ret = intel_private.driver->setup();
949 if (ret != 0)
950 return ret;
951
952 ret = intel_gtt_init();
953 if (ret != 0)
954 return ret;
955
956 agp_bridge->gatt_table_real = NULL; 950 agp_bridge->gatt_table_real = NULL;
957 agp_bridge->gatt_table = NULL; 951 agp_bridge->gatt_table = NULL;
958 agp_bridge->gatt_bus_addr = 0; 952 agp_bridge->gatt_bus_addr = 0;
@@ -960,9 +954,6 @@ static int intel_i830_create_gatt_table(struct agp_bridge_data *bridge)
960 return 0; 954 return 0;
961} 955}
962 956
963/* Return the gatt table to a sane state. Use the top of stolen
964 * memory for the GTT.
965 */
966static int intel_fake_agp_free_gatt_table(struct agp_bridge_data *bridge) 957static int intel_fake_agp_free_gatt_table(struct agp_bridge_data *bridge)
967{ 958{
968 return 0; 959 return 0;
@@ -1321,28 +1312,6 @@ static int i9xx_setup(void)
1321 return 0; 1312 return 0;
1322} 1313}
1323 1314
1324/* The intel i915 automatically initializes the agp aperture during POST.
1325 * Use the memory already set aside for in the GTT.
1326 */
1327static int intel_i915_create_gatt_table(struct agp_bridge_data *bridge)
1328{
1329 int ret;
1330
1331 ret = intel_private.driver->setup();
1332 if (ret != 0)
1333 return ret;
1334
1335 ret = intel_gtt_init();
1336 if (ret != 0)
1337 return ret;
1338
1339 agp_bridge->gatt_table_real = NULL;
1340 agp_bridge->gatt_table = NULL;
1341 agp_bridge->gatt_bus_addr = 0;
1342
1343 return 0;
1344}
1345
1346/* 1315/*
1347 * The i965 supports 36-bit physical addresses, but to keep 1316 * The i965 supports 36-bit physical addresses, but to keep
1348 * the format of the GTT the same, the bits that don't fit 1317 * the format of the GTT the same, the bits that don't fit
@@ -1411,7 +1380,7 @@ static const struct agp_bridge_driver intel_830_driver = {
1411 .masks = intel_i810_masks, 1380 .masks = intel_i810_masks,
1412 .agp_enable = intel_fake_agp_enable, 1381 .agp_enable = intel_fake_agp_enable,
1413 .cache_flush = global_cache_flush, 1382 .cache_flush = global_cache_flush,
1414 .create_gatt_table = intel_i830_create_gatt_table, 1383 .create_gatt_table = intel_fake_agp_create_gatt_table,
1415 .free_gatt_table = intel_fake_agp_free_gatt_table, 1384 .free_gatt_table = intel_fake_agp_free_gatt_table,
1416 .insert_memory = intel_i830_insert_entries, 1385 .insert_memory = intel_i830_insert_entries,
1417 .remove_memory = intel_i830_remove_entries, 1386 .remove_memory = intel_i830_remove_entries,
@@ -1438,7 +1407,7 @@ static const struct agp_bridge_driver intel_915_driver = {
1438 .masks = intel_i810_masks, 1407 .masks = intel_i810_masks,
1439 .agp_enable = intel_fake_agp_enable, 1408 .agp_enable = intel_fake_agp_enable,
1440 .cache_flush = global_cache_flush, 1409 .cache_flush = global_cache_flush,
1441 .create_gatt_table = intel_i915_create_gatt_table, 1410 .create_gatt_table = intel_fake_agp_create_gatt_table,
1442 .free_gatt_table = intel_fake_agp_free_gatt_table, 1411 .free_gatt_table = intel_fake_agp_free_gatt_table,
1443 .insert_memory = intel_i915_insert_entries, 1412 .insert_memory = intel_i915_insert_entries,
1444 .remove_memory = intel_i915_remove_entries, 1413 .remove_memory = intel_i915_remove_entries,
@@ -1471,7 +1440,7 @@ static const struct agp_bridge_driver intel_i965_driver = {
1471 .masks = intel_i810_masks, 1440 .masks = intel_i810_masks,
1472 .agp_enable = intel_fake_agp_enable, 1441 .agp_enable = intel_fake_agp_enable,
1473 .cache_flush = global_cache_flush, 1442 .cache_flush = global_cache_flush,
1474 .create_gatt_table = intel_i915_create_gatt_table, 1443 .create_gatt_table = intel_fake_agp_create_gatt_table,
1475 .free_gatt_table = intel_fake_agp_free_gatt_table, 1444 .free_gatt_table = intel_fake_agp_free_gatt_table,
1476 .insert_memory = intel_i915_insert_entries, 1445 .insert_memory = intel_i915_insert_entries,
1477 .remove_memory = intel_i915_remove_entries, 1446 .remove_memory = intel_i915_remove_entries,
@@ -1504,7 +1473,7 @@ static const struct agp_bridge_driver intel_gen6_driver = {
1504 .masks = intel_gen6_masks, 1473 .masks = intel_gen6_masks,
1505 .agp_enable = intel_fake_agp_enable, 1474 .agp_enable = intel_fake_agp_enable,
1506 .cache_flush = global_cache_flush, 1475 .cache_flush = global_cache_flush,
1507 .create_gatt_table = intel_i915_create_gatt_table, 1476 .create_gatt_table = intel_fake_agp_create_gatt_table,
1508 .free_gatt_table = intel_fake_agp_free_gatt_table, 1477 .free_gatt_table = intel_fake_agp_free_gatt_table,
1509 .insert_memory = intel_i915_insert_entries, 1478 .insert_memory = intel_i915_insert_entries,
1510 .remove_memory = intel_i915_remove_entries, 1479 .remove_memory = intel_i915_remove_entries,
@@ -1537,7 +1506,7 @@ static const struct agp_bridge_driver intel_g33_driver = {
1537 .masks = intel_i810_masks, 1506 .masks = intel_i810_masks,
1538 .agp_enable = intel_fake_agp_enable, 1507 .agp_enable = intel_fake_agp_enable,
1539 .cache_flush = global_cache_flush, 1508 .cache_flush = global_cache_flush,
1540 .create_gatt_table = intel_i915_create_gatt_table, 1509 .create_gatt_table = intel_fake_agp_create_gatt_table,
1541 .free_gatt_table = intel_fake_agp_free_gatt_table, 1510 .free_gatt_table = intel_fake_agp_free_gatt_table,
1542 .insert_memory = intel_i915_insert_entries, 1511 .insert_memory = intel_i915_insert_entries,
1543 .remove_memory = intel_i915_remove_entries, 1512 .remove_memory = intel_i915_remove_entries,
@@ -1744,7 +1713,8 @@ int intel_gmch_probe(struct pci_dev *pdev,
1744 if (bridge->driver == &intel_810_driver) 1713 if (bridge->driver == &intel_810_driver)
1745 return 1; 1714 return 1;
1746 1715
1747 intel_private.base.gtt_mappable_entries = intel_gtt_mappable_entries(); 1716 if (intel_gtt_init() != 0)
1717 return 0;
1748 1718
1749 return 1; 1719 return 1;
1750} 1720}