agp: tidy up handling of scratch pages w.r.t. DMA API
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c
index 19ac366..3c3a487 100644
--- a/drivers/char/agp/backend.c
+++ b/drivers/char/agp/backend.c
@@ -150,17 +150,20 @@
}
bridge->scratch_page_real = phys_to_gart(page_to_phys(page));
- bridge->scratch_page = bridge->driver->mask_memory(bridge,
- phys_to_gart(page_to_phys(page)), 0);
-
- if (bridge->driver->agp_map_page &&
- bridge->driver->agp_map_page(phys_to_virt(page_to_phys(page)),
- &bridge->scratch_page_dma)) {
- dev_err(&bridge->dev->dev,
- "unable to dma-map scratch page\n");
- rc = -ENOMEM;
- goto err_out_nounmap;
+ if (bridge->driver->agp_map_page) {
+ if (bridge->driver->agp_map_page(phys_to_virt(page_to_phys(page)),
+ &bridge->scratch_page_dma)) {
+ dev_err(&bridge->dev->dev,
+ "unable to dma-map scratch page\n");
+ rc = -ENOMEM;
+ goto err_out_nounmap;
+ }
+ } else {
+ bridge->scratch_page_dma = phys_to_gart(page_to_phys(page));
}
+
+ bridge->scratch_page = bridge->driver->mask_memory(bridge,
+ bridge->scratch_page_dma, 0);
}
size_value = bridge->driver->fetch_size();
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 20fe82b..b8f2c75 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -1138,13 +1138,9 @@
writel(agp_bridge->gatt_bus_addr|I810_PGETBL_ENABLED, intel_private.registers+I810_PGETBL_CTL);
readl(intel_private.registers+I810_PGETBL_CTL); /* PCI Posting. */
-#ifndef USE_PCI_DMA_API
- agp_bridge->scratch_page_dma = agp_bridge->scratch_page;
-#endif
-
if (agp_bridge->driver->needs_scratch_page) {
for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) {
- writel(agp_bridge->scratch_page_dma, intel_private.gtt+i);
+ writel(agp_bridge->scratch_page, intel_private.gtt+i);
}
readl(intel_private.gtt+i-1); /* PCI Posting. */
}
@@ -1242,7 +1238,7 @@
}
for (i = pg_start; i < (mem->page_count + pg_start); i++)
- writel(agp_bridge->scratch_page_dma, intel_private.gtt+i);
+ writel(agp_bridge->scratch_page, intel_private.gtt+i);
readl(intel_private.gtt+i-1);