intel-gtt: call init_gtt_init in probe function
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 29 Aug 2010 12:18:49 +0000 (14:18 +0200)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 8 Sep 2010 20:20:19 +0000 (21:20 +0100)
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>
drivers/char/agp/intel-gtt.c

index 7ac7d5c..d7207e8 100644 (file)
@@ -804,6 +804,13 @@ static unsigned int intel_gtt_mappable_entries(void)
 static int intel_gtt_init(void)
 {
        u32 gtt_map_size;
+       int ret;
+
+       intel_private.base.gtt_mappable_entries = intel_gtt_mappable_entries();
+
+       ret = intel_private.driver->setup();
+       if (ret != 0)
+               return ret;
 
        intel_private.base.gtt_mappable_entries = intel_gtt_mappable_entries();
        intel_private.base.gtt_total_entries = intel_gtt_total_entries();
@@ -938,21 +945,8 @@ static int i830_setup(void)
        return 0;
 }
 
-/* The intel i830 automatically initializes the agp aperture during POST.
- * Use the memory already set aside for in the GTT.
- */
-static int intel_i830_create_gatt_table(struct agp_bridge_data *bridge)
+static int intel_fake_agp_create_gatt_table(struct agp_bridge_data *bridge)
 {
-       int ret;
-
-       ret = intel_private.driver->setup();
-       if (ret != 0)
-               return ret;
-
-       ret = intel_gtt_init();
-       if (ret != 0)
-               return ret;
-
        agp_bridge->gatt_table_real = NULL;
        agp_bridge->gatt_table = NULL;
        agp_bridge->gatt_bus_addr = 0;
@@ -960,9 +954,6 @@ static int intel_i830_create_gatt_table(struct agp_bridge_data *bridge)
        return 0;
 }
 
-/* Return the gatt table to a sane state. Use the top of stolen
- * memory for the GTT.
- */
 static int intel_fake_agp_free_gatt_table(struct agp_bridge_data *bridge)
 {
        return 0;
@@ -1321,28 +1312,6 @@ static int i9xx_setup(void)
        return 0;
 }
 
-/* The intel i915 automatically initializes the agp aperture during POST.
- * Use the memory already set aside for in the GTT.
- */
-static int intel_i915_create_gatt_table(struct agp_bridge_data *bridge)
-{
-       int ret;
-
-       ret = intel_private.driver->setup();
-       if (ret != 0)
-               return ret;
-
-       ret = intel_gtt_init();
-       if (ret != 0)
-               return ret;
-
-       agp_bridge->gatt_table_real = NULL;
-       agp_bridge->gatt_table = NULL;
-       agp_bridge->gatt_bus_addr = 0;
-
-       return 0;
-}
-
 /*
  * The i965 supports 36-bit physical addresses, but to keep
  * 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 = {
        .masks                  = intel_i810_masks,
        .agp_enable             = intel_fake_agp_enable,
        .cache_flush            = global_cache_flush,
-       .create_gatt_table      = intel_i830_create_gatt_table,
+       .create_gatt_table      = intel_fake_agp_create_gatt_table,
        .free_gatt_table        = intel_fake_agp_free_gatt_table,
        .insert_memory          = intel_i830_insert_entries,
        .remove_memory          = intel_i830_remove_entries,
@@ -1438,7 +1407,7 @@ static const struct agp_bridge_driver intel_915_driver = {
        .masks                  = intel_i810_masks,
        .agp_enable             = intel_fake_agp_enable,
        .cache_flush            = global_cache_flush,
-       .create_gatt_table      = intel_i915_create_gatt_table,
+       .create_gatt_table      = intel_fake_agp_create_gatt_table,
        .free_gatt_table        = intel_fake_agp_free_gatt_table,
        .insert_memory          = intel_i915_insert_entries,
        .remove_memory          = intel_i915_remove_entries,
@@ -1471,7 +1440,7 @@ static const struct agp_bridge_driver intel_i965_driver = {
        .masks                  = intel_i810_masks,
        .agp_enable             = intel_fake_agp_enable,
        .cache_flush            = global_cache_flush,
-       .create_gatt_table      = intel_i915_create_gatt_table,
+       .create_gatt_table      = intel_fake_agp_create_gatt_table,
        .free_gatt_table        = intel_fake_agp_free_gatt_table,
        .insert_memory          = intel_i915_insert_entries,
        .remove_memory          = intel_i915_remove_entries,
@@ -1504,7 +1473,7 @@ static const struct agp_bridge_driver intel_gen6_driver = {
        .masks                  = intel_gen6_masks,
        .agp_enable             = intel_fake_agp_enable,
        .cache_flush            = global_cache_flush,
-       .create_gatt_table      = intel_i915_create_gatt_table,
+       .create_gatt_table      = intel_fake_agp_create_gatt_table,
        .free_gatt_table        = intel_fake_agp_free_gatt_table,
        .insert_memory          = intel_i915_insert_entries,
        .remove_memory          = intel_i915_remove_entries,
@@ -1537,7 +1506,7 @@ static const struct agp_bridge_driver intel_g33_driver = {
        .masks                  = intel_i810_masks,
        .agp_enable             = intel_fake_agp_enable,
        .cache_flush            = global_cache_flush,
-       .create_gatt_table      = intel_i915_create_gatt_table,
+       .create_gatt_table      = intel_fake_agp_create_gatt_table,
        .free_gatt_table        = intel_fake_agp_free_gatt_table,
        .insert_memory          = intel_i915_insert_entries,
        .remove_memory          = intel_i915_remove_entries,
@@ -1744,7 +1713,8 @@ int intel_gmch_probe(struct pci_dev *pdev,
        if (bridge->driver == &intel_810_driver)
                return 1;
 
-       intel_private.base.gtt_mappable_entries = intel_gtt_mappable_entries();
+       if (intel_gtt_init() != 0)
+               return 0;
 
        return 1;
 }