#include <linux/pm.h>
#include <linux/agp_backend.h>
#include <linux/vmalloc.h>
+#include <asm/io.h>
#include "agp.h"
__u32 *agp_gatt_table;
/* AK: bogus, should encode addresses > 4GB */
for (i = 0; i < num_entries; i++)
- agp_bridge->gatt_table[i] = (unsigned long) agp_bridge->scratch_page;
+ writel(agp_bridge->scratch_page, agp_bridge->gatt_table+i);
return 0;
}
j = pg_start;
while (j < (pg_start + mem->page_count)) {
- if (!PGE_EMPTY(agp_bridge, agp_bridge->gatt_table[j])) {
+ if (!PGE_EMPTY(agp_bridge, readl(agp_bridge->gatt_table+j)))
return -EBUSY;
- }
j++;
}
}
for (i = 0, j = pg_start; i < mem->page_count; i++, j++)
- agp_bridge->gatt_table[j] =
- agp_bridge->driver->mask_memory(
- mem->memory[i], mem->type);
+ writel(agp_bridge->driver->mask_memory(mem->memory[i], mem->type), agp_bridge->gatt_table+j);
agp_bridge->driver->tlb_flush(mem);
return 0;
}
/* AK: bogus, should encode addresses > 4GB */
- for (i = pg_start; i < (mem->page_count + pg_start); i++) {
- agp_bridge->gatt_table[i] =
- (unsigned long) agp_bridge->scratch_page;
- }
+ for (i = pg_start; i < (mem->page_count + pg_start); i++)
+ writel(agp_bridge->scratch_page, agp_bridge->gatt_table+i);
agp_bridge->driver->tlb_flush(mem);
return 0;