diff options
| author | David Woodhouse <David.Woodhouse@intel.com> | 2009-07-29 03:39:26 -0400 |
|---|---|---|
| committer | David Woodhouse <David.Woodhouse@intel.com> | 2009-08-03 04:04:54 -0400 |
| commit | c2980d8c2961113f24863f70d8ad016f55224c81 (patch) | |
| tree | 642962c363fe11d2ead4caffeaaf712629259dfa | |
| parent | 56ec4c1e72865c6d99f643b6574e6e074c3e8823 (diff) | |
agp: Switch agp_{un,}map_page() to take struct page * argument
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
| -rw-r--r-- | drivers/char/agp/agp.h | 6 | ||||
| -rw-r--r-- | drivers/char/agp/backend.c | 17 | ||||
| -rw-r--r-- | drivers/char/agp/intel-agp.c | 12 |
3 files changed, 17 insertions, 18 deletions
diff --git a/drivers/char/agp/agp.h b/drivers/char/agp/agp.h index 17e6d0d3ba36..4c6e5079d870 100644 --- a/drivers/char/agp/agp.h +++ b/drivers/char/agp/agp.h | |||
| @@ -122,8 +122,8 @@ struct agp_bridge_driver { | |||
| 122 | int (*agp_type_to_mask_type) (struct agp_bridge_data *, int); | 122 | int (*agp_type_to_mask_type) (struct agp_bridge_data *, int); |
| 123 | void (*chipset_flush)(struct agp_bridge_data *); | 123 | void (*chipset_flush)(struct agp_bridge_data *); |
| 124 | 124 | ||
| 125 | int (*agp_map_page)(void *addr, dma_addr_t *ret); | 125 | int (*agp_map_page)(struct page *page, dma_addr_t *ret); |
| 126 | void (*agp_unmap_page)(void *addr, dma_addr_t dma); | 126 | void (*agp_unmap_page)(struct page *page, dma_addr_t dma); |
| 127 | int (*agp_map_memory)(struct agp_memory *mem); | 127 | int (*agp_map_memory)(struct agp_memory *mem); |
| 128 | void (*agp_unmap_memory)(struct agp_memory *mem); | 128 | void (*agp_unmap_memory)(struct agp_memory *mem); |
| 129 | }; | 129 | }; |
| @@ -139,7 +139,7 @@ struct agp_bridge_data { | |||
| 139 | u32 __iomem *gatt_table; | 139 | u32 __iomem *gatt_table; |
| 140 | u32 *gatt_table_real; | 140 | u32 *gatt_table_real; |
| 141 | unsigned long scratch_page; | 141 | unsigned long scratch_page; |
| 142 | unsigned long scratch_page_real; | 142 | struct page *scratch_page_page; |
| 143 | dma_addr_t scratch_page_dma; | 143 | dma_addr_t scratch_page_dma; |
| 144 | unsigned long gart_bus_addr; | 144 | unsigned long gart_bus_addr; |
| 145 | unsigned long gatt_bus_addr; | 145 | unsigned long gatt_bus_addr; |
diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c index 3c3a487f7b9d..343f102090a0 100644 --- a/drivers/char/agp/backend.c +++ b/drivers/char/agp/backend.c | |||
| @@ -149,9 +149,9 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge) | |||
| 149 | return -ENOMEM; | 149 | return -ENOMEM; |
| 150 | } | 150 | } |
| 151 | 151 | ||
| 152 | bridge->scratch_page_real = phys_to_gart(page_to_phys(page)); | 152 | bridge->scratch_page_page = page; |
| 153 | if (bridge->driver->agp_map_page) { | 153 | if (bridge->driver->agp_map_page) { |
| 154 | if (bridge->driver->agp_map_page(phys_to_virt(page_to_phys(page)), | 154 | if (bridge->driver->agp_map_page(page, |
| 155 | &bridge->scratch_page_dma)) { | 155 | &bridge->scratch_page_dma)) { |
| 156 | dev_err(&bridge->dev->dev, | 156 | dev_err(&bridge->dev->dev, |
| 157 | "unable to dma-map scratch page\n"); | 157 | "unable to dma-map scratch page\n"); |
| @@ -205,13 +205,12 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge) | |||
| 205 | err_out: | 205 | err_out: |
| 206 | if (bridge->driver->needs_scratch_page && | 206 | if (bridge->driver->needs_scratch_page && |
| 207 | bridge->driver->agp_unmap_page) { | 207 | bridge->driver->agp_unmap_page) { |
| 208 | void *va = gart_to_virt(bridge->scratch_page_real); | 208 | bridge->driver->agp_unmap_page(bridge->scratch_page_page, |
| 209 | 209 | bridge->scratch_page_dma); | |
| 210 | bridge->driver->agp_unmap_page(va, bridge->scratch_page_dma); | ||
| 211 | } | 210 | } |
| 212 | err_out_nounmap: | 211 | err_out_nounmap: |
| 213 | if (bridge->driver->needs_scratch_page) { | 212 | if (bridge->driver->needs_scratch_page) { |
| 214 | void *va = gart_to_virt(bridge->scratch_page_real); | 213 | void *va = page_address(bridge->scratch_page_page); |
| 215 | 214 | ||
| 216 | bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP); | 215 | bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP); |
| 217 | bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE); | 216 | bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE); |
| @@ -238,11 +237,11 @@ static void agp_backend_cleanup(struct agp_bridge_data *bridge) | |||
| 238 | 237 | ||
| 239 | if (bridge->driver->agp_destroy_page && | 238 | if (bridge->driver->agp_destroy_page && |
| 240 | bridge->driver->needs_scratch_page) { | 239 | bridge->driver->needs_scratch_page) { |
| 241 | void *va = gart_to_virt(bridge->scratch_page_real); | 240 | void *va = page_address(bridge->scratch_page_page); |
| 242 | 241 | ||
| 243 | if (bridge->driver->agp_unmap_page) | 242 | if (bridge->driver->agp_unmap_page) |
| 244 | bridge->driver->agp_unmap_page(va, | 243 | bridge->driver->agp_unmap_page(bridge->scratch_page_page, |
| 245 | bridge->scratch_page_dma); | 244 | bridge->scratch_page_dma); |
| 246 | 245 | ||
| 247 | bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP); | 246 | bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP); |
| 248 | bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE); | 247 | bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE); |
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index b8f2c75b98d1..148d7e38fddf 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c | |||
| @@ -181,19 +181,19 @@ static struct _intel_private { | |||
| 181 | } intel_private; | 181 | } intel_private; |
| 182 | 182 | ||
| 183 | #ifdef USE_PCI_DMA_API | 183 | #ifdef USE_PCI_DMA_API |
| 184 | static int intel_agp_map_page(void *addr, dma_addr_t *ret) | 184 | static int intel_agp_map_page(struct page *page, dma_addr_t *ret) |
| 185 | { | 185 | { |
| 186 | *ret = pci_map_single(intel_private.pcidev, addr, | 186 | *ret = pci_map_page(intel_private.pcidev, page, 0, |
| 187 | PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); | 187 | PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); |
| 188 | if (pci_dma_mapping_error(intel_private.pcidev, *ret)) | 188 | if (pci_dma_mapping_error(intel_private.pcidev, *ret)) |
| 189 | return -EINVAL; | 189 | return -EINVAL; |
| 190 | return 0; | 190 | return 0; |
| 191 | } | 191 | } |
| 192 | 192 | ||
| 193 | static void intel_agp_unmap_page(void *addr, dma_addr_t dma) | 193 | static void intel_agp_unmap_page(struct page *page, dma_addr_t dma) |
| 194 | { | 194 | { |
| 195 | pci_unmap_single(intel_private.pcidev, dma, | 195 | pci_unmap_page(intel_private.pcidev, dma, |
| 196 | PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); | 196 | PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); |
| 197 | } | 197 | } |
| 198 | 198 | ||
| 199 | static int intel_agp_map_memory(struct agp_memory *mem) | 199 | static int intel_agp_map_memory(struct agp_memory *mem) |
