Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm
[pandora-kernel.git] / drivers / char / agp / intel-gtt.c
index 356f73e..826ab09 100644 (file)
@@ -688,14 +688,14 @@ static int intel_gtt_init(void)
 
        intel_private.base.stolen_size = intel_gtt_stolen_size();
 
+       intel_private.base.needs_dmar = USE_PCI_DMA_API && INTEL_GTT_GEN > 2;
+
        ret = intel_gtt_setup_scratch_page();
        if (ret != 0) {
                intel_gtt_cleanup();
                return ret;
        }
 
-       intel_private.base.needs_dmar = USE_PCI_DMA_API && INTEL_GTT_GEN > 2;
-
        return 0;
 }
 
@@ -814,6 +814,12 @@ static bool intel_enable_gtt(void)
                }
        }
 
+       /* On the resume path we may be adjusting the PGTBL value, so
+        * be paranoid and flush all chipset write buffers...
+        */
+       if (INTEL_GTT_GEN >= 3)
+               writel(0, intel_private.registers+GFX_FLSH_CNTL);
+
        reg = intel_private.registers+I810_PGETBL_CTL;
        writel(intel_private.PGETBL_save, reg);
        if (HAS_PGTBL_EN && (readl(reg) & I810_PGETBL_ENABLED) == 0) {
@@ -823,6 +829,9 @@ static bool intel_enable_gtt(void)
                return false;
        }
 
+       if (INTEL_GTT_GEN >= 3)
+               writel(0, intel_private.registers+GFX_FLSH_CNTL);
+
        return true;
 }
 
@@ -991,14 +1000,14 @@ static int intel_fake_agp_remove_entries(struct agp_memory *mem,
        if (mem->page_count == 0)
                return 0;
 
+       intel_gtt_clear_range(pg_start, mem->page_count);
+
        if (intel_private.base.needs_dmar) {
                intel_gtt_unmap_memory(mem->sg_list, mem->num_sg);
                mem->sg_list = NULL;
                mem->num_sg = 0;
        }
 
-       intel_gtt_clear_range(pg_start, mem->page_count);
-
        return 0;
 }
 
@@ -1352,7 +1361,7 @@ static const struct intel_gtt_driver_description {
                &i81x_gtt_driver},
        { PCI_DEVICE_ID_INTEL_82830_CGC, "830M",
                &i8xx_gtt_driver},
-       { PCI_DEVICE_ID_INTEL_82845G_IG, "830M",
+       { PCI_DEVICE_ID_INTEL_82845G_IG, "845G",
                &i8xx_gtt_driver},
        { PCI_DEVICE_ID_INTEL_82854_IG, "854",
                &i8xx_gtt_driver},