Commit 56ec4c1e authored by David Woodhouse's avatar David Woodhouse

agp: tidy up handling of scratch pages w.r.t. DMA API

Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent 17661681
...@@ -150,17 +150,20 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge) ...@@ -150,17 +150,20 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge)
} }
bridge->scratch_page_real = phys_to_gart(page_to_phys(page)); bridge->scratch_page_real = phys_to_gart(page_to_phys(page));
bridge->scratch_page = bridge->driver->mask_memory(bridge, if (bridge->driver->agp_map_page) {
phys_to_gart(page_to_phys(page)), 0); if (bridge->driver->agp_map_page(phys_to_virt(page_to_phys(page)),
&bridge->scratch_page_dma)) {
if (bridge->driver->agp_map_page && dev_err(&bridge->dev->dev,
bridge->driver->agp_map_page(phys_to_virt(page_to_phys(page)), "unable to dma-map scratch page\n");
&bridge->scratch_page_dma)) { rc = -ENOMEM;
dev_err(&bridge->dev->dev, goto err_out_nounmap;
"unable to dma-map scratch page\n"); }
rc = -ENOMEM; } else {
goto err_out_nounmap; 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(); size_value = bridge->driver->fetch_size();
......
...@@ -1138,13 +1138,9 @@ static int intel_i915_configure(void) ...@@ -1138,13 +1138,9 @@ static int intel_i915_configure(void)
writel(agp_bridge->gatt_bus_addr|I810_PGETBL_ENABLED, intel_private.registers+I810_PGETBL_CTL); writel(agp_bridge->gatt_bus_addr|I810_PGETBL_ENABLED, intel_private.registers+I810_PGETBL_CTL);
readl(intel_private.registers+I810_PGETBL_CTL); /* PCI Posting. */ 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) { if (agp_bridge->driver->needs_scratch_page) {
for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) { 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. */ readl(intel_private.gtt+i-1); /* PCI Posting. */
} }
...@@ -1242,7 +1238,7 @@ static int intel_i915_remove_entries(struct agp_memory *mem, off_t pg_start, ...@@ -1242,7 +1238,7 @@ static int intel_i915_remove_entries(struct agp_memory *mem, off_t pg_start,
} }
for (i = pg_start; i < (mem->page_count + pg_start); i++) 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); readl(intel_private.gtt+i-1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment