|
@@ -149,9 +149,9 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
}
|
|
}
|
|
|
|
|
|
- bridge->scratch_page_real = phys_to_gart(page_to_phys(page));
|
|
|
|
|
|
+ bridge->scratch_page_page = page;
|
|
if (bridge->driver->agp_map_page) {
|
|
if (bridge->driver->agp_map_page) {
|
|
- if (bridge->driver->agp_map_page(phys_to_virt(page_to_phys(page)),
|
|
|
|
|
|
+ if (bridge->driver->agp_map_page(page,
|
|
&bridge->scratch_page_dma)) {
|
|
&bridge->scratch_page_dma)) {
|
|
dev_err(&bridge->dev->dev,
|
|
dev_err(&bridge->dev->dev,
|
|
"unable to dma-map scratch page\n");
|
|
"unable to dma-map scratch page\n");
|
|
@@ -205,13 +205,12 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge)
|
|
err_out:
|
|
err_out:
|
|
if (bridge->driver->needs_scratch_page &&
|
|
if (bridge->driver->needs_scratch_page &&
|
|
bridge->driver->agp_unmap_page) {
|
|
bridge->driver->agp_unmap_page) {
|
|
- void *va = gart_to_virt(bridge->scratch_page_real);
|
|
|
|
-
|
|
|
|
- bridge->driver->agp_unmap_page(va, bridge->scratch_page_dma);
|
|
|
|
|
|
+ bridge->driver->agp_unmap_page(bridge->scratch_page_page,
|
|
|
|
+ bridge->scratch_page_dma);
|
|
}
|
|
}
|
|
err_out_nounmap:
|
|
err_out_nounmap:
|
|
if (bridge->driver->needs_scratch_page) {
|
|
if (bridge->driver->needs_scratch_page) {
|
|
- void *va = gart_to_virt(bridge->scratch_page_real);
|
|
|
|
|
|
+ void *va = page_address(bridge->scratch_page_page);
|
|
|
|
|
|
bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP);
|
|
bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP);
|
|
bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE);
|
|
bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE);
|
|
@@ -238,11 +237,11 @@ static void agp_backend_cleanup(struct agp_bridge_data *bridge)
|
|
|
|
|
|
if (bridge->driver->agp_destroy_page &&
|
|
if (bridge->driver->agp_destroy_page &&
|
|
bridge->driver->needs_scratch_page) {
|
|
bridge->driver->needs_scratch_page) {
|
|
- void *va = gart_to_virt(bridge->scratch_page_real);
|
|
|
|
|
|
+ void *va = page_address(bridge->scratch_page_page);
|
|
|
|
|
|
if (bridge->driver->agp_unmap_page)
|
|
if (bridge->driver->agp_unmap_page)
|
|
- bridge->driver->agp_unmap_page(va,
|
|
|
|
- bridge->scratch_page_dma);
|
|
|
|
|
|
+ bridge->driver->agp_unmap_page(bridge->scratch_page_page,
|
|
|
|
+ bridge->scratch_page_dma);
|
|
|
|
|
|
bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP);
|
|
bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP);
|
|
bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE);
|
|
bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE);
|