diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2009-07-27 11:44:32 -0400 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2009-08-03 04:04:52 -0400 |
commit | 56ec4c1e72865c6d99f643b6574e6e074c3e8823 (patch) | |
tree | 92b34c18f1d5d343d5997ee01cc786016d7f1785 /drivers/char/agp/backend.c | |
parent | 176616814d700f19914d8509d9f65dec51a6ebf7 (diff) |
agp: tidy up handling of scratch pages w.r.t. DMA API
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/char/agp/backend.c')
-rw-r--r-- | drivers/char/agp/backend.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c index 19ac3663acdc..3c3a487f7b9d 100644 --- a/drivers/char/agp/backend.c +++ b/drivers/char/agp/backend.c | |||
@@ -150,17 +150,20 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge) | |||
150 | } | 150 | } |
151 | 151 | ||
152 | bridge->scratch_page_real = phys_to_gart(page_to_phys(page)); | 152 | bridge->scratch_page_real = phys_to_gart(page_to_phys(page)); |
153 | bridge->scratch_page = bridge->driver->mask_memory(bridge, | 153 | if (bridge->driver->agp_map_page) { |
154 | phys_to_gart(page_to_phys(page)), 0); | 154 | if (bridge->driver->agp_map_page(phys_to_virt(page_to_phys(page)), |
155 | 155 | &bridge->scratch_page_dma)) { | |
156 | if (bridge->driver->agp_map_page && | 156 | dev_err(&bridge->dev->dev, |
157 | bridge->driver->agp_map_page(phys_to_virt(page_to_phys(page)), | 157 | "unable to dma-map scratch page\n"); |
158 | &bridge->scratch_page_dma)) { | 158 | rc = -ENOMEM; |
159 | dev_err(&bridge->dev->dev, | 159 | goto err_out_nounmap; |
160 | "unable to dma-map scratch page\n"); | 160 | } |
161 | rc = -ENOMEM; | 161 | } else { |
162 | goto err_out_nounmap; | 162 | bridge->scratch_page_dma = phys_to_gart(page_to_phys(page)); |
163 | } | 163 | } |
164 | |||
165 | bridge->scratch_page = bridge->driver->mask_memory(bridge, | ||
166 | bridge->scratch_page_dma, 0); | ||
164 | } | 167 | } |
165 | 168 | ||
166 | size_value = bridge->driver->fetch_size(); | 169 | size_value = bridge->driver->fetch_size(); |