7938f42181
Rename struct dma_buf_map to struct iosys_map and corresponding APIs. Over time dma-buf-map grew up to more functionality than the one used by dma-buf: in fact it's just a shim layer to abstract system memory, that can be accessed via regular load and store, from IO memory that needs to be acessed via arch helpers. The idea is to extend this API so it can fulfill other needs, internal to a single driver. Example: in the i915 driver it's desired to share the implementation for integrated graphics, which uses mostly system memory, with discrete graphics, which may need to access IO memory. The conversion was mostly done with the following semantic patch: @r1@ @@ - struct dma_buf_map + struct iosys_map @r2@ @@ ( - DMA_BUF_MAP_INIT_VADDR + IOSYS_MAP_INIT_VADDR | - dma_buf_map_set_vaddr + iosys_map_set_vaddr | - dma_buf_map_set_vaddr_iomem + iosys_map_set_vaddr_iomem | - dma_buf_map_is_equal + iosys_map_is_equal | - dma_buf_map_is_null + iosys_map_is_null | - dma_buf_map_is_set + iosys_map_is_set | - dma_buf_map_clear + iosys_map_clear | - dma_buf_map_memcpy_to + iosys_map_memcpy_to | - dma_buf_map_incr + iosys_map_incr ) @@ @@ - #include <linux/dma-buf-map.h> + #include <linux/iosys-map.h> Then some files had their includes adjusted and some comments were update to remove mentions to dma-buf-map. Since this is not specific to dma-buf anymore, move the documentation to the "Bus-Independent Device Accesses" section. v2: - Squash patches v3: - Fix wrong removal of dma-buf.h from MAINTAINERS - Move documentation from dma-buf.rst to device-io.rst v4: - Change documentation title and level Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220204170541.829227-1-lucas.demarchi@intel.com
50 lines
1.6 KiB
C
50 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2015 MediaTek Inc.
|
|
*/
|
|
|
|
#ifndef _MTK_DRM_GEM_H_
|
|
#define _MTK_DRM_GEM_H_
|
|
|
|
#include <drm/drm_gem.h>
|
|
|
|
/*
|
|
* mtk drm buffer structure.
|
|
*
|
|
* @base: a gem object.
|
|
* - a new handle to this gem object would be created
|
|
* by drm_gem_handle_create().
|
|
* @cookie: the return value of dma_alloc_attrs(), keep it for dma_free_attrs()
|
|
* @kvaddr: kernel virtual address of gem buffer.
|
|
* @dma_addr: dma address of gem buffer.
|
|
* @dma_attrs: dma attributes of gem buffer.
|
|
*
|
|
* P.S. this object would be transferred to user as kms_bo.handle so
|
|
* user can access the buffer through kms_bo.handle.
|
|
*/
|
|
struct mtk_drm_gem_obj {
|
|
struct drm_gem_object base;
|
|
void *cookie;
|
|
void *kvaddr;
|
|
dma_addr_t dma_addr;
|
|
unsigned long dma_attrs;
|
|
struct sg_table *sg;
|
|
struct page **pages;
|
|
};
|
|
|
|
#define to_mtk_gem_obj(x) container_of(x, struct mtk_drm_gem_obj, base)
|
|
|
|
void mtk_drm_gem_free_object(struct drm_gem_object *gem);
|
|
struct mtk_drm_gem_obj *mtk_drm_gem_create(struct drm_device *dev, size_t size,
|
|
bool alloc_kmap);
|
|
int mtk_drm_gem_dumb_create(struct drm_file *file_priv, struct drm_device *dev,
|
|
struct drm_mode_create_dumb *args);
|
|
struct sg_table *mtk_gem_prime_get_sg_table(struct drm_gem_object *obj);
|
|
struct drm_gem_object *mtk_gem_prime_import_sg_table(struct drm_device *dev,
|
|
struct dma_buf_attachment *attach, struct sg_table *sg);
|
|
int mtk_drm_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map);
|
|
void mtk_drm_gem_prime_vunmap(struct drm_gem_object *obj,
|
|
struct iosys_map *map);
|
|
|
|
#endif
|