]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/char/agp/amd-k7-agp.c
Merge branch 'master' into tk71
[mv-sheeva.git] / drivers / char / agp / amd-k7-agp.c
index b6b1568314c8a5f63a44de50d70ca176b57b8090..45681c0ff3b64d01f5e8f3265ed3ef98bea6bab4 100644 (file)
@@ -41,22 +41,8 @@ static int amd_create_page_map(struct amd_page_map *page_map)
        if (page_map->real == NULL)
                return -ENOMEM;
 
-#ifndef CONFIG_X86
-       SetPageReserved(virt_to_page(page_map->real));
-       global_cache_flush();
-       page_map->remapped = ioremap_nocache(virt_to_phys(page_map->real),
-                                           PAGE_SIZE);
-       if (page_map->remapped == NULL) {
-               ClearPageReserved(virt_to_page(page_map->real));
-               free_page((unsigned long) page_map->real);
-               page_map->real = NULL;
-               return -ENOMEM;
-       }
-       global_cache_flush();
-#else
        set_memory_uc((unsigned long)page_map->real, 1);
        page_map->remapped = page_map->real;
-#endif
 
        for (i = 0; i < PAGE_SIZE / sizeof(unsigned long); i++) {
                writel(agp_bridge->scratch_page, page_map->remapped+i);
@@ -68,12 +54,7 @@ static int amd_create_page_map(struct amd_page_map *page_map)
 
 static void amd_free_page_map(struct amd_page_map *page_map)
 {
-#ifndef CONFIG_X86
-       iounmap(page_map->remapped);
-       ClearPageReserved(virt_to_page(page_map->real));
-#else
        set_memory_wb((unsigned long)page_map->real, 1);
-#endif
        free_page((unsigned long) page_map->real);
 }
 
@@ -309,7 +290,8 @@ static int amd_insert_memory(struct agp_memory *mem, off_t pg_start, int type)
 
        num_entries = A_SIZE_LVL2(agp_bridge->current_size)->num_entries;
 
-       if (type != 0 || mem->type != 0)
+       if (type != mem->type ||
+           agp_bridge->driver->agp_type_to_mask_type(agp_bridge, type))
                return -EINVAL;
 
        if ((pg_start + mem->page_count) > num_entries)
@@ -348,7 +330,8 @@ static int amd_remove_memory(struct agp_memory *mem, off_t pg_start, int type)
        unsigned long __iomem *cur_gatt;
        unsigned long addr;
 
-       if (type != 0 || mem->type != 0)
+       if (type != mem->type ||
+           agp_bridge->driver->agp_type_to_mask_type(agp_bridge, type))
                return -EINVAL;
 
        for (i = pg_start; i < (mem->page_count + pg_start); i++) {