• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/gpu/drm/

Lines Matching refs:map

43 						  struct drm_local_map *map)
49 * while PCI resources may live above that, we ignore the map
54 if (!entry->map ||
55 map->type != entry->map->type ||
58 switch (map->type) {
60 if (map->flags != _DRM_CONTAINS_LOCK)
68 if (entry->map->offset == map->offset)
128 * type. Adds the map to the map list drm_device::maplist. Adds MTRR's where
136 struct drm_local_map *map;
142 map = kmalloc(sizeof(*map), GFP_KERNEL);
143 if (!map)
146 map->offset = offset;
147 map->size = size;
148 map->flags = flags;
149 map->type = type;
155 if ((map->flags & _DRM_REMOVABLE) && map->type != _DRM_SHM) {
156 kfree(map);
160 (unsigned long long)map->offset, map->size, map->type);
164 * a non-aligned quantity to map the SAREA. --BenH
166 if (map->type == _DRM_SHM)
167 map->size = PAGE_ALIGN(map->size);
169 if ((map->offset & (~(resource_size_t)PAGE_MASK)) || (map->size & (~PAGE_MASK))) {
170 kfree(map);
173 map->mtrr = -1;
174 map->handle = NULL;
176 switch (map->type) {
181 if (map->offset + (map->size-1) < map->offset ||
182 map->offset < virt_to_phys(high_memory)) {
183 kfree(map);
188 map->offset += dev->hose->mem_space->start;
192 * when the server tries to create a duplicate map.
194 list = drm_find_matching_map(dev, map);
196 if (list->map->size != map->size) {
199 map->type, map->size,
200 list->map->size);
201 list->map->size = map->size;
204 kfree(map);
210 if (map->type == _DRM_FRAME_BUFFER ||
211 (map->flags & _DRM_WRITE_COMBINING)) {
212 map->mtrr = mtrr_add(map->offset, map->size,
216 if (map->type == _DRM_REGISTERS) {
217 map->handle = ioremap(map->offset, map->size);
218 if (!map->handle) {
219 kfree(map);
226 list = drm_find_matching_map(dev, map);
228 if(list->map->size != map->size) {
231 map->type, map->size, list->map->size);
232 list->map->size = map->size;
235 kfree(map);
239 map->handle = vmalloc_user(map->size);
241 map->size, drm_order(map->size), map->handle);
242 if (!map->handle) {
243 kfree(map);
246 map->offset = (unsigned long)map->handle;
247 if (map->flags & _DRM_CONTAINS_LOCK) {
250 vfree(map->handle);
251 kfree(map);
254 dev->sigdata.lock = dev->primary->master->lock.hw_lock = map->handle; /* Pointer to lock */
262 kfree(map);
266 map->offset += dev->hose->mem_space->start;
271 * address if the map's offset isn't already within the
274 if (map->offset < dev->agp->base ||
275 map->offset > dev->agp->base +
277 map->offset += dev->agp->base;
279 map->mtrr = dev->agp->agp_mtrr; /* for getmap */
288 if ((map->offset >= entry->bound) &&
289 (map->offset + map->size <= entry->bound + entry->pages * PAGE_SIZE)) {
295 kfree(map);
299 (unsigned long long)map->offset, map->size);
308 kfree(map);
311 map->offset += (unsigned long)dev->sg->virtual;
318 dmah = drm_pci_alloc(dev, map->size, map->size);
320 kfree(map);
323 map->handle = dmah->vaddr;
324 map->offset = (unsigned long)dmah->busaddr;
328 kfree(map);
334 if (map->type == _DRM_REGISTERS)
335 iounmap(map->handle);
336 kfree(map);
339 list->map = map;
346 user_token = (map->type == _DRM_SHM) ? (unsigned long)map->handle :
347 map->offset;
349 (map->type == _DRM_SHM));
351 if (map->type == _DRM_REGISTERS)
352 iounmap(map->handle);
353 kfree(map);
362 if (!(map->flags & _DRM_DRIVER))
377 *map_ptr = list->map;
397 struct drm_map *map = data;
401 if (!(capable(CAP_SYS_ADMIN) || map->type == _DRM_AGP || map->type == _DRM_SHM))
404 err = drm_addmap_core(dev, map->offset, map->size, map->type,
405 map->flags, &maplist);
411 map->handle = (void *)(unsigned long)maplist->user_token;
416 * Remove a map private from list and deallocate resources if the mapping
419 * Searches the map on drm_device::maplist, removes it from the list, see if
425 int drm_rmmap_locked(struct drm_device *dev, struct drm_local_map *map)
432 /* Find the list entry for the map and remove it */
434 if (r_list->map == map) {
448 switch (map->type) {
450 iounmap(map->handle);
453 if (drm_core_has_MTRR(dev) && map->mtrr >= 0) {
455 retcode = mtrr_del(map->mtrr, map->offset, map->size);
460 vfree(map->handle);
473 dmah.vaddr = map->handle;
474 dmah.busaddr = map->offset;
475 dmah.size = map->size;
482 kfree(map);
488 int drm_rmmap(struct drm_device *dev, struct drm_local_map *map)
493 ret = drm_rmmap_locked(dev, map);
519 struct drm_local_map *map = NULL;
525 if (r_list->map &&
527 r_list->map->flags & _DRM_REMOVABLE) {
528 map = r_list->map;
536 if (list_empty(&dev->maplist) || !map) {
542 if ((map->type == _DRM_REGISTERS) || (map->type == _DRM_FRAME_BUFFER)) {
547 ret = drm_rmmap_locked(dev, map);
1548 struct drm_local_map *map = dev->agp_buffer_map;
1551 if (!map) {
1556 virtual = do_mmap(file_priv->filp, 0, map->size,