Most of the CMA-based drivers use the default implementation for the callbacks in struct drm_driver. With this patch, these interfaces are initialized with a common helper macro and GEM object functions replace several deprecated interfaces.
The first patch updates the existing macro to similar naming as with SHMEM and adds a helper for drivers that override the default implementation for .dumb_create(). The remaining patches convert the drivers. The aspeed driver already uses GEM object functions and only changes to the initializer macro. The kirin driver also changes to the default dumb_create function.
I don't have much of the hardware, so it's only compile-tested on aarch64, arm and x86-64 only. Several patches have Tested-by tags. The aspeed driver has used the implemented scheme for a while.
v2: * add more detailed commit messages (Laurent, Sam) * use default .dumb_create implementation in kirin (Emil) * fix zte build error (Sam, Emil) * introduce DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE (everyone)
Thomas Zimmermann (23): drm/cma-helper: Rework DRM_GEM_CMA_VMAP_DRIVER_OPS macro drm/arc: Use GEM CMA object functions drm/arm: Use GEM CMA object functions drm/aspeed: Set driver CMA functions with DRM_GEM_CMA_DRIVER_OPS drm/atmel-hlcdc: Use GEM CMA object functions drm/fsl-dcu: Use GEM CMA object functions drm/hisilicon/kirin: Set .dumb_create to drm_gem_cma_dumb_create() drm/hisilicon/kirin: Use GEM CMA object functions drm/imx: Use GEM CMA object functions drm/ingenic: Use GEM CMA object functions drm/komeda: Use GEM CMA object functions drm/malidp: Use GEM CMA object functions drm/mcde: Use GEM CMA object functions drm/meson: Use GEM CMA object functions drm/mxsfb: Use GEM CMA object functions drm/rcar-du: Use GEM CMA object functions drm/shmobile: Use GEM CMA object functions drm/stm: Use GEM CMA object functions drm/sti: Use GEM CMA object functions drm/tilcdc: Use GEM CMA object functions drm/tv200: Use GEM CMA object functions drm/zte: Use GEM CMA object functions drm: Remove struct drm_driver.gem_print_info
drivers/gpu/drm/arc/arcpgu_drv.c | 12 +------- .../gpu/drm/arm/display/komeda/komeda_kms.c | 11 +------ drivers/gpu/drm/arm/hdlcd_drv.c | 12 +------- drivers/gpu/drm/arm/malidp_drv.c | 11 +------ drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 7 +---- drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 11 +------ drivers/gpu/drm/drm_gem.c | 2 -- drivers/gpu/drm/drm_gem_cma_helper.c | 2 +- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 11 +------ .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 12 +------- drivers/gpu/drm/imx/imx-drm-core.c | 12 +------- drivers/gpu/drm/ingenic/ingenic-drm.c | 13 +------- drivers/gpu/drm/mcde/mcde_drv.c | 12 +------- drivers/gpu/drm/meson/meson_drv.c | 15 ++-------- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 11 +------ drivers/gpu/drm/rcar-du/rcar_du_drv.c | 11 +------ drivers/gpu/drm/shmobile/shmob_drm_drv.c | 11 +------ drivers/gpu/drm/sti/sti_drv.c | 12 +------- drivers/gpu/drm/stm/drv.c | 11 +------ drivers/gpu/drm/sun4i/sun4i_drv.c | 3 +- drivers/gpu/drm/tidss/tidss_drv.c | 2 +- drivers/gpu/drm/tilcdc/tilcdc_drv.c | 13 +------- drivers/gpu/drm/tiny/hx8357d.c | 2 +- drivers/gpu/drm/tiny/ili9225.c | 2 +- drivers/gpu/drm/tiny/ili9341.c | 2 +- drivers/gpu/drm/tiny/ili9486.c | 2 +- drivers/gpu/drm/tiny/mi0283qt.c | 2 +- drivers/gpu/drm/tiny/repaper.c | 2 +- drivers/gpu/drm/tiny/st7586.c | 2 +- drivers/gpu/drm/tiny/st7735r.c | 2 +- drivers/gpu/drm/tve200/tve200_drv.c | 12 +------- drivers/gpu/drm/zte/zx_drm_drv.c | 11 +------ include/drm/drm_drv.h | 17 ----------- include/drm/drm_gem_cma_helper.h | 30 ++++++++++++++++--- 34 files changed, 58 insertions(+), 245 deletions(-)
-- 2.26.2
Rename the macro to DRM_GEM_CMA_DRIVER_OPS to align with SHMEM helpers. An internal version is provided for drivers that override the default .dumb_create callback. Adapt drivers to the changes.
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 Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/drm_gem_cma_helper.c | 2 +- drivers/gpu/drm/sun4i/sun4i_drv.c | 3 +-- drivers/gpu/drm/tidss/tidss_drv.c | 2 +- drivers/gpu/drm/tiny/hx8357d.c | 2 +- drivers/gpu/drm/tiny/ili9225.c | 2 +- drivers/gpu/drm/tiny/ili9341.c | 2 +- drivers/gpu/drm/tiny/ili9486.c | 2 +- drivers/gpu/drm/tiny/mi0283qt.c | 2 +- drivers/gpu/drm/tiny/repaper.c | 2 +- drivers/gpu/drm/tiny/st7586.c | 2 +- drivers/gpu/drm/tiny/st7735r.c | 2 +- include/drm/drm_gem_cma_helper.h | 30 ++++++++++++++++++++++++---- 12 files changed, 37 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c index b3db3ca7bd7a7..322a695608607 100644 --- a/drivers/gpu/drm/drm_gem_cma_helper.c +++ b/drivers/gpu/drm/drm_gem_cma_helper.c @@ -620,7 +620,7 @@ EXPORT_SYMBOL(drm_cma_gem_create_object_default_funcs); * 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 - * callback. The DRM_GEM_CMA_VMAP_DRIVER_OPS() macro provides a shortcut to set + * callback. The &DRM_GEM_CMA_DRIVER_OPS macro provides a shortcut to set * the necessary DRM driver operations. * * Returns: diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c index 328272ff77d84..94a90961284ce 100644 --- a/drivers/gpu/drm/sun4i/sun4i_drv.c +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c @@ -52,8 +52,7 @@ static struct drm_driver sun4i_drv_driver = { .minor = 0,
/* GEM Operations */ - DRM_GEM_CMA_VMAP_DRIVER_OPS, - .dumb_create = drm_sun4i_gem_dumb_create, + DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(drm_sun4i_gem_dumb_create), };
static int sun4i_drv_bind(struct device *dev) diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c index 99edc66ebdef2..1753cdc74ebda 100644 --- a/drivers/gpu/drm/tidss/tidss_drv.c +++ b/drivers/gpu/drm/tidss/tidss_drv.c @@ -112,7 +112,7 @@ static struct drm_driver tidss_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .fops = &tidss_fops, .release = tidss_release, - DRM_GEM_CMA_VMAP_DRIVER_OPS, + DRM_GEM_CMA_DRIVER_OPS, .name = "tidss", .desc = "TI Keystone DSS", .date = "20180215", diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c index b4bc358a3269a..592da71d7ca70 100644 --- a/drivers/gpu/drm/tiny/hx8357d.c +++ b/drivers/gpu/drm/tiny/hx8357d.c @@ -196,7 +196,7 @@ DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops); static struct drm_driver hx8357d_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .fops = &hx8357d_fops, - DRM_GEM_CMA_VMAP_DRIVER_OPS, + DRM_GEM_CMA_DRIVER_OPS, .debugfs_init = mipi_dbi_debugfs_init, .name = "hx8357d", .desc = "HX8357D", diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c index d1a5ab6747d5c..368ff6c8a1efb 100644 --- a/drivers/gpu/drm/tiny/ili9225.c +++ b/drivers/gpu/drm/tiny/ili9225.c @@ -346,7 +346,7 @@ DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops); static struct drm_driver ili9225_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .fops = &ili9225_fops, - DRM_GEM_CMA_VMAP_DRIVER_OPS, + DRM_GEM_CMA_DRIVER_OPS, .name = "ili9225", .desc = "Ilitek ILI9225", .date = "20171106", diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c index bb819f45a5d3b..e1b9043ef7a0a 100644 --- a/drivers/gpu/drm/tiny/ili9341.c +++ b/drivers/gpu/drm/tiny/ili9341.c @@ -152,7 +152,7 @@ DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops); static struct drm_driver ili9341_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .fops = &ili9341_fops, - DRM_GEM_CMA_VMAP_DRIVER_OPS, + DRM_GEM_CMA_DRIVER_OPS, .debugfs_init = mipi_dbi_debugfs_init, .name = "ili9341", .desc = "Ilitek ILI9341", diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c index 2702ea557d297..90a17f40fdf0c 100644 --- a/drivers/gpu/drm/tiny/ili9486.c +++ b/drivers/gpu/drm/tiny/ili9486.c @@ -165,7 +165,7 @@ DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops); static struct drm_driver ili9486_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .fops = &ili9486_fops, - DRM_GEM_CMA_VMAP_DRIVER_OPS, + DRM_GEM_CMA_DRIVER_OPS, .debugfs_init = mipi_dbi_debugfs_init, .name = "ili9486", .desc = "Ilitek ILI9486", diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c index 08ac549ab0f7f..6624c2098fba2 100644 --- a/drivers/gpu/drm/tiny/mi0283qt.c +++ b/drivers/gpu/drm/tiny/mi0283qt.c @@ -156,7 +156,7 @@ DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops); static struct drm_driver mi0283qt_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .fops = &mi0283qt_fops, - DRM_GEM_CMA_VMAP_DRIVER_OPS, + DRM_GEM_CMA_DRIVER_OPS, .debugfs_init = mipi_dbi_debugfs_init, .name = "mi0283qt", .desc = "Multi-Inno MI0283QT", diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c index 1c0e7169545b4..877dcece25828 100644 --- a/drivers/gpu/drm/tiny/repaper.c +++ b/drivers/gpu/drm/tiny/repaper.c @@ -946,7 +946,7 @@ DEFINE_DRM_GEM_CMA_FOPS(repaper_fops); static struct drm_driver repaper_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .fops = &repaper_fops, - DRM_GEM_CMA_VMAP_DRIVER_OPS, + DRM_GEM_CMA_DRIVER_OPS, .name = "repaper", .desc = "Pervasive Displays RePaper e-ink panels", .date = "20170405", diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c index 2a1fae422f7a2..ec84bdc51f60d 100644 --- a/drivers/gpu/drm/tiny/st7586.c +++ b/drivers/gpu/drm/tiny/st7586.c @@ -285,7 +285,7 @@ DEFINE_DRM_GEM_CMA_FOPS(st7586_fops); static struct drm_driver st7586_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .fops = &st7586_fops, - DRM_GEM_CMA_VMAP_DRIVER_OPS, + DRM_GEM_CMA_DRIVER_OPS, .debugfs_init = mipi_dbi_debugfs_init, .name = "st7586", .desc = "Sitronix ST7586", diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c index 0af1b15efdf8a..cfd4933f3b30c 100644 --- a/drivers/gpu/drm/tiny/st7735r.c +++ b/drivers/gpu/drm/tiny/st7735r.c @@ -157,7 +157,7 @@ DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops); static struct drm_driver st7735r_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .fops = &st7735r_fops, - DRM_GEM_CMA_VMAP_DRIVER_OPS, + DRM_GEM_CMA_DRIVER_OPS, .debugfs_init = mipi_dbi_debugfs_init, .name = "st7735r", .desc = "Sitronix ST7735R", diff --git a/include/drm/drm_gem_cma_helper.h b/include/drm/drm_gem_cma_helper.h index 947ac95eb24a9..75c0eebc663ca 100644 --- a/include/drm/drm_gem_cma_helper.h +++ b/include/drm/drm_gem_cma_helper.h @@ -110,21 +110,43 @@ struct drm_gem_object * drm_cma_gem_create_object_default_funcs(struct drm_device *dev, size_t size);
/** - * DRM_GEM_CMA_VMAP_DRIVER_OPS - CMA GEM driver operations ensuring a virtual - * address on the buffer + * DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE - CMA GEM driver operations + * 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 * &drm_driver structure for drivers that need the virtual address also on * imported buffers. + * + * This macro is a variant of DRM_GEM_CMA_DRIVER_OPS for drivers that + * override the default implementation of &struct rm_driver.dumb_create. Use + * DRM_GEM_CMA_DRIVER_OPS if possible. */ -#define DRM_GEM_CMA_VMAP_DRIVER_OPS \ +#define DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(dumb_create_func) \ .gem_create_object = drm_cma_gem_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_fd_to_handle = drm_gem_prime_fd_to_handle, \ .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table_vmap, \ .gem_prime_mmap = drm_gem_prime_mmap
+/** + * DRM_GEM_CMA_DRIVER_OPS - 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_WITH_DUMB_CREATE() instead. Use + * DRM_GEM_CMA_DRIVER_OPS if possible. + */ +#define DRM_GEM_CMA_DRIVER_OPS \ + DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(drm_gem_cma_dumb_create) + struct drm_gem_object * drm_gem_cma_prime_import_sg_table_vmap(struct drm_device *drm, struct dma_buf_attachment *attach,
The arc driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/arc/arcpgu_drv.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/arc/arcpgu_drv.c b/drivers/gpu/drm/arc/arcpgu_drv.c index c05d001163e0e..f164818ec477a 100644 --- a/drivers/gpu/drm/arc/arcpgu_drv.c +++ b/drivers/gpu/drm/arc/arcpgu_drv.c @@ -154,17 +154,7 @@ static struct drm_driver arcpgu_drm_driver = { .minor = 0, .patchlevel = 0, .fops = &arcpgu_drm_ops, - .dumb_create = drm_gem_cma_dumb_create, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_print_info = drm_gem_cma_print_info, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, + DRM_GEM_CMA_DRIVER_OPS, #ifdef CONFIG_DEBUG_FS .debugfs_init = arcpgu_debugfs_init, #endif
The arm driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Liviu Dudau liviu.dudau@arm.com Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/arm/hdlcd_drv.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c index 194419f47c5e5..c83b81a3a582a 100644 --- a/drivers/gpu/drm/arm/hdlcd_drv.c +++ b/drivers/gpu/drm/arm/hdlcd_drv.c @@ -240,17 +240,7 @@ static struct drm_driver hdlcd_driver = { .irq_preinstall = hdlcd_irq_preinstall, .irq_postinstall = hdlcd_irq_postinstall, .irq_uninstall = hdlcd_irq_uninstall, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_print_info = drm_gem_cma_print_info, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .dumb_create = drm_gem_cma_dumb_create, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, + DRM_GEM_CMA_DRIVER_OPS, #ifdef CONFIG_DEBUG_FS .debugfs_init = hdlcd_debugfs_init, #endif
DRM_GEM_CMA_DRIVER_OPS sets the functions in struct drm_driver to their defaults. No functional changes are made.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c index 6b27242b9ee3c..1167ff78e24a3 100644 --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c @@ -188,12 +188,7 @@ DEFINE_DRM_GEM_CMA_FOPS(fops);
static struct drm_driver aspeed_gfx_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, - .gem_create_object = drm_cma_gem_create_object_default_funcs, - .dumb_create = drm_gem_cma_dumb_create, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_mmap = drm_gem_prime_mmap, + DRM_GEM_CMA_DRIVER_OPS, .fops = &fops, .name = "aspeed-gfx-drm", .desc = "ASPEED GFX DRM",
The atmel-hlcdc driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Reviewed-by: Sam Ravnborg sam@ravnborg.org Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c index 112aa5066ceed..871293d1aeeba 100644 --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c @@ -821,16 +821,7 @@ static struct drm_driver atmel_hlcdc_dc_driver = { .irq_preinstall = atmel_hlcdc_dc_irq_uninstall, .irq_postinstall = atmel_hlcdc_dc_irq_postinstall, .irq_uninstall = atmel_hlcdc_dc_irq_uninstall, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, - .dumb_create = drm_gem_cma_dumb_create, + DRM_GEM_CMA_DRIVER_OPS, .fops = &fops, .name = "atmel-hlcdc", .desc = "Atmel HLCD Controller DRM",
The fsl-dcu driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c index f15d2e7967a3e..abbc1ddbf27f0 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c @@ -141,16 +141,7 @@ static struct drm_driver fsl_dcu_drm_driver = { .irq_handler = fsl_dcu_drm_irq, .irq_preinstall = fsl_dcu_irq_uninstall, .irq_uninstall = fsl_dcu_irq_uninstall, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, - .dumb_create = drm_gem_cma_dumb_create, + DRM_GEM_CMA_DRIVER_OPS, .fops = &fsl_dcu_drm_fops, .name = "fsl-dcu-drm", .desc = "Freescale DCU DRM",
The kirin drivers uses drm_gem_cma_dumb_create_internal() for its .dumb_create implementation. The function is meant for internal use only by drivers that require additional buffer setup.
Kirin does not do an additional setup, so convert it over to drm_gem_cma_dumb_create().
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com Cc: Xu YiPing xuyiping@hisilicon.com Cc: Rongrong Zou zourongrong@gmail.com Cc: Xinliang Liu z.liuxinliang@hisilicon.com --- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index c339e632522a9..18e57e571e054 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -923,7 +923,7 @@ static struct drm_driver ade_driver = { .fops = &ade_fops, .gem_free_object_unlocked = drm_gem_cma_free_object, .gem_vm_ops = &drm_gem_cma_vm_ops, - .dumb_create = drm_gem_cma_dumb_create_internal, + .dumb_create = drm_gem_cma_dumb_create, .prime_handle_to_fd = drm_gem_prime_handle_to_fd, .prime_fd_to_handle = drm_gem_prime_fd_to_handle, .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
On Wed, Jun 3, 2020 at 1:31 AM Thomas Zimmermann tzimmermann@suse.de wrote:
The kirin drivers uses drm_gem_cma_dumb_create_internal() for its .dumb_create implementation. The function is meant for internal use only by drivers that require additional buffer setup.
Kirin does not do an additional setup, so convert it over to drm_gem_cma_dumb_create().
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com Cc: Xu YiPing xuyiping@hisilicon.com Cc: Rongrong Zou zourongrong@gmail.com Cc: Xinliang Liu z.liuxinliang@hisilicon.com
Thanks for sending this out! Works fine on my HiKey board.
Tested-by: John Stultz john.stultz@linaro.org
thanks -john
The kirin driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
v2: * use DRM_GEM_CMA_DRIVER_OPS
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com Cc: Xu YiPing xuyiping@hisilicon.com Cc: Rongrong Zou zourongrong@gmail.com Cc: Xinliang Liu z.liuxinliang@hisilicon.com --- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c index 18e57e571e054..e1108c1735ad0 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c @@ -921,17 +921,7 @@ DEFINE_DRM_GEM_CMA_FOPS(ade_fops); static struct drm_driver ade_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .fops = &ade_fops, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .dumb_create = drm_gem_cma_dumb_create, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, - + DRM_GEM_CMA_DRIVER_OPS, .name = "kirin", .desc = "Hisilicon Kirin620 SoC DRM Driver", .date = "20150718",
On Wed, Jun 3, 2020 at 1:31 AM Thomas Zimmermann tzimmermann@suse.de wrote:
The kirin driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
v2: * use DRM_GEM_CMA_DRIVER_OPS
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com Cc: Xu YiPing xuyiping@hisilicon.com Cc: Rongrong Zou zourongrong@gmail.com Cc: Xinliang Liu z.liuxinliang@hisilicon.com
Thanks for sending this out! Works fine on my HiKey board.
Tested-by: John Stultz john.stultz@linaro.org
thanks -john
The imx driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/imx/imx-drm-core.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c index 2e38f1a5cf8da..36037b2e65647 100644 --- a/drivers/gpu/drm/imx/imx-drm-core.c +++ b/drivers/gpu/drm/imx/imx-drm-core.c @@ -146,17 +146,7 @@ static const struct drm_ioctl_desc imx_drm_ioctls[] = {
static struct drm_driver imx_drm_driver = { .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .dumb_create = drm_gem_cma_dumb_create, - - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, + DRM_GEM_CMA_DRIVER_OPS, .ioctls = imx_drm_ioctls, .num_ioctls = ARRAY_SIZE(imx_drm_ioctls), .fops = &imx_drm_driver_fops,
The ingenic driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Tested-by: Paul Cercueil paul@crapouillou.net Reviewed-by: Paul Cercueil paul@crapouillou.net Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/ingenic/ingenic-drm.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm.c b/drivers/gpu/drm/ingenic/ingenic-drm.c index 55b49a31729bf..16f0740df507c 100644 --- a/drivers/gpu/drm/ingenic/ingenic-drm.c +++ b/drivers/gpu/drm/ingenic/ingenic-drm.c @@ -519,18 +519,7 @@ static struct drm_driver ingenic_drm_driver_data = { .patchlevel = 0,
.fops = &ingenic_drm_fops, - - .dumb_create = drm_gem_cma_dumb_create, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, + DRM_GEM_CMA_DRIVER_OPS,
.irq_handler = ingenic_drm_irq_handler, };
The komeda driver uses the default implementation for CMA functions; except for the .dumb_create callback. The DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() macro now sets these defaults and .dumb_create in struct drm_driver. All remaining operations are provided by CMA GEM object functions.
By using DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
v2: * update for DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Liviu Dudau liviu.dudau@arm.com Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/arm/display/komeda/komeda_kms.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c index 6b85d5f4caa85..1f6682032ca49 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c @@ -61,16 +61,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data) static struct drm_driver komeda_kms_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .lastclose = drm_fb_helper_lastclose, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .dumb_create = komeda_gem_cma_dumb_create, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, + DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create), .fops = &komeda_cma_fops, .name = "komeda", .desc = "Arm Komeda Display Processor driver",
The malidp driver uses the default implementation for CMA functions; except for the .dumb_create callback. The DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() macro now sets these defaults and .dumb_create in struct drm_driver.
By using DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
v2: * update for DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Liviu Dudau liviu.dudau@arm.com Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/arm/malidp_drv.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c index c2507b7d8512b..cbd35fd305803 100644 --- a/drivers/gpu/drm/arm/malidp_drv.c +++ b/drivers/gpu/drm/arm/malidp_drv.c @@ -563,16 +563,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
static struct drm_driver malidp_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .dumb_create = malidp_dumb_create, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, + DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create), #ifdef CONFIG_DEBUG_FS .debugfs_init = malidp_debugfs_init, #endif
The mcde driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver. All remaining operations are provided by CMA GEM object functions.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Reviewed-by: Linus Walleij linus.walleij@linaro.org Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/mcde/mcde_drv.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c index 84f3e2dbd77bd..d300be5ee463d 100644 --- a/drivers/gpu/drm/mcde/mcde_drv.c +++ b/drivers/gpu/drm/mcde/mcde_drv.c @@ -228,17 +228,7 @@ static struct drm_driver mcde_drm_driver = { .major = 1, .minor = 0, .patchlevel = 0, - .dumb_create = drm_gem_cma_dumb_create, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, + DRM_GEM_CMA_DRIVER_OPS, };
static int mcde_drm_bind(struct device *dev)
The meson driver uses the default implementation for CMA functions; except for the .dumb_create callback. The DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() macro now sets these defaults and .dumb_create in struct drm_driver.
By using DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
v2: * update for DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/meson/meson_drv.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c index 4c5aafcec7991..8b9c8dd788c41 100644 --- a/drivers/gpu/drm/meson/meson_drv.c +++ b/drivers/gpu/drm/meson/meson_drv.c @@ -96,19 +96,8 @@ static struct drm_driver meson_driver = { /* IRQ */ .irq_handler = meson_irq,
- /* PRIME Ops */ - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, - - /* GEM Ops */ - .dumb_create = meson_dumb_create, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, + /* CMA Ops */ + DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(meson_dumb_create),
/* Misc */ .fops = &fops,
On 03/06/2020 10:31, Thomas Zimmermann wrote:
The meson driver uses the default implementation for CMA functions; except for the .dumb_create callback. The DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() macro now sets these defaults and .dumb_create in struct drm_driver.
By using DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
v2:
- update for DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com
drivers/gpu/drm/meson/meson_drv.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c index 4c5aafcec7991..8b9c8dd788c41 100644 --- a/drivers/gpu/drm/meson/meson_drv.c +++ b/drivers/gpu/drm/meson/meson_drv.c @@ -96,19 +96,8 @@ static struct drm_driver meson_driver = { /* IRQ */ .irq_handler = meson_irq,
- /* PRIME Ops */
- .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
- .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
- .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
- .gem_prime_vmap = drm_gem_cma_prime_vmap,
- .gem_prime_vunmap = drm_gem_cma_prime_vunmap,
- .gem_prime_mmap = drm_gem_cma_prime_mmap,
- /* GEM Ops */
- .dumb_create = meson_dumb_create,
- .gem_free_object_unlocked = drm_gem_cma_free_object,
- .gem_vm_ops = &drm_gem_cma_vm_ops,
/* CMA Ops */
DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(meson_dumb_create),
/* Misc */ .fops = &fops,
Acked-by: Neil Armstrong narmstrong@baylibre.com
The mxsfb driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c index 497cf443a9afa..47c7dce03da4a 100644 --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c @@ -356,16 +356,7 @@ static struct drm_driver mxsfb_driver = { .irq_handler = mxsfb_irq_handler, .irq_preinstall = mxsfb_irq_preinstall, .irq_uninstall = mxsfb_irq_preinstall, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .dumb_create = drm_gem_cma_dumb_create, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, + DRM_GEM_CMA_DRIVER_OPS, .fops = &fops, .name = "mxsfb-drm", .desc = "MXSFB Controller DRM",
The rcar-du driver uses the default implementation for CMA functions; except for the .dumb_create callback. The DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() macro now sets these defaults and .dumb_create in struct drm_driver.
By using DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
v2: * update for DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Tested-by: Kieran Bingham kieran.bingham+renesas@ideasonboard.com Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/rcar-du/rcar_du_drv.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c index 3e67cf70f0402..f53b0ec710850 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c @@ -476,16 +476,7 @@ DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
static struct drm_driver rcar_du_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, - .dumb_create = rcar_du_dumb_create, + DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create), .fops = &rcar_du_fops, .name = "rcar-du", .desc = "Renesas R-Car Display Unit",
Hi Thomas,
Thank you for the patch.
On Wed, Jun 03, 2020 at 10:31:25AM +0200, Thomas Zimmermann wrote:
The rcar-du driver uses the default implementation for CMA functions; except for the .dumb_create callback. The DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() macro now sets these defaults and .dumb_create in struct drm_driver.
By using DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
How is the aspeed driver related to this patch ?
v2:
- update for DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE
As explained in the review of v1, this combines multiple changes in a single patch. Some of those changes are not straightforward to review. It would be easier if they were split in separate patches.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Tested-by: Kieran Bingham kieran.bingham+renesas@ideasonboard.com Acked-by: Emil Velikov emil.velikov@collabora.com
drivers/gpu/drm/rcar-du/rcar_du_drv.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c index 3e67cf70f0402..f53b0ec710850 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c @@ -476,16 +476,7 @@ DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
static struct drm_driver rcar_du_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
- .gem_free_object_unlocked = drm_gem_cma_free_object,
- .gem_vm_ops = &drm_gem_cma_vm_ops,
- .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
- .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
- .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
- .gem_prime_vmap = drm_gem_cma_prime_vmap,
- .gem_prime_vunmap = drm_gem_cma_prime_vunmap,
- .gem_prime_mmap = drm_gem_cma_prime_mmap,
- .dumb_create = rcar_du_dumb_create,
- DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(rcar_du_dumb_create), .fops = &rcar_du_fops, .name = "rcar-du", .desc = "Renesas R-Car Display Unit",
The shmobile driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/shmobile/shmob_drm_drv.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c index ae9d6b8d3ca87..26a15c214bd3f 100644 --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c @@ -131,16 +131,7 @@ DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops); static struct drm_driver shmob_drm_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET, .irq_handler = shmob_drm_irq, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, - .dumb_create = drm_gem_cma_dumb_create, + DRM_GEM_CMA_DRIVER_OPS, .fops = &shmob_drm_fops, .name = "shmob-drm", .desc = "Renesas SH Mobile DRM",
The stm driver uses the default implementation for CMA functions; except for the .dumb_create callback. The DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() macro now sets these defaults and .dumb_create in struct drm_driver.
By using DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
v2: * update for DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Reviewed-by: Philippe Cornu philippe.cornu@st.com Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/stm/drv.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c index 0f85dd86cafa7..411103f013e25 100644 --- a/drivers/gpu/drm/stm/drv.c +++ b/drivers/gpu/drm/stm/drv.c @@ -62,16 +62,7 @@ static struct drm_driver drv_driver = { .minor = 0, .patchlevel = 0, .fops = &drv_driver_fops, - .dumb_create = stm_gem_cma_dumb_create, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, + DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(stm_gem_cma_dumb_create), };
static int drv_load(struct drm_device *ddev)
The sti driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
By using DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/sti/sti_drv.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c index 3f9db3e3f3978..381804126e70d 100644 --- a/drivers/gpu/drm/sti/sti_drv.c +++ b/drivers/gpu/drm/sti/sti_drv.c @@ -132,19 +132,9 @@ DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
static struct drm_driver sti_driver = { .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .dumb_create = drm_gem_cma_dumb_create, + DRM_GEM_CMA_DRIVER_OPS, .fops = &sti_driver_fops,
- .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, - .debugfs_init = sti_drm_dbg_init,
.name = DRIVER_NAME,
The tilcdc driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/tilcdc/tilcdc_drv.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c index a5e9ee4c7fbf4..0d74a64432633 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c @@ -496,18 +496,7 @@ DEFINE_DRM_GEM_CMA_FOPS(fops); static struct drm_driver tilcdc_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, .irq_handler = tilcdc_irq, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_print_info = drm_gem_cma_print_info, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .dumb_create = drm_gem_cma_dumb_create, - - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, + DRM_GEM_CMA_DRIVER_OPS, #ifdef CONFIG_DEBUG_FS .debugfs_init = tilcdc_debugfs_init, #endif
The tve200 driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Reviewed-by: Linus Walleij linus.walleij@linaro.org Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/tve200/tve200_drv.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c index 00ba9e5ce1307..c3aa39bd38ecd 100644 --- a/drivers/gpu/drm/tve200/tve200_drv.c +++ b/drivers/gpu/drm/tve200/tve200_drv.c @@ -147,17 +147,7 @@ static struct drm_driver tve200_drm_driver = { .major = 1, .minor = 0, .patchlevel = 0, - .dumb_create = drm_gem_cma_dumb_create, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, + DRM_GEM_CMA_DRIVER_OPS, };
static int tve200_probe(struct platform_device *pdev)
The zte driver uses the default implementation for CMA functions. The DRM_GEM_CMA_DRIVER_OPS macro now sets these defaults in struct drm_driver.
Using DRM_GEM_CMA_DRIVER_OPS introduces several changes: the driver now sets .gem_create_object to drm_cma_gem_create_object_default_funcs(), which sets CMA GEM object functions. GEM object functions implement the rsp operations where possible. Corresponding interfaces in struct drm_driver are cleared. Prime import now uses drm_gem_cma_prime_import_sg_table_vmap(), which maps the imported buffer upon import. Mmap operations are performed by drm_gem_prime_mmap(), which goes through GEM file operations. These changes have been part of the aspeed driver for some time.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Acked-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/zte/zx_drm_drv.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c index 1141c1ed1ed04..31014a451f8bd 100644 --- a/drivers/gpu/drm/zte/zx_drm_drv.c +++ b/drivers/gpu/drm/zte/zx_drm_drv.c @@ -36,16 +36,7 @@ DEFINE_DRM_GEM_CMA_FOPS(zx_drm_fops);
static struct drm_driver zx_drm_driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, - .gem_free_object_unlocked = drm_gem_cma_free_object, - .gem_vm_ops = &drm_gem_cma_vm_ops, - .dumb_create = drm_gem_cma_dumb_create, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table, - .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table, - .gem_prime_vmap = drm_gem_cma_prime_vmap, - .gem_prime_vunmap = drm_gem_cma_prime_vunmap, - .gem_prime_mmap = drm_gem_cma_prime_mmap, + DRM_GEM_CMA_DRIVER_OPS, .fops = &zx_drm_fops, .name = "zx-vou", .desc = "ZTE VOU Controller DRM",
The .gem_print_info callback in struct drm_driver is obsolete and has no users left. Remove it.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de Suggested-by: Emil Velikov emil.velikov@collabora.com --- drivers/gpu/drm/drm_gem.c | 2 -- include/drm/drm_drv.h | 17 ----------------- 2 files changed, 19 deletions(-)
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index efc0367841e2b..08b3fa27ec406 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -1191,8 +1191,6 @@ void drm_gem_print_info(struct drm_printer *p, unsigned int indent,
if (obj->funcs && obj->funcs->print_info) obj->funcs->print_info(p, indent, obj); - else if (obj->dev->driver->gem_print_info) - obj->dev->driver->gem_print_info(p, indent, obj); }
int drm_gem_pin(struct drm_gem_object *obj) diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h index bb924cddc09c1..8f110a28b6a23 100644 --- a/include/drm/drm_drv.h +++ b/include/drm/drm_drv.h @@ -353,23 +353,6 @@ struct drm_driver { */ void (*gem_close_object) (struct drm_gem_object *, struct drm_file *);
- /** - * @gem_print_info: - * - * This callback is deprecated in favour of - * &drm_gem_object_funcs.print_info. - * - * If driver subclasses struct &drm_gem_object, it can implement this - * optional hook for printing additional driver specific info. - * - * drm_printf_indent() should be used in the callback passing it the - * indent argument. - * - * This callback is called from drm_gem_print_info(). - */ - void (*gem_print_info)(struct drm_printer *p, unsigned int indent, - const struct drm_gem_object *obj); - /** * @gem_create_object: constructor for gem objects *
dri-devel@lists.freedesktop.org