Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200605073247.4057-3-tzimmermann@suse.de

+41 -20
+1 -1
drivers/gpu/drm/drm_gem_cma_helper.c
··· 620 620 * address set. This address is released when the object is freed. 621 621 * 622 622 * This function can be used as the &drm_driver.gem_prime_import_sg_table 623 - * callback. The DRM_GEM_CMA_VMAP_DRIVER_OPS() macro provides a shortcut to set 623 + * callback. The &DRM_GEM_CMA_DRIVER_OPS_VMAP macro provides a shortcut to set 624 624 * the necessary DRM driver operations. 625 625 * 626 626 * Returns:
+1 -2
drivers/gpu/drm/sun4i/sun4i_drv.c
··· 52 52 .minor = 0, 53 53 54 54 /* GEM Operations */ 55 - DRM_GEM_CMA_VMAP_DRIVER_OPS, 56 - .dumb_create = drm_sun4i_gem_dumb_create, 55 + DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(drm_sun4i_gem_dumb_create), 57 56 }; 58 57 59 58 static int sun4i_drv_bind(struct device *dev)
+1 -1
drivers/gpu/drm/tidss/tidss_drv.c
··· 112 112 .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, 113 113 .fops = &tidss_fops, 114 114 .release = tidss_release, 115 - DRM_GEM_CMA_VMAP_DRIVER_OPS, 115 + DRM_GEM_CMA_DRIVER_OPS_VMAP, 116 116 .name = "tidss", 117 117 .desc = "TI Keystone DSS", 118 118 .date = "20180215",
+1 -1
drivers/gpu/drm/tiny/hx8357d.c
··· 196 196 static struct drm_driver hx8357d_driver = { 197 197 .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, 198 198 .fops = &hx8357d_fops, 199 - DRM_GEM_CMA_VMAP_DRIVER_OPS, 199 + DRM_GEM_CMA_DRIVER_OPS_VMAP, 200 200 .debugfs_init = mipi_dbi_debugfs_init, 201 201 .name = "hx8357d", 202 202 .desc = "HX8357D",
+1 -1
drivers/gpu/drm/tiny/ili9225.c
··· 346 346 static struct drm_driver ili9225_driver = { 347 347 .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, 348 348 .fops = &ili9225_fops, 349 - DRM_GEM_CMA_VMAP_DRIVER_OPS, 349 + DRM_GEM_CMA_DRIVER_OPS_VMAP, 350 350 .name = "ili9225", 351 351 .desc = "Ilitek ILI9225", 352 352 .date = "20171106",
+1 -1
drivers/gpu/drm/tiny/ili9341.c
··· 152 152 static struct drm_driver ili9341_driver = { 153 153 .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, 154 154 .fops = &ili9341_fops, 155 - DRM_GEM_CMA_VMAP_DRIVER_OPS, 155 + DRM_GEM_CMA_DRIVER_OPS_VMAP, 156 156 .debugfs_init = mipi_dbi_debugfs_init, 157 157 .name = "ili9341", 158 158 .desc = "Ilitek ILI9341",
+1 -1
drivers/gpu/drm/tiny/ili9486.c
··· 165 165 static struct drm_driver ili9486_driver = { 166 166 .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, 167 167 .fops = &ili9486_fops, 168 - DRM_GEM_CMA_VMAP_DRIVER_OPS, 168 + DRM_GEM_CMA_DRIVER_OPS_VMAP, 169 169 .debugfs_init = mipi_dbi_debugfs_init, 170 170 .name = "ili9486", 171 171 .desc = "Ilitek ILI9486",
+1 -1
drivers/gpu/drm/tiny/mi0283qt.c
··· 156 156 static struct drm_driver mi0283qt_driver = { 157 157 .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, 158 158 .fops = &mi0283qt_fops, 159 - DRM_GEM_CMA_VMAP_DRIVER_OPS, 159 + DRM_GEM_CMA_DRIVER_OPS_VMAP, 160 160 .debugfs_init = mipi_dbi_debugfs_init, 161 161 .name = "mi0283qt", 162 162 .desc = "Multi-Inno MI0283QT",
+1 -1
drivers/gpu/drm/tiny/repaper.c
··· 946 946 static struct drm_driver repaper_driver = { 947 947 .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, 948 948 .fops = &repaper_fops, 949 - DRM_GEM_CMA_VMAP_DRIVER_OPS, 949 + DRM_GEM_CMA_DRIVER_OPS_VMAP, 950 950 .name = "repaper", 951 951 .desc = "Pervasive Displays RePaper e-ink panels", 952 952 .date = "20170405",
+1 -1
drivers/gpu/drm/tiny/st7586.c
··· 285 285 static struct drm_driver st7586_driver = { 286 286 .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, 287 287 .fops = &st7586_fops, 288 - DRM_GEM_CMA_VMAP_DRIVER_OPS, 288 + DRM_GEM_CMA_DRIVER_OPS_VMAP, 289 289 .debugfs_init = mipi_dbi_debugfs_init, 290 290 .name = "st7586", 291 291 .desc = "Sitronix ST7586",
+1 -1
drivers/gpu/drm/tiny/st7735r.c
··· 157 157 static struct drm_driver st7735r_driver = { 158 158 .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, 159 159 .fops = &st7735r_fops, 160 - DRM_GEM_CMA_VMAP_DRIVER_OPS, 160 + DRM_GEM_CMA_DRIVER_OPS_VMAP, 161 161 .debugfs_init = mipi_dbi_debugfs_init, 162 162 .name = "st7735r", 163 163 .desc = "Sitronix ST7735R",
+30 -8
include/drm/drm_gem_cma_helper.h
··· 110 110 drm_gem_cma_create_object_default_funcs(struct drm_device *dev, size_t size); 111 111 112 112 /** 113 - * DRM_GEM_CMA_VMAP_DRIVER_OPS - CMA GEM driver operations ensuring a virtual 113 + * DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE - CMA GEM driver operations 114 + * ensuring a virtual address 115 + * on the buffer 116 + * @dumb_create_func: callback function for .dumb_create 117 + * 118 + * This macro provides a shortcut for setting the default GEM operations in the 119 + * &drm_driver structure for drivers that need the virtual address also on 120 + * imported buffers. 121 + * 122 + * This macro is a variant of DRM_GEM_CMA_DRIVER_OPS_VMAP for drivers that 123 + * override the default implementation of &struct rm_driver.dumb_create. Use 124 + * DRM_GEM_CMA_DRIVER_OPS_VMAP if possible. 125 + */ 126 + #define DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(dumb_create_func) \ 127 + .gem_create_object = drm_gem_cma_create_object_default_funcs, \ 128 + .dumb_create = (dumb_create_func), \ 129 + .prime_handle_to_fd = drm_gem_prime_handle_to_fd, \ 130 + .prime_fd_to_handle = drm_gem_prime_fd_to_handle, \ 131 + .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table_vmap, \ 132 + .gem_prime_mmap = drm_gem_prime_mmap 133 + 134 + /** 135 + * DRM_GEM_CMA_DRIVER_OPS_VMAP - CMA GEM driver operations ensuring a virtual 114 136 * address on the buffer 115 137 * 116 138 * This macro provides a shortcut for setting the default GEM operations in the 117 139 * &drm_driver structure for drivers that need the virtual address also on 118 140 * imported buffers. 141 + * 142 + * Drivers that come with their own implementation of 143 + * &struct drm_driver.dumb_create should use 144 + * DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE() instead. Use 145 + * DRM_GEM_CMA_DRIVER_OPS_VMAP if possible. 119 146 */ 120 - #define DRM_GEM_CMA_VMAP_DRIVER_OPS \ 121 - .gem_create_object = drm_gem_cma_create_object_default_funcs, \ 122 - .dumb_create = drm_gem_cma_dumb_create, \ 123 - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, \ 124 - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, \ 125 - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table_vmap, \ 126 - .gem_prime_mmap = drm_gem_prime_mmap 147 + #define DRM_GEM_CMA_DRIVER_OPS_VMAP \ 148 + DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(drm_gem_cma_dumb_create) 127 149 128 150 struct drm_gem_object * 129 151 drm_gem_cma_prime_import_sg_table_vmap(struct drm_device *drm,