diff options
Diffstat (limited to 'drivers/gpu/drm/drm_bufs.c')
-rw-r--r-- | drivers/gpu/drm/drm_bufs.c | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c index 8ce9d73fab4f..dcabf5698333 100644 --- a/drivers/gpu/drm/drm_bufs.c +++ b/drivers/gpu/drm/drm_bufs.c @@ -134,7 +134,7 @@ static int drm_map_handle(struct drm_device *dev, struct drm_hash_item *hash, shift, add); } -/** +/* * Core function to create a range of memory available for mapping by a * non-root process. * @@ -149,7 +149,6 @@ static int drm_addmap_core(struct drm_device *dev, resource_size_t offset, { struct drm_local_map *map; struct drm_map_list *list; - drm_dma_handle_t *dmah; unsigned long user_token; int ret; @@ -324,14 +323,14 @@ static int drm_addmap_core(struct drm_device *dev, resource_size_t offset, * As we're limiting the address to 2^32-1 (or less), * casting it down to 32 bits is no problem, but we * need to point to a 64bit variable first. */ - dmah = drm_pci_alloc(dev, map->size, map->size); - if (!dmah) { + map->handle = dma_alloc_coherent(&dev->pdev->dev, + map->size, + &map->offset, + GFP_KERNEL); + if (!map->handle) { kfree(map); return -ENOMEM; } - map->handle = dmah->vaddr; - map->offset = (unsigned long)dmah->busaddr; - kfree(dmah); break; default: kfree(map); @@ -399,7 +398,7 @@ struct drm_local_map *drm_legacy_findmap(struct drm_device *dev, } EXPORT_SYMBOL(drm_legacy_findmap); -/** +/* * Ioctl to specify a range of memory that is available for mapping by a * non-root process. * @@ -500,7 +499,7 @@ int drm_legacy_getmap_ioctl(struct drm_device *dev, void *data, return 0; } -/** +/* * Remove a map private from list and deallocate resources if the mapping * isn't in use. * @@ -513,7 +512,6 @@ int drm_legacy_getmap_ioctl(struct drm_device *dev, void *data, int drm_legacy_rmmap_locked(struct drm_device *dev, struct drm_local_map *map) { struct drm_map_list *r_list = NULL, *list_t; - drm_dma_handle_t dmah; int found = 0; struct drm_master *master; @@ -554,10 +552,10 @@ int drm_legacy_rmmap_locked(struct drm_device *dev, struct drm_local_map *map) case _DRM_SCATTER_GATHER: break; case _DRM_CONSISTENT: - dmah.vaddr = map->handle; - dmah.busaddr = map->offset; - dmah.size = map->size; - __drm_legacy_pci_free(dev, &dmah); + dma_free_coherent(&dev->pdev->dev, + map->size, + map->handle, + map->offset); break; } kfree(map); @@ -661,7 +659,7 @@ int drm_legacy_rmmap_ioctl(struct drm_device *dev, void *data, return ret; } -/** +/* * Cleanup after an error on one of the addbufs() functions. * * \param dev DRM device. @@ -696,7 +694,7 @@ static void drm_cleanup_buf_error(struct drm_device *dev, } #if IS_ENABLED(CONFIG_AGP) -/** +/* * Add AGP buffers for DMA transfers. * * \param dev struct drm_device to which the buffers are to be added. @@ -1232,7 +1230,7 @@ static int drm_legacy_addbufs_sg(struct drm_device *dev, return 0; } -/** +/* * Add buffers for DMA transfers (ioctl). * * \param inode device inode. @@ -1273,7 +1271,7 @@ int drm_legacy_addbufs(struct drm_device *dev, void *data, return ret; } -/** +/* * Get information about the buffer mappings. * * This was originally mean for debugging purposes, or by a sophisticated @@ -1364,7 +1362,7 @@ int drm_legacy_infobufs(struct drm_device *dev, void *data, return __drm_legacy_infobufs(dev, data, &request->count, copy_one_buf); } -/** +/* * Specifies a low and high water mark for buffer allocation * * \param inode device inode. @@ -1413,7 +1411,7 @@ int drm_legacy_markbufs(struct drm_device *dev, void *data, return 0; } -/** +/* * Unreserve the buffers in list, previously reserved using drmDMA. * * \param inode device inode. @@ -1465,7 +1463,7 @@ int drm_legacy_freebufs(struct drm_device *dev, void *data, return 0; } -/** +/* * Maps all of the DMA buffers into client-virtual space (ioctl). * * \param inode device inode. |