Commit 06d66201 authored by Thomas Zimmermann's avatar Thomas Zimmermann

drm/cma-helper: Rework DRM_GEM_CMA_VMAP_DRIVER_OPS macro

Rename the macro to DRM_GEM_CMA_DRIVER_OPS_VMAP to align naming with
SHMEM helpers and drm_gem_cma_prime_import_sg_table_vmap(). An variant of
the macro is provided for drivers that override the default .dumb_create
callback. Adapt drivers to the changes.

v3:
	* rename macro to signal implicit vmap on imported buffers
v2:
	* provide DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE
Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarSam Ravnborg <sam@ravnborg.org>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarEmil Velikov <emil.velikov@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200605073247.4057-3-tzimmermann@suse.de
parent 26eb603b
...@@ -620,7 +620,7 @@ EXPORT_SYMBOL(drm_gem_cma_create_object_default_funcs); ...@@ -620,7 +620,7 @@ EXPORT_SYMBOL(drm_gem_cma_create_object_default_funcs);
* address set. This address is released when the object is freed. * address set. This address is released when the object is freed.
* *
* This function can be used as the &drm_driver.gem_prime_import_sg_table * This function can be used as the &drm_driver.gem_prime_import_sg_table
* callback. The DRM_GEM_CMA_VMAP_DRIVER_OPS() macro provides a shortcut to set * callback. The &DRM_GEM_CMA_DRIVER_OPS_VMAP macro provides a shortcut to set
* the necessary DRM driver operations. * the necessary DRM driver operations.
* *
* Returns: * Returns:
......
...@@ -52,8 +52,7 @@ static struct drm_driver sun4i_drv_driver = { ...@@ -52,8 +52,7 @@ static struct drm_driver sun4i_drv_driver = {
.minor = 0, .minor = 0,
/* GEM Operations */ /* GEM Operations */
DRM_GEM_CMA_VMAP_DRIVER_OPS, DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(drm_sun4i_gem_dumb_create),
.dumb_create = drm_sun4i_gem_dumb_create,
}; };
static int sun4i_drv_bind(struct device *dev) static int sun4i_drv_bind(struct device *dev)
......
...@@ -112,7 +112,7 @@ static struct drm_driver tidss_driver = { ...@@ -112,7 +112,7 @@ static struct drm_driver tidss_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
.fops = &tidss_fops, .fops = &tidss_fops,
.release = tidss_release, .release = tidss_release,
DRM_GEM_CMA_VMAP_DRIVER_OPS, DRM_GEM_CMA_DRIVER_OPS_VMAP,
.name = "tidss", .name = "tidss",
.desc = "TI Keystone DSS", .desc = "TI Keystone DSS",
.date = "20180215", .date = "20180215",
......
...@@ -196,7 +196,7 @@ DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops); ...@@ -196,7 +196,7 @@ DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
static struct drm_driver hx8357d_driver = { static struct drm_driver hx8357d_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
.fops = &hx8357d_fops, .fops = &hx8357d_fops,
DRM_GEM_CMA_VMAP_DRIVER_OPS, DRM_GEM_CMA_DRIVER_OPS_VMAP,
.debugfs_init = mipi_dbi_debugfs_init, .debugfs_init = mipi_dbi_debugfs_init,
.name = "hx8357d", .name = "hx8357d",
.desc = "HX8357D", .desc = "HX8357D",
......
...@@ -346,7 +346,7 @@ DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops); ...@@ -346,7 +346,7 @@ DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
static struct drm_driver ili9225_driver = { static struct drm_driver ili9225_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
.fops = &ili9225_fops, .fops = &ili9225_fops,
DRM_GEM_CMA_VMAP_DRIVER_OPS, DRM_GEM_CMA_DRIVER_OPS_VMAP,
.name = "ili9225", .name = "ili9225",
.desc = "Ilitek ILI9225", .desc = "Ilitek ILI9225",
.date = "20171106", .date = "20171106",
......
...@@ -152,7 +152,7 @@ DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops); ...@@ -152,7 +152,7 @@ DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
static struct drm_driver ili9341_driver = { static struct drm_driver ili9341_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
.fops = &ili9341_fops, .fops = &ili9341_fops,
DRM_GEM_CMA_VMAP_DRIVER_OPS, DRM_GEM_CMA_DRIVER_OPS_VMAP,
.debugfs_init = mipi_dbi_debugfs_init, .debugfs_init = mipi_dbi_debugfs_init,
.name = "ili9341", .name = "ili9341",
.desc = "Ilitek ILI9341", .desc = "Ilitek ILI9341",
......
...@@ -165,7 +165,7 @@ DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops); ...@@ -165,7 +165,7 @@ DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
static struct drm_driver ili9486_driver = { static struct drm_driver ili9486_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
.fops = &ili9486_fops, .fops = &ili9486_fops,
DRM_GEM_CMA_VMAP_DRIVER_OPS, DRM_GEM_CMA_DRIVER_OPS_VMAP,
.debugfs_init = mipi_dbi_debugfs_init, .debugfs_init = mipi_dbi_debugfs_init,
.name = "ili9486", .name = "ili9486",
.desc = "Ilitek ILI9486", .desc = "Ilitek ILI9486",
......
...@@ -156,7 +156,7 @@ DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops); ...@@ -156,7 +156,7 @@ DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
static struct drm_driver mi0283qt_driver = { static struct drm_driver mi0283qt_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
.fops = &mi0283qt_fops, .fops = &mi0283qt_fops,
DRM_GEM_CMA_VMAP_DRIVER_OPS, DRM_GEM_CMA_DRIVER_OPS_VMAP,
.debugfs_init = mipi_dbi_debugfs_init, .debugfs_init = mipi_dbi_debugfs_init,
.name = "mi0283qt", .name = "mi0283qt",
.desc = "Multi-Inno MI0283QT", .desc = "Multi-Inno MI0283QT",
......
...@@ -946,7 +946,7 @@ DEFINE_DRM_GEM_CMA_FOPS(repaper_fops); ...@@ -946,7 +946,7 @@ DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
static struct drm_driver repaper_driver = { static struct drm_driver repaper_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
.fops = &repaper_fops, .fops = &repaper_fops,
DRM_GEM_CMA_VMAP_DRIVER_OPS, DRM_GEM_CMA_DRIVER_OPS_VMAP,
.name = "repaper", .name = "repaper",
.desc = "Pervasive Displays RePaper e-ink panels", .desc = "Pervasive Displays RePaper e-ink panels",
.date = "20170405", .date = "20170405",
......
...@@ -285,7 +285,7 @@ DEFINE_DRM_GEM_CMA_FOPS(st7586_fops); ...@@ -285,7 +285,7 @@ DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
static struct drm_driver st7586_driver = { static struct drm_driver st7586_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
.fops = &st7586_fops, .fops = &st7586_fops,
DRM_GEM_CMA_VMAP_DRIVER_OPS, DRM_GEM_CMA_DRIVER_OPS_VMAP,
.debugfs_init = mipi_dbi_debugfs_init, .debugfs_init = mipi_dbi_debugfs_init,
.name = "st7586", .name = "st7586",
.desc = "Sitronix ST7586", .desc = "Sitronix ST7586",
......
...@@ -157,7 +157,7 @@ DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops); ...@@ -157,7 +157,7 @@ DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
static struct drm_driver st7735r_driver = { static struct drm_driver st7735r_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
.fops = &st7735r_fops, .fops = &st7735r_fops,
DRM_GEM_CMA_VMAP_DRIVER_OPS, DRM_GEM_CMA_DRIVER_OPS_VMAP,
.debugfs_init = mipi_dbi_debugfs_init, .debugfs_init = mipi_dbi_debugfs_init,
.name = "st7735r", .name = "st7735r",
.desc = "Sitronix ST7735R", .desc = "Sitronix ST7735R",
......
...@@ -110,21 +110,43 @@ struct drm_gem_object * ...@@ -110,21 +110,43 @@ struct drm_gem_object *
drm_gem_cma_create_object_default_funcs(struct drm_device *dev, size_t size); drm_gem_cma_create_object_default_funcs(struct drm_device *dev, size_t size);
/** /**
* DRM_GEM_CMA_VMAP_DRIVER_OPS - CMA GEM driver operations ensuring a virtual * DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE - CMA GEM driver operations
* address on the buffer * ensuring a virtual address
* on the buffer
* @dumb_create_func: callback function for .dumb_create
* *
* This macro provides a shortcut for setting the default GEM operations in the * This macro provides a shortcut for setting the default GEM operations in the
* &drm_driver structure for drivers that need the virtual address also on * &drm_driver structure for drivers that need the virtual address also on
* imported buffers. * imported buffers.
*
* This macro is a variant of DRM_GEM_CMA_DRIVER_OPS_VMAP for drivers that
* override the default implementation of &struct rm_driver.dumb_create. Use
* DRM_GEM_CMA_DRIVER_OPS_VMAP if possible.
*/ */
#define DRM_GEM_CMA_VMAP_DRIVER_OPS \ #define DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(dumb_create_func) \
.gem_create_object = drm_gem_cma_create_object_default_funcs, \ .gem_create_object = drm_gem_cma_create_object_default_funcs, \
.dumb_create = drm_gem_cma_dumb_create, \ .dumb_create = (dumb_create_func), \
.prime_handle_to_fd = drm_gem_prime_handle_to_fd, \ .prime_handle_to_fd = drm_gem_prime_handle_to_fd, \
.prime_fd_to_handle = drm_gem_prime_fd_to_handle, \ .prime_fd_to_handle = drm_gem_prime_fd_to_handle, \
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table_vmap, \ .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table_vmap, \
.gem_prime_mmap = drm_gem_prime_mmap .gem_prime_mmap = drm_gem_prime_mmap
/**
* DRM_GEM_CMA_DRIVER_OPS_VMAP - CMA GEM driver operations ensuring a virtual
* address on the buffer
*
* This macro provides a shortcut for setting the default GEM operations in the
* &drm_driver structure for drivers that need the virtual address also on
* imported buffers.
*
* Drivers that come with their own implementation of
* &struct drm_driver.dumb_create should use
* DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE() instead. Use
* DRM_GEM_CMA_DRIVER_OPS_VMAP if possible.
*/
#define DRM_GEM_CMA_DRIVER_OPS_VMAP \
DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(drm_gem_cma_dumb_create)
struct drm_gem_object * struct drm_gem_object *
drm_gem_cma_prime_import_sg_table_vmap(struct drm_device *drm, drm_gem_cma_prime_import_sg_table_vmap(struct drm_device *drm,
struct dma_buf_attachment *attach, struct dma_buf_attachment *attach,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment