diff options
author | Christoph Hellwig <hch@lst.de> | 2007-01-08 05:56:59 -0500 |
---|---|---|
committer | Dave Airlie <airlied@linux.ie> | 2007-02-07 21:24:26 -0500 |
commit | 004a7727421fd202bbdfcc0231a3359085199a52 (patch) | |
tree | 74da2f5eb50095cf7b5388ee05a26328a5519e1b /drivers/char/drm/drm_memory.c | |
parent | b9094d3aaa9550e740b6fd12b68f485d9979ce27 (diff) |
drm: remove drm_ioremap and drm_ioremapfree
hch originally submitted this for paravirt ops work, airlied took it
and cleaned up a lot of unused code caused by using this.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Airlie <airlied@linux.ie>
Diffstat (limited to 'drivers/char/drm/drm_memory.c')
-rw-r--r-- | drivers/char/drm/drm_memory.c | 94 |
1 files changed, 18 insertions, 76 deletions
diff --git a/drivers/char/drm/drm_memory.c b/drivers/char/drm/drm_memory.c index 5681cae1d404..92a867082376 100644 --- a/drivers/char/drm/drm_memory.c +++ b/drivers/char/drm/drm_memory.c | |||
@@ -79,28 +79,6 @@ void *drm_realloc(void *oldpt, size_t oldsize, size_t size, int area) | |||
79 | } | 79 | } |
80 | 80 | ||
81 | #if __OS_HAS_AGP | 81 | #if __OS_HAS_AGP |
82 | /* | ||
83 | * Find the drm_map that covers the range [offset, offset+size). | ||
84 | */ | ||
85 | static drm_map_t *drm_lookup_map(unsigned long offset, | ||
86 | unsigned long size, drm_device_t * dev) | ||
87 | { | ||
88 | struct list_head *list; | ||
89 | drm_map_list_t *r_list; | ||
90 | drm_map_t *map; | ||
91 | |||
92 | list_for_each(list, &dev->maplist->head) { | ||
93 | r_list = (drm_map_list_t *) list; | ||
94 | map = r_list->map; | ||
95 | if (!map) | ||
96 | continue; | ||
97 | if (map->offset <= offset | ||
98 | && (offset + size) <= (map->offset + map->size)) | ||
99 | return map; | ||
100 | } | ||
101 | return NULL; | ||
102 | } | ||
103 | |||
104 | static void *agp_remap(unsigned long offset, unsigned long size, | 82 | static void *agp_remap(unsigned long offset, unsigned long size, |
105 | drm_device_t * dev) | 83 | drm_device_t * dev) |
106 | { | 84 | { |
@@ -169,13 +147,6 @@ int drm_unbind_agp(DRM_AGP_MEM * handle) | |||
169 | } | 147 | } |
170 | 148 | ||
171 | #else /* __OS_HAS_AGP */ | 149 | #else /* __OS_HAS_AGP */ |
172 | |||
173 | static inline drm_map_t *drm_lookup_map(unsigned long offset, | ||
174 | unsigned long size, drm_device_t * dev) | ||
175 | { | ||
176 | return NULL; | ||
177 | } | ||
178 | |||
179 | static inline void *agp_remap(unsigned long offset, unsigned long size, | 150 | static inline void *agp_remap(unsigned long offset, unsigned long size, |
180 | drm_device_t * dev) | 151 | drm_device_t * dev) |
181 | { | 152 | { |
@@ -184,57 +155,28 @@ static inline void *agp_remap(unsigned long offset, unsigned long size, | |||
184 | 155 | ||
185 | #endif /* agp */ | 156 | #endif /* agp */ |
186 | 157 | ||
187 | void *drm_ioremap(unsigned long offset, unsigned long size, | 158 | #endif /* debug_memory */ |
188 | drm_device_t * dev) | ||
189 | { | ||
190 | if (drm_core_has_AGP(dev) && dev->agp && dev->agp->cant_use_aperture) { | ||
191 | drm_map_t *map = drm_lookup_map(offset, size, dev); | ||
192 | |||
193 | if (map && map->type == _DRM_AGP) | ||
194 | return agp_remap(offset, size, dev); | ||
195 | } | ||
196 | return ioremap(offset, size); | ||
197 | } | ||
198 | EXPORT_SYMBOL(drm_ioremap); | ||
199 | 159 | ||
200 | #if 0 | 160 | void drm_core_ioremap(struct drm_map *map, struct drm_device *dev) |
201 | void *drm_ioremap_nocache(unsigned long offset, | ||
202 | unsigned long size, drm_device_t * dev) | ||
203 | { | 161 | { |
204 | if (drm_core_has_AGP(dev) && dev->agp && dev->agp->cant_use_aperture) { | 162 | if (drm_core_has_AGP(dev) && |
205 | drm_map_t *map = drm_lookup_map(offset, size, dev); | 163 | dev->agp && dev->agp->cant_use_aperture && map->type == _DRM_AGP) |
206 | 164 | map->handle = agp_remap(map->offset, map->size, dev); | |
207 | if (map && map->type == _DRM_AGP) | 165 | else |
208 | return agp_remap(offset, size, dev); | 166 | map->handle = ioremap(map->offset, map->size); |
209 | } | ||
210 | return ioremap_nocache(offset, size); | ||
211 | } | 167 | } |
212 | #endif /* 0 */ | 168 | EXPORT_SYMBOL(drm_core_ioremap); |
213 | 169 | ||
214 | void drm_ioremapfree(void *pt, unsigned long size, | 170 | void drm_core_ioremapfree(struct drm_map *map, struct drm_device *dev) |
215 | drm_device_t * dev) | ||
216 | { | 171 | { |
217 | /* | 172 | if (!map->handle || !map->size) |
218 | * This is a bit ugly. It would be much cleaner if the DRM API would use separate | 173 | return; |
219 | * routines for handling mappings in the AGP space. Hopefully this can be done in | 174 | |
220 | * a future revision of the interface... | 175 | if (drm_core_has_AGP(dev) && |
221 | */ | 176 | dev->agp && dev->agp->cant_use_aperture && map->type == _DRM_AGP) |
222 | if (drm_core_has_AGP(dev) && dev->agp && dev->agp->cant_use_aperture | 177 | vunmap(map->handle); |
223 | && ((unsigned long)pt >= VMALLOC_START | 178 | else |
224 | && (unsigned long)pt < VMALLOC_END)) { | 179 | iounmap(map->handle); |
225 | unsigned long offset; | ||
226 | drm_map_t *map; | ||
227 | |||
228 | offset = drm_follow_page(pt) | ((unsigned long)pt & ~PAGE_MASK); | ||
229 | map = drm_lookup_map(offset, size, dev); | ||
230 | if (map && map->type == _DRM_AGP) { | ||
231 | vunmap(pt); | ||
232 | return; | ||
233 | } | ||
234 | } | ||
235 | |||
236 | iounmap(pt); | ||
237 | } | 180 | } |
238 | EXPORT_SYMBOL(drm_ioremapfree); | 181 | EXPORT_SYMBOL(drm_core_ioremapfree); |
239 | 182 | ||
240 | #endif /* debug_memory */ | ||