]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/gem: rename GEM CMA helpers to GEM DMA helpers
authorDanilo Krummrich <dakr@redhat.com>
Tue, 2 Aug 2022 00:04:03 +0000 (02:04 +0200)
committerSam Ravnborg <sam@ravnborg.org>
Wed, 3 Aug 2022 16:31:49 +0000 (18:31 +0200)
Rename "GEM CMA" helpers to "GEM DMA" helpers - considering the
hierarchy of APIs (mm/cma -> dma -> gem dma) calling them "GEM
DMA" seems to be more applicable.

Besides that, commit 234df3ea69dd ("drm/doc: Task to rename CMA helpers")
requests to rename the CMA helpers and implies that people seem to be
confused about the naming.

In order to do this renaming the following script was used:

```
#!/bin/bash

DIRS="drivers/gpu include/drm Documentation/gpu"

REGEX_SYM_UPPER="[0-9A-Z_\-]"
REGEX_SYM_LOWER="[0-9a-z_\-]"

REGEX_GREP_UPPER="(${REGEX_SYM_UPPER}*)(GEM)_CMA_(${REGEX_SYM_UPPER}*)"
REGEX_GREP_LOWER="(${REGEX_SYM_LOWER}*)(gem)_cma_(${REGEX_SYM_LOWER}*)"

REGEX_SED_UPPER="s/${REGEX_GREP_UPPER}/\1\2_DMA_\3/g"
REGEX_SED_LOWER="s/${REGEX_GREP_LOWER}/\1\2_dma_\3/g"

# Find all upper case 'CMA' symbols and replace them with 'DMA'.
for ff in $(grep -REHl "${REGEX_GREP_UPPER}" $DIRS)
do
       sed -i -E "$REGEX_SED_UPPER" $ff
done

# Find all lower case 'cma' symbols and replace them with 'dma'.
for ff in $(grep -REHl "${REGEX_GREP_LOWER}" $DIRS)
do
       sed -i -E "$REGEX_SED_LOWER" $ff
done

# Replace all occurrences of 'CMA' / 'cma' in comments and
# documentation files with 'DMA' / 'dma'.
for ff in $(grep -RiHl " cma " $DIRS)
do
sed -i -E "s/ cma / dma /g" $ff
sed -i -E "s/ CMA / DMA /g" $ff
done

# Rename all 'cma_obj's to 'dma_obj'.
for ff in $(grep -RiHl "cma_obj" $DIRS)
do
sed -i -E "s/cma_obj/dma_obj/g" $ff
done
```

Only a few more manual modifications were needed, e.g. reverting the
following modifications in some DRM Kconfig files

    -       select CMA if HAVE_DMA_CONTIGUOUS
    +       select DMA if HAVE_DMA_CONTIGUOUS

as well as manually picking the occurrences of 'CMA'/'cma' in comments and
documentation which relate to "GEM CMA", but not "FB CMA".

Also drivers/gpu/drm/Makefile was fixed up manually after renaming
drm_gem_cma_helper.c to drm_gem_dma_helper.c.

This patch is compile-time tested building a x86_64 kernel with
`make allyesconfig && make drivers/gpu/drm`.

Acked-by: Sam Ravnborg <sam@ravnborg.org>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
Reviewed-by: Liviu Dudau <liviu.dudau@arm.com> #drivers/gpu/drm/arm
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20220802000405.949236-4-dakr@redhat.com
145 files changed:
Documentation/gpu/drm-mm.rst
drivers/gpu/drm/Kconfig
drivers/gpu/drm/Makefile
drivers/gpu/drm/arm/Kconfig
drivers/gpu/drm/arm/display/Kconfig
drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
drivers/gpu/drm/arm/display/komeda/komeda_kms.c
drivers/gpu/drm/arm/hdlcd_crtc.c
drivers/gpu/drm/arm/hdlcd_drv.c
drivers/gpu/drm/arm/malidp_drv.c
drivers/gpu/drm/arm/malidp_mw.c
drivers/gpu/drm/arm/malidp_planes.c
drivers/gpu/drm/armada/armada_gem.c
drivers/gpu/drm/aspeed/Kconfig
drivers/gpu/drm/aspeed/aspeed_gfx_crtc.c
drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
drivers/gpu/drm/atmel-hlcdc/Kconfig
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c
drivers/gpu/drm/drm_fb_dma_helper.c
drivers/gpu/drm/drm_file.c
drivers/gpu/drm/drm_gem_cma_helper.c [deleted file]
drivers/gpu/drm/drm_gem_dma_helper.c [new file with mode: 0644]
drivers/gpu/drm/drm_mipi_dbi.c
drivers/gpu/drm/fsl-dcu/Kconfig
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c
drivers/gpu/drm/hisilicon/kirin/Kconfig
drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
drivers/gpu/drm/imx/Kconfig
drivers/gpu/drm/imx/dcss/Kconfig
drivers/gpu/drm/imx/dcss/dcss-kms.c
drivers/gpu/drm/imx/dcss/dcss-plane.c
drivers/gpu/drm/imx/imx-drm-core.c
drivers/gpu/drm/imx/imx-drm.h
drivers/gpu/drm/imx/ipuv3-crtc.c
drivers/gpu/drm/imx/ipuv3-plane.c
drivers/gpu/drm/ingenic/Kconfig
drivers/gpu/drm/ingenic/ingenic-drm-drv.c
drivers/gpu/drm/ingenic/ingenic-ipu.c
drivers/gpu/drm/kmb/Kconfig
drivers/gpu/drm/kmb/kmb_drv.c
drivers/gpu/drm/kmb/kmb_plane.c
drivers/gpu/drm/logicvc/Kconfig
drivers/gpu/drm/logicvc/logicvc_crtc.c
drivers/gpu/drm/logicvc/logicvc_drm.c
drivers/gpu/drm/logicvc/logicvc_interface.c
drivers/gpu/drm/logicvc/logicvc_mode.c
drivers/gpu/drm/mcde/Kconfig
drivers/gpu/drm/mcde/mcde_display.c
drivers/gpu/drm/mcde/mcde_drv.c
drivers/gpu/drm/mediatek/Kconfig
drivers/gpu/drm/mediatek/mtk_drm_drv.c
drivers/gpu/drm/mediatek/mtk_drm_gem.c
drivers/gpu/drm/meson/Kconfig
drivers/gpu/drm/meson/meson_drv.c
drivers/gpu/drm/meson/meson_overlay.c
drivers/gpu/drm/meson/meson_plane.c
drivers/gpu/drm/msm/msm_drv.c
drivers/gpu/drm/mxsfb/Kconfig
drivers/gpu/drm/mxsfb/lcdif_drv.c
drivers/gpu/drm/mxsfb/lcdif_kms.c
drivers/gpu/drm/mxsfb/mxsfb_drv.c
drivers/gpu/drm/mxsfb/mxsfb_kms.c
drivers/gpu/drm/panel/Kconfig
drivers/gpu/drm/panel/panel-ilitek-ili9341.c
drivers/gpu/drm/pl111/Kconfig
drivers/gpu/drm/pl111/pl111_display.c
drivers/gpu/drm/pl111/pl111_drv.c
drivers/gpu/drm/rcar-du/Kconfig
drivers/gpu/drm/rcar-du/rcar_du_crtc.c
drivers/gpu/drm/rcar-du/rcar_du_drv.c
drivers/gpu/drm/rcar-du/rcar_du_kms.c
drivers/gpu/drm/rcar-du/rcar_du_plane.c
drivers/gpu/drm/rcar-du/rcar_du_vsp.c
drivers/gpu/drm/rockchip/Kconfig
drivers/gpu/drm/rockchip/rockchip_drm_drv.c
drivers/gpu/drm/rockchip/rockchip_drm_gem.c
drivers/gpu/drm/shmobile/Kconfig
drivers/gpu/drm/shmobile/shmob_drm_crtc.c
drivers/gpu/drm/shmobile/shmob_drm_drv.c
drivers/gpu/drm/shmobile/shmob_drm_kms.c
drivers/gpu/drm/shmobile/shmob_drm_kms.h
drivers/gpu/drm/shmobile/shmob_drm_plane.c
drivers/gpu/drm/sprd/Kconfig
drivers/gpu/drm/sprd/sprd_dpu.c
drivers/gpu/drm/sprd/sprd_drm.c
drivers/gpu/drm/sti/Kconfig
drivers/gpu/drm/sti/sti_cursor.c
drivers/gpu/drm/sti/sti_drv.c
drivers/gpu/drm/sti/sti_gdp.c
drivers/gpu/drm/sti/sti_hqvdp.c
drivers/gpu/drm/sti/sti_plane.c
drivers/gpu/drm/stm/Kconfig
drivers/gpu/drm/stm/drv.c
drivers/gpu/drm/stm/ltdc.c
drivers/gpu/drm/sun4i/Kconfig
drivers/gpu/drm/sun4i/sun4i_backend.c
drivers/gpu/drm/sun4i/sun4i_drv.c
drivers/gpu/drm/sun4i/sun4i_frontend.c
drivers/gpu/drm/sun4i/sun8i_mixer.c
drivers/gpu/drm/sun4i/sun8i_ui_layer.c
drivers/gpu/drm/sun4i/sun8i_vi_layer.c
drivers/gpu/drm/tidss/Kconfig
drivers/gpu/drm/tidss/tidss_crtc.c
drivers/gpu/drm/tidss/tidss_dispc.c
drivers/gpu/drm/tidss/tidss_drv.c
drivers/gpu/drm/tilcdc/Kconfig
drivers/gpu/drm/tilcdc/tilcdc_crtc.c
drivers/gpu/drm/tilcdc/tilcdc_drv.c
drivers/gpu/drm/tiny/Kconfig
drivers/gpu/drm/tiny/arcpgu.c
drivers/gpu/drm/tiny/hx8357d.c
drivers/gpu/drm/tiny/ili9163.c
drivers/gpu/drm/tiny/ili9225.c
drivers/gpu/drm/tiny/ili9341.c
drivers/gpu/drm/tiny/ili9486.c
drivers/gpu/drm/tiny/mi0283qt.c
drivers/gpu/drm/tiny/panel-mipi-dbi.c
drivers/gpu/drm/tiny/repaper.c
drivers/gpu/drm/tiny/st7586.c
drivers/gpu/drm/tiny/st7735r.c
drivers/gpu/drm/tve200/Kconfig
drivers/gpu/drm/tve200/tve200_display.c
drivers/gpu/drm/tve200/tve200_drv.c
drivers/gpu/drm/v3d/v3d_gem.c
drivers/gpu/drm/vc4/Kconfig
drivers/gpu/drm/vc4/vc4_bo.c
drivers/gpu/drm/vc4/vc4_crtc.c
drivers/gpu/drm/vc4/vc4_drv.c
drivers/gpu/drm/vc4/vc4_drv.h
drivers/gpu/drm/vc4/vc4_gem.c
drivers/gpu/drm/vc4/vc4_plane.c
drivers/gpu/drm/vc4/vc4_render_cl.c
drivers/gpu/drm/vc4/vc4_txp.c
drivers/gpu/drm/vc4/vc4_v3d.c
drivers/gpu/drm/vc4/vc4_validate.c
drivers/gpu/drm/vc4/vc4_validate_shaders.c
drivers/gpu/drm/xlnx/Kconfig
drivers/gpu/drm/xlnx/zynqmp_dpsub.c
include/drm/drm_fb_dma_helper.h
include/drm/drm_gem.h
include/drm/drm_gem_cma_helper.h [deleted file]
include/drm/drm_gem_dma_helper.h [new file with mode: 0644]

index f32ccce5722d0aa684d262b437d53ca93019c092..a79fd3549ff8c267c195d225c0d2c722803c7b56 100644 (file)
@@ -300,12 +300,12 @@ Drivers that want to map the GEM object upfront instead of handling page
 faults can implement their own mmap file operation handler.
 
 For platforms without MMU the GEM core provides a helper method
-drm_gem_cma_get_unmapped_area(). The mmap() routines will call this to get a
+drm_gem_dma_get_unmapped_area(). The mmap() routines will call this to get a
 proposed address for the mapping.
 
-To use drm_gem_cma_get_unmapped_area(), drivers must fill the struct
+To use drm_gem_dma_get_unmapped_area(), drivers must fill the struct
 :c:type:`struct file_operations <file_operations>` get_unmapped_area field with
-a pointer on drm_gem_cma_get_unmapped_area().
+a pointer on drm_gem_dma_get_unmapped_area().
 
 More detailed information about get_unmapped_area can be found in
 Documentation/admin-guide/mm/nommu-mmap.rst
@@ -355,16 +355,16 @@ GEM Function Reference
 .. kernel-doc:: drivers/gpu/drm/drm_gem.c
    :export:
 
-GEM CMA Helper Functions Reference
+GEM DMA Helper Functions Reference
 ----------------------------------
 
-.. kernel-doc:: drivers/gpu/drm/drm_gem_cma_helper.c
-   :doc: cma helpers
+.. kernel-doc:: drivers/gpu/drm/drm_gem_dma_helper.c
+   :doc: dma helpers
 
-.. kernel-doc:: include/drm/drm_gem_cma_helper.h
+.. kernel-doc:: include/drm/drm_gem_dma_helper.h
    :internal:
 
-.. kernel-doc:: drivers/gpu/drm/drm_gem_cma_helper.c
+.. kernel-doc:: drivers/gpu/drm/drm_gem_dma_helper.c
    :export:
 
 GEM SHMEM Helper Function Reference
index 1c91e1e861a55168c9a1ad5d13b9238a60d4674e..0b2ad7212ee66822760ad07438e181f612f788cd 100644 (file)
@@ -200,11 +200,11 @@ config DRM_TTM_HELPER
        help
          Helpers for ttm-based gem objects
 
-config DRM_GEM_CMA_HELPER
+config DRM_GEM_DMA_HELPER
        tristate
        depends on DRM
        help
-         Choose this if you need the GEM CMA helper functions
+         Choose this if you need the GEM DMA helper functions
 
 config DRM_GEM_SHMEM_HELPER
        tristate
index 1d6e4f672b59c97b32dd8792a92b268cbb1a3cee..25d0ba31050938c0db4b76369ac894a59b40936c 100644 (file)
@@ -40,9 +40,9 @@ obj-$(CONFIG_DRM_PANEL_ORIENTATION_QUIRKS) += drm_panel_orientation_quirks.o
 
 obj-$(CONFIG_DRM_BUDDY) += drm_buddy.o
 
-drm_cma_helper-y := drm_gem_cma_helper.o
-drm_cma_helper-$(CONFIG_DRM_KMS_HELPER) += drm_fb_dma_helper.o
-obj-$(CONFIG_DRM_GEM_CMA_HELPER) += drm_cma_helper.o
+drm_dma_helper-y := drm_gem_dma_helper.o
+drm_dma_helper-$(CONFIG_DRM_KMS_HELPER) += drm_fb_dma_helper.o
+obj-$(CONFIG_DRM_GEM_DMA_HELPER) += drm_dma_helper.o
 
 drm_shmem_helper-y := drm_gem_shmem_helper.o
 obj-$(CONFIG_DRM_GEM_SHMEM_HELPER) += drm_shmem_helper.o
index 6e3f1d600541aae14ae25d38cd7fd5458fec955b..c1b89274d2a44ac135f6da34ab537fb232031097 100644 (file)
@@ -6,7 +6,7 @@ config DRM_HDLCD
        depends on DRM && OF && (ARM || ARM64 || COMPILE_TEST)
        depends on COMMON_CLK
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        help
          Choose this option if you have an ARM High Definition Colour LCD
          controller.
@@ -27,7 +27,7 @@ config DRM_MALI_DISPLAY
        depends on DRM && OF && (ARM || ARM64 || COMPILE_TEST)
        depends on COMMON_CLK
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select VIDEOMODE_HELPERS
        help
          Choose this option if you want to compile the ARM Mali Display
index e91598b60781aad3cecbcd1fcd4a80f9f43a48d3..4acc4285a4eb06dd5c3e462963e50df75a587484 100644 (file)
@@ -4,7 +4,7 @@ config DRM_KOMEDA
        depends on DRM && OF
        depends on COMMON_CLK
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select VIDEOMODE_HELPERS
        help
          Choose this option if you want to compile the ARM Komeda display
index ea45da663dfb71350d2d1f9410f70b888f64cd8e..f1b27db5dad51250583d3a2f2b3c111a07d9c984 100644 (file)
@@ -7,7 +7,7 @@
 #include <drm/drm_device.h>
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_gem.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 
 #include "komeda_framebuffer.h"
@@ -137,7 +137,7 @@ komeda_fb_none_afbc_size_check(struct komeda_dev *mdev, struct komeda_fb *kfb,
                }
 
                min_size = komeda_fb_get_pixel_addr(kfb, 0, fb->height, i)
-                        - to_drm_gem_cma_obj(obj)->paddr;
+                        - to_drm_gem_dma_obj(obj)->paddr;
                if (obj->size < min_size) {
                        DRM_DEBUG_KMS("The fb->obj[%d] size: 0x%zx lower than the minimum requirement: 0x%llx.\n",
                                      i, obj->size, min_size);
@@ -239,7 +239,7 @@ dma_addr_t
 komeda_fb_get_pixel_addr(struct komeda_fb *kfb, int x, int y, int plane)
 {
        struct drm_framebuffer *fb = &kfb->base;
-       const struct drm_gem_cma_object *obj;
+       const struct drm_gem_dma_object *obj;
        u32 offset, plane_x, plane_y, block_w, block_sz;
 
        if (plane >= fb->format->num_planes) {
index 327051bba5b688e0cb16ab58801b8331d9c485be..451746ebbe7138cdbafbe42914e546d1db05e1aa 100644 (file)
@@ -11,7 +11,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_probe_helper.h>
@@ -21,9 +21,9 @@
 #include "komeda_framebuffer.h"
 #include "komeda_kms.h"
 
-DEFINE_DRM_GEM_CMA_FOPS(komeda_cma_fops);
+DEFINE_DRM_GEM_DMA_FOPS(komeda_cma_fops);
 
-static int komeda_gem_cma_dumb_create(struct drm_file *file,
+static int komeda_gem_dma_dumb_create(struct drm_file *file,
                                      struct drm_device *dev,
                                      struct drm_mode_create_dumb *args)
 {
@@ -32,7 +32,7 @@ static int komeda_gem_cma_dumb_create(struct drm_file *file,
 
        args->pitch = ALIGN(pitch, mdev->chip.bus_width);
 
-       return drm_gem_cma_dumb_create_internal(file, dev, args);
+       return drm_gem_dma_dumb_create_internal(file, dev, args);
 }
 
 static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
@@ -60,7 +60,7 @@ static irqreturn_t komeda_kms_irq_handler(int irq, void *data)
 static const struct drm_driver komeda_kms_driver = {
        .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .lastclose                      = drm_fb_helper_lastclose,
-       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_cma_dumb_create),
+       DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE(komeda_gem_dma_dumb_create),
        .fops = &komeda_cma_fops,
        .name = "komeda",
        .desc = "Arm Komeda Display Processor driver",
index d3cf788c0fa9c35614dbab5b091eee076fec9476..7030339fa2323642421b43c98d8a970a63b42ed5 100644 (file)
@@ -21,7 +21,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_vblank.h>
index b32168e3f9aef447900beaecd4f04dd6ab2ac700..a032003c340cc9690ff352456cebf776209e2fb3 100644 (file)
@@ -27,7 +27,7 @@
 #include <drm/drm_debugfs.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_modeset_helper.h>
 #include <drm/drm_module.h>
@@ -225,11 +225,11 @@ static void hdlcd_debugfs_init(struct drm_minor *minor)
 }
 #endif
 
-DEFINE_DRM_GEM_CMA_FOPS(fops);
+DEFINE_DRM_GEM_DMA_FOPS(fops);
 
 static const struct drm_driver hdlcd_driver = {
        .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
 #ifdef CONFIG_DEBUG_FS
        .debugfs_init = hdlcd_debugfs_init,
 #endif
index fa6c1a4254dc0b0f94c4596d53e41ea84fdd2469..1d0b0c54ccc74a96d1486e2108b1e007f4600ee1 100644 (file)
@@ -21,7 +21,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_modeset_helper.h>
 #include <drm/drm_module.h>
@@ -456,7 +456,7 @@ static int malidp_irq_init(struct platform_device *pdev)
        return 0;
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(fops);
+DEFINE_DRM_GEM_DMA_FOPS(fops);
 
 static int malidp_dumb_create(struct drm_file *file_priv,
                              struct drm_device *drm,
@@ -468,7 +468,7 @@ static int malidp_dumb_create(struct drm_file *file_priv,
 
        args->pitch = ALIGN(DIV_ROUND_UP(args->width * args->bpp, 8), alignment);
 
-       return drm_gem_cma_dumb_create_internal(file_priv, drm, args);
+       return drm_gem_dma_dumb_create_internal(file_priv, drm, args);
 }
 
 #ifdef CONFIG_DEBUG_FS
@@ -565,7 +565,7 @@ static void malidp_debugfs_init(struct drm_minor *minor)
 
 static const struct drm_driver malidp_driver = {
        .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
-       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
+       DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE(malidp_dumb_create),
 #ifdef CONFIG_DEBUG_FS
        .debugfs_init = malidp_debugfs_init,
 #endif
index 7a9c900626ecd6c51c62c00e27a4ff90fb3dfc1b..cefae03f1bcce32bc64a9cddf01a884576feb397 100644 (file)
@@ -13,7 +13,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_writeback.h>
 
@@ -160,7 +160,7 @@ malidp_mw_encoder_atomic_check(struct drm_encoder *encoder,
 
        n_planes = fb->format->num_planes;
        for (i = 0; i < n_planes; i++) {
-               struct drm_gem_cma_object *obj = drm_fb_dma_get_gem_obj(fb, i);
+               struct drm_gem_dma_object *obj = drm_fb_dma_get_gem_obj(fb, i);
                /* memory write buffers are never rotated */
                u8 alignment = malidp_hw_get_pitch_align(malidp->dev, 0);
 
index 72e0162735fa2544b4db9d85d7dd8f8b00a637fb..b7948ca0060ce6cde6a0eb328396dfadf2b1e681 100644 (file)
@@ -16,7 +16,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_print.h>
 
@@ -333,15 +333,15 @@ static bool malidp_check_pages_threshold(struct malidp_plane_state *ms,
 
        for (i = 0; i < ms->n_planes; i++) {
                struct drm_gem_object *obj;
-               struct drm_gem_cma_object *cma_obj;
+               struct drm_gem_dma_object *dma_obj;
                struct sg_table *sgt;
                struct scatterlist *sgl;
 
                obj = drm_gem_fb_get_obj(ms->base.fb, i);
-               cma_obj = to_drm_gem_cma_obj(obj);
+               dma_obj = to_drm_gem_dma_obj(obj);
 
-               if (cma_obj->sgt)
-                       sgt = cma_obj->sgt;
+               if (dma_obj->sgt)
+                       sgt = dma_obj->sgt;
                else
                        sgt = obj->funcs->get_sg_table(obj);
 
@@ -352,14 +352,14 @@ static bool malidp_check_pages_threshold(struct malidp_plane_state *ms,
 
                while (sgl) {
                        if (sgl->length < pgsize) {
-                               if (!cma_obj->sgt)
+                               if (!dma_obj->sgt)
                                        kfree(sgt);
                                return false;
                        }
 
                        sgl = sg_next(sgl);
                }
-               if (!cma_obj->sgt)
+               if (!dma_obj->sgt)
                        kfree(sgt);
        }
 
@@ -732,7 +732,7 @@ static void malidp_set_plane_base_addr(struct drm_framebuffer *fb,
                paddr = drm_fb_dma_get_gem_addr(fb, plane->state,
                                                plane_index);
        } else {
-               struct drm_gem_cma_object *obj;
+               struct drm_gem_dma_object *obj;
 
                obj = drm_fb_dma_get_gem_obj(fb, plane_index);
 
index 147abf1a3968d49db12af0cdca358985c71a2bbb..5430265ad4588377b5efb02e486725fd8b12660a 100644 (file)
@@ -107,11 +107,11 @@ armada_gem_linear_back(struct drm_device *dev, struct armada_gem_object *obj)
        }
 
        /*
-        * We could grab something from CMA if it's enabled, but that
+        * We could grab something from DMA if it's enabled, but that
         * involves building in a problem:
         *
-        * CMA's interface uses dma_alloc_coherent(), which provides us
-        * with an CPU virtual address and a device address.
+        * GEM DMA helper interface uses dma_alloc_coherent(), which provides
+        * us with an CPU virtual address and a device address.
         *
         * The CPU virtual address may be either an address in the kernel
         * direct mapped region (for example, as it would be on x86) or
index 024ccab14f884aa8a4226b0925edbc722515e105..8137c39b057bb386a8a109d6ce0d817e91e341ac 100644 (file)
@@ -5,7 +5,7 @@ config DRM_ASPEED_GFX
        depends on (COMPILE_TEST || ARCH_ASPEED)
        depends on MMU
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DMA_CMA if HAVE_DMA_CONTIGUOUS
        select CMA if HAVE_DMA_CONTIGUOUS
        select MFD_SYSCON
index cc4d0fa6262ce17c94b016b863ddd2b7b4943bd4..996b03bac87f3ab9d33cbe404bb3227e7a5a7718 100644 (file)
@@ -11,7 +11,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_panel.h>
 #include <drm/drm_simple_kms_helper.h>
 #include <drm/drm_vblank.h>
@@ -168,7 +168,7 @@ static void aspeed_gfx_pipe_update(struct drm_simple_display_pipe *pipe,
        struct drm_crtc *crtc = &pipe->crtc;
        struct drm_framebuffer *fb = pipe->plane.state->fb;
        struct drm_pending_vblank_event *event;
-       struct drm_gem_cma_object *gem;
+       struct drm_gem_dma_object *gem;
 
        spin_lock_irq(&crtc->dev->event_lock);
        event = crtc->state->event;
index 54aa8af45829e3d7590e02b7cd26111a4a47e787..a94f1a9e8f4094b16bc8f9bcb7c7d1a64d194c17 100644 (file)
@@ -17,7 +17,7 @@
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_device.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_module.h>
 #include <drm/drm_probe_helper.h>
@@ -245,11 +245,11 @@ static void aspeed_gfx_unload(struct drm_device *drm)
        drm_kms_helper_poll_fini(drm);
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(fops);
+DEFINE_DRM_GEM_DMA_FOPS(fops);
 
 static const struct drm_driver aspeed_gfx_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
        .fops = &fops,
        .name = "aspeed-gfx-drm",
        .desc = "ASPEED GFX DRM",
index 8ae679f1a51852306f27d7a8a48b4b5b92a0fead..3bdbab3a6333bbb3e80443de99d6ff76cd85c6c2 100644 (file)
@@ -2,7 +2,7 @@
 config DRM_ATMEL_HLCDC
        tristate "DRM Support for ATMEL HLCDC Display Controller"
        depends on DRM && OF && COMMON_CLK && MFD_ATMEL_HLCDC && ARM
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_KMS_HELPER
        select DRM_PANEL
        help
index 651e3c10936067d57b114c8d0c44091a8a4c38be..f7e7f4e919c779eebeaa32136089632482af0927 100644 (file)
@@ -20,7 +20,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_module.h>
 #include <drm/drm_probe_helper.h>
@@ -730,11 +730,11 @@ static void atmel_hlcdc_dc_unload(struct drm_device *dev)
        clk_disable_unprepare(dc->hlcdc->periph_clk);
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(fops);
+DEFINE_DRM_GEM_DMA_FOPS(fops);
 
 static const struct drm_driver atmel_hlcdc_dc_driver = {
        .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
        .fops = &fops,
        .name = "atmel-hlcdc",
        .desc = "Atmel HLCD Controller DRM",
index ddcbfe7ea0c88f2af51a70c2e002981f74b962a2..48481aa2731a4e4a4fc8fc1471c94c08cda93ffa 100644 (file)
@@ -15,7 +15,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 
 #include "atmel_hlcdc_dc.h"
 
@@ -448,7 +448,7 @@ static void atmel_hlcdc_plane_update_buffers(struct atmel_hlcdc_plane *plane,
        sr = atmel_hlcdc_layer_read_reg(&plane->layer, ATMEL_HLCDC_LAYER_CHSR);
 
        for (i = 0; i < state->nplanes; i++) {
-               struct drm_gem_cma_object *gem = drm_fb_dma_get_gem_obj(fb, i);
+               struct drm_gem_dma_object *gem = drm_fb_dma_get_gem_obj(fb, i);
 
                state->dscrs[i]->addr = gem->paddr + state->offsets[i];
 
index 85fd21cd9dda4779c319e52888ddc934f9ffe0b8..b601073c22deb6e8a81338bf5d7643701fcc27e2 100644 (file)
@@ -13,7 +13,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_plane.h>
 #include <linux/dma-mapping.h>
  */
 
 /**
- * drm_fb_dma_get_gem_obj() - Get CMA GEM object for framebuffer
+ * drm_fb_dma_get_gem_obj() - Get DMA GEM object for framebuffer
  * @fb: The framebuffer
  * @plane: Which plane
  *
- * Return the CMA GEM object for given framebuffer.
+ * Return the DMA GEM object for given framebuffer.
  *
  * This function will usually be called from the CRTC callback functions.
  */
-struct drm_gem_cma_object *drm_fb_dma_get_gem_obj(struct drm_framebuffer *fb,
+struct drm_gem_dma_object *drm_fb_dma_get_gem_obj(struct drm_framebuffer *fb,
                                                  unsigned int plane)
 {
        struct drm_gem_object *gem;
@@ -52,7 +52,7 @@ struct drm_gem_cma_object *drm_fb_dma_get_gem_obj(struct drm_framebuffer *fb,
        if (!gem)
                return NULL;
 
-       return to_drm_gem_cma_obj(gem);
+       return to_drm_gem_dma_obj(gem);
 }
 EXPORT_SYMBOL_GPL(drm_fb_dma_get_gem_obj);
 
@@ -71,7 +71,7 @@ dma_addr_t drm_fb_dma_get_gem_addr(struct drm_framebuffer *fb,
                                   struct drm_plane_state *state,
                                   unsigned int plane)
 {
-       struct drm_gem_cma_object *obj;
+       struct drm_gem_dma_object *obj;
        dma_addr_t paddr;
        u8 h_div = 1, v_div = 1;
        u32 block_w = drm_format_info_block_width(fb->format, plane);
@@ -113,7 +113,7 @@ EXPORT_SYMBOL_GPL(drm_fb_dma_get_gem_addr);
  * @state: New plane state
  *
  * This function can be used by drivers that use damage clips and have
- * CMA GEM objects backed by non-coherent memory. Calling this function
+ * DMA GEM objects backed by non-coherent memory. Calling this function
  * in a plane's .atomic_update ensures that all the data in the backing
  * memory have been written to RAM.
  */
@@ -123,15 +123,15 @@ void drm_fb_dma_sync_non_coherent(struct drm_device *drm,
 {
        const struct drm_format_info *finfo = state->fb->format;
        struct drm_atomic_helper_damage_iter iter;
-       const struct drm_gem_cma_object *cma_obj;
+       const struct drm_gem_dma_object *dma_obj;
        unsigned int offset, i;
        struct drm_rect clip;
        dma_addr_t daddr;
        size_t nb_bytes;
 
        for (i = 0; i < finfo->num_planes; i++) {
-               cma_obj = drm_fb_dma_get_gem_obj(state->fb, i);
-               if (!cma_obj->map_noncoherent)
+               dma_obj = drm_fb_dma_get_gem_obj(state->fb, i);
+               if (!dma_obj->map_noncoherent)
                        continue;
 
                daddr = drm_fb_dma_get_gem_addr(state->fb, state, i);
index ed25168619fc5d9de5360ca65bcf8ea9e1bfec66..fa55c9a562f3eb8d8657b7d95b37bdb8a18306d2 100644 (file)
@@ -131,7 +131,7 @@ bool drm_dev_needs_global_mutex(struct drm_device *dev)
  *     };
  *
  * For plain GEM based drivers there is the DEFINE_DRM_GEM_FOPS() macro, and for
- * CMA based drivers there is the DEFINE_DRM_GEM_CMA_FOPS() macro to make this
+ * DMA based drivers there is the DEFINE_DRM_GEM_DMA_FOPS() macro to make this
  * simpler.
  *
  * The driver's &file_operations must be stored in &drm_driver.fops.
diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c
deleted file mode 100644 (file)
index 42abee9..0000000
+++ /dev/null
@@ -1,605 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * drm gem CMA (contiguous memory allocator) helper functions
- *
- * Copyright (C) 2012 Sascha Hauer, Pengutronix
- *
- * Based on Samsung Exynos code
- *
- * Copyright (c) 2011 Samsung Electronics Co., Ltd.
- */
-
-#include <linux/dma-buf.h>
-#include <linux/dma-mapping.h>
-#include <linux/export.h>
-#include <linux/mm.h>
-#include <linux/module.h>
-#include <linux/mutex.h>
-#include <linux/slab.h>
-
-#include <drm/drm.h>
-#include <drm/drm_device.h>
-#include <drm/drm_drv.h>
-#include <drm/drm_gem_cma_helper.h>
-#include <drm/drm_vma_manager.h>
-
-/**
- * DOC: cma helpers
- *
- * The DRM GEM/CMA helpers are a means to provide buffer objects that are
- * presented to the device as a contiguous chunk of memory. This is useful
- * for devices that do not support scatter-gather DMA (either directly or
- * by using an intimately attached IOMMU).
- *
- * Despite the name, the DRM GEM/CMA helpers are not hardwired to use the
- * Contiguous Memory Allocator (CMA).
- *
- * For devices that access the memory bus through an (external) IOMMU then
- * the buffer objects are allocated using a traditional page-based
- * allocator and may be scattered through physical memory. However they
- * are contiguous in the IOVA space so appear contiguous to devices using
- * them.
- *
- * For other devices then the helpers rely on CMA to provide buffer
- * objects that are physically contiguous in memory.
- *
- * For GEM callback helpers in struct &drm_gem_object functions, see likewise
- * named functions with an _object_ infix (e.g., drm_gem_cma_object_vmap() wraps
- * drm_gem_cma_vmap()). These helpers perform the necessary type conversion.
- */
-
-static const struct drm_gem_object_funcs drm_gem_cma_default_funcs = {
-       .free = drm_gem_cma_object_free,
-       .print_info = drm_gem_cma_object_print_info,
-       .get_sg_table = drm_gem_cma_object_get_sg_table,
-       .vmap = drm_gem_cma_object_vmap,
-       .mmap = drm_gem_cma_object_mmap,
-       .vm_ops = &drm_gem_cma_vm_ops,
-};
-
-/**
- * __drm_gem_cma_create - Create a GEM CMA object without allocating memory
- * @drm: DRM device
- * @size: size of the object to allocate
- * @private: true if used for internal purposes
- *
- * This function creates and initializes a GEM CMA object of the given size,
- * but doesn't allocate any memory to back the object.
- *
- * Returns:
- * A struct drm_gem_cma_object * on success or an ERR_PTR()-encoded negative
- * error code on failure.
- */
-static struct drm_gem_cma_object *
-__drm_gem_cma_create(struct drm_device *drm, size_t size, bool private)
-{
-       struct drm_gem_cma_object *cma_obj;
-       struct drm_gem_object *gem_obj;
-       int ret = 0;
-
-       if (drm->driver->gem_create_object) {
-               gem_obj = drm->driver->gem_create_object(drm, size);
-               if (IS_ERR(gem_obj))
-                       return ERR_CAST(gem_obj);
-               cma_obj = to_drm_gem_cma_obj(gem_obj);
-       } else {
-               cma_obj = kzalloc(sizeof(*cma_obj), GFP_KERNEL);
-               if (!cma_obj)
-                       return ERR_PTR(-ENOMEM);
-               gem_obj = &cma_obj->base;
-       }
-
-       if (!gem_obj->funcs)
-               gem_obj->funcs = &drm_gem_cma_default_funcs;
-
-       if (private) {
-               drm_gem_private_object_init(drm, gem_obj, size);
-
-               /* Always use writecombine for dma-buf mappings */
-               cma_obj->map_noncoherent = false;
-       } else {
-               ret = drm_gem_object_init(drm, gem_obj, size);
-       }
-       if (ret)
-               goto error;
-
-       ret = drm_gem_create_mmap_offset(gem_obj);
-       if (ret) {
-               drm_gem_object_release(gem_obj);
-               goto error;
-       }
-
-       return cma_obj;
-
-error:
-       kfree(cma_obj);
-       return ERR_PTR(ret);
-}
-
-/**
- * drm_gem_cma_create - allocate an object with the given size
- * @drm: DRM device
- * @size: size of the object to allocate
- *
- * This function creates a CMA GEM object and allocates memory as backing store.
- * The allocated memory will occupy a contiguous chunk of bus address space.
- *
- * For devices that are directly connected to the memory bus then the allocated
- * memory will be physically contiguous. For devices that access through an
- * IOMMU, then the allocated memory is not expected to be physically contiguous
- * because having contiguous IOVAs is sufficient to meet a devices DMA
- * requirements.
- *
- * Returns:
- * A struct drm_gem_cma_object * on success or an ERR_PTR()-encoded negative
- * error code on failure.
- */
-struct drm_gem_cma_object *drm_gem_cma_create(struct drm_device *drm,
-                                             size_t size)
-{
-       struct drm_gem_cma_object *cma_obj;
-       int ret;
-
-       size = round_up(size, PAGE_SIZE);
-
-       cma_obj = __drm_gem_cma_create(drm, size, false);
-       if (IS_ERR(cma_obj))
-               return cma_obj;
-
-       if (cma_obj->map_noncoherent) {
-               cma_obj->vaddr = dma_alloc_noncoherent(drm->dev, size,
-                                                      &cma_obj->paddr,
-                                                      DMA_TO_DEVICE,
-                                                      GFP_KERNEL | __GFP_NOWARN);
-       } else {
-               cma_obj->vaddr = dma_alloc_wc(drm->dev, size, &cma_obj->paddr,
-                                             GFP_KERNEL | __GFP_NOWARN);
-       }
-       if (!cma_obj->vaddr) {
-               drm_dbg(drm, "failed to allocate buffer with size %zu\n",
-                        size);
-               ret = -ENOMEM;
-               goto error;
-       }
-
-       return cma_obj;
-
-error:
-       drm_gem_object_put(&cma_obj->base);
-       return ERR_PTR(ret);
-}
-EXPORT_SYMBOL_GPL(drm_gem_cma_create);
-
-/**
- * drm_gem_cma_create_with_handle - allocate an object with the given size and
- *     return a GEM handle to it
- * @file_priv: DRM file-private structure to register the handle for
- * @drm: DRM device
- * @size: size of the object to allocate
- * @handle: return location for the GEM handle
- *
- * This function creates a CMA GEM object, allocating a chunk of memory as
- * backing store. The GEM object is then added to the list of object associated
- * with the given file and a handle to it is returned.
- *
- * The allocated memory will occupy a contiguous chunk of bus address space.
- * See drm_gem_cma_create() for more details.
- *
- * Returns:
- * A struct drm_gem_cma_object * on success or an ERR_PTR()-encoded negative
- * error code on failure.
- */
-static struct drm_gem_cma_object *
-drm_gem_cma_create_with_handle(struct drm_file *file_priv,
-                              struct drm_device *drm, size_t size,
-                              uint32_t *handle)
-{
-       struct drm_gem_cma_object *cma_obj;
-       struct drm_gem_object *gem_obj;
-       int ret;
-
-       cma_obj = drm_gem_cma_create(drm, size);
-       if (IS_ERR(cma_obj))
-               return cma_obj;
-
-       gem_obj = &cma_obj->base;
-
-       /*
-        * allocate a id of idr table where the obj is registered
-        * and handle has the id what user can see.
-        */
-       ret = drm_gem_handle_create(file_priv, gem_obj, handle);
-       /* drop reference from allocate - handle holds it now. */
-       drm_gem_object_put(gem_obj);
-       if (ret)
-               return ERR_PTR(ret);
-
-       return cma_obj;
-}
-
-/**
- * drm_gem_cma_free - free resources associated with a CMA GEM object
- * @cma_obj: CMA GEM object to free
- *
- * This function frees the backing memory of the CMA GEM object, cleans up the
- * GEM object state and frees the memory used to store the object itself.
- * If the buffer is imported and the virtual address is set, it is released.
- */
-void drm_gem_cma_free(struct drm_gem_cma_object *cma_obj)
-{
-       struct drm_gem_object *gem_obj = &cma_obj->base;
-       struct iosys_map map = IOSYS_MAP_INIT_VADDR(cma_obj->vaddr);
-
-       if (gem_obj->import_attach) {
-               if (cma_obj->vaddr)
-                       dma_buf_vunmap(gem_obj->import_attach->dmabuf, &map);
-               drm_prime_gem_destroy(gem_obj, cma_obj->sgt);
-       } else if (cma_obj->vaddr) {
-               if (cma_obj->map_noncoherent)
-                       dma_free_noncoherent(gem_obj->dev->dev, cma_obj->base.size,
-                                            cma_obj->vaddr, cma_obj->paddr,
-                                            DMA_TO_DEVICE);
-               else
-                       dma_free_wc(gem_obj->dev->dev, cma_obj->base.size,
-                                   cma_obj->vaddr, cma_obj->paddr);
-       }
-
-       drm_gem_object_release(gem_obj);
-
-       kfree(cma_obj);
-}
-EXPORT_SYMBOL_GPL(drm_gem_cma_free);
-
-/**
- * drm_gem_cma_dumb_create_internal - create a dumb buffer object
- * @file_priv: DRM file-private structure to create the dumb buffer for
- * @drm: DRM device
- * @args: IOCTL data
- *
- * This aligns the pitch and size arguments to the minimum required. This is
- * an internal helper that can be wrapped by a driver to account for hardware
- * with more specific alignment requirements. It should not be used directly
- * as their &drm_driver.dumb_create callback.
- *
- * Returns:
- * 0 on success or a negative error code on failure.
- */
-int drm_gem_cma_dumb_create_internal(struct drm_file *file_priv,
-                                    struct drm_device *drm,
-                                    struct drm_mode_create_dumb *args)
-{
-       unsigned int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8);
-       struct drm_gem_cma_object *cma_obj;
-
-       if (args->pitch < min_pitch)
-               args->pitch = min_pitch;
-
-       if (args->size < args->pitch * args->height)
-               args->size = args->pitch * args->height;
-
-       cma_obj = drm_gem_cma_create_with_handle(file_priv, drm, args->size,
-                                                &args->handle);
-       return PTR_ERR_OR_ZERO(cma_obj);
-}
-EXPORT_SYMBOL_GPL(drm_gem_cma_dumb_create_internal);
-
-/**
- * drm_gem_cma_dumb_create - create a dumb buffer object
- * @file_priv: DRM file-private structure to create the dumb buffer for
- * @drm: DRM device
- * @args: IOCTL data
- *
- * This function computes the pitch of the dumb buffer and rounds it up to an
- * integer number of bytes per pixel. Drivers for hardware that doesn't have
- * any additional restrictions on the pitch can directly use this function as
- * their &drm_driver.dumb_create callback.
- *
- * For hardware with additional restrictions, drivers can adjust the fields
- * set up by userspace and pass the IOCTL data along to the
- * drm_gem_cma_dumb_create_internal() function.
- *
- * Returns:
- * 0 on success or a negative error code on failure.
- */
-int drm_gem_cma_dumb_create(struct drm_file *file_priv,
-                           struct drm_device *drm,
-                           struct drm_mode_create_dumb *args)
-{
-       struct drm_gem_cma_object *cma_obj;
-
-       args->pitch = DIV_ROUND_UP(args->width * args->bpp, 8);
-       args->size = args->pitch * args->height;
-
-       cma_obj = drm_gem_cma_create_with_handle(file_priv, drm, args->size,
-                                                &args->handle);
-       return PTR_ERR_OR_ZERO(cma_obj);
-}
-EXPORT_SYMBOL_GPL(drm_gem_cma_dumb_create);
-
-const struct vm_operations_struct drm_gem_cma_vm_ops = {
-       .open = drm_gem_vm_open,
-       .close = drm_gem_vm_close,
-};
-EXPORT_SYMBOL_GPL(drm_gem_cma_vm_ops);
-
-#ifndef CONFIG_MMU
-/**
- * drm_gem_cma_get_unmapped_area - propose address for mapping in noMMU cases
- * @filp: file object
- * @addr: memory address
- * @len: buffer size
- * @pgoff: page offset
- * @flags: memory flags
- *
- * This function is used in noMMU platforms to propose address mapping
- * for a given buffer.
- * It's intended to be used as a direct handler for the struct
- * &file_operations.get_unmapped_area operation.
- *
- * Returns:
- * mapping address on success or a negative error code on failure.
- */
-unsigned long drm_gem_cma_get_unmapped_area(struct file *filp,
-                                           unsigned long addr,
-                                           unsigned long len,
-                                           unsigned long pgoff,
-                                           unsigned long flags)
-{
-       struct drm_gem_cma_object *cma_obj;
-       struct drm_gem_object *obj = NULL;
-       struct drm_file *priv = filp->private_data;
-       struct drm_device *dev = priv->minor->dev;
-       struct drm_vma_offset_node *node;
-
-       if (drm_dev_is_unplugged(dev))
-               return -ENODEV;
-
-       drm_vma_offset_lock_lookup(dev->vma_offset_manager);
-       node = drm_vma_offset_exact_lookup_locked(dev->vma_offset_manager,
-                                                 pgoff,
-                                                 len >> PAGE_SHIFT);
-       if (likely(node)) {
-               obj = container_of(node, struct drm_gem_object, vma_node);
-               /*
-                * When the object is being freed, after it hits 0-refcnt it
-                * proceeds to tear down the object. In the process it will
-                * attempt to remove the VMA offset and so acquire this
-                * mgr->vm_lock.  Therefore if we find an object with a 0-refcnt
-                * that matches our range, we know it is in the process of being
-                * destroyed and will be freed as soon as we release the lock -
-                * so we have to check for the 0-refcnted object and treat it as
-                * invalid.
-                */
-               if (!kref_get_unless_zero(&obj->refcount))
-                       obj = NULL;
-       }
-
-       drm_vma_offset_unlock_lookup(dev->vma_offset_manager);
-
-       if (!obj)
-               return -EINVAL;
-
-       if (!drm_vma_node_is_allowed(node, priv)) {
-               drm_gem_object_put(obj);
-               return -EACCES;
-       }
-
-       cma_obj = to_drm_gem_cma_obj(obj);
-
-       drm_gem_object_put(obj);
-
-       return cma_obj->vaddr ? (unsigned long)cma_obj->vaddr : -EINVAL;
-}
-EXPORT_SYMBOL_GPL(drm_gem_cma_get_unmapped_area);
-#endif
-
-/**
- * drm_gem_cma_print_info() - Print &drm_gem_cma_object info for debugfs
- * @cma_obj: CMA GEM object
- * @p: DRM printer
- * @indent: Tab indentation level
- *
- * This function prints paddr and vaddr for use in e.g. debugfs output.
- */
-void drm_gem_cma_print_info(const struct drm_gem_cma_object *cma_obj,
-                           struct drm_printer *p, unsigned int indent)
-{
-       drm_printf_indent(p, indent, "paddr=%pad\n", &cma_obj->paddr);
-       drm_printf_indent(p, indent, "vaddr=%p\n", cma_obj->vaddr);
-}
-EXPORT_SYMBOL(drm_gem_cma_print_info);
-
-/**
- * drm_gem_cma_get_sg_table - provide a scatter/gather table of pinned
- *     pages for a CMA GEM object
- * @cma_obj: CMA GEM object
- *
- * This function exports a scatter/gather table by calling the standard
- * DMA mapping API.
- *
- * Returns:
- * A pointer to the scatter/gather table of pinned pages or NULL on failure.
- */
-struct sg_table *drm_gem_cma_get_sg_table(struct drm_gem_cma_object *cma_obj)
-{
-       struct drm_gem_object *obj = &cma_obj->base;
-       struct sg_table *sgt;
-       int ret;
-
-       sgt = kzalloc(sizeof(*sgt), GFP_KERNEL);
-       if (!sgt)
-               return ERR_PTR(-ENOMEM);
-
-       ret = dma_get_sgtable(obj->dev->dev, sgt, cma_obj->vaddr,
-                             cma_obj->paddr, obj->size);
-       if (ret < 0)
-               goto out;
-
-       return sgt;
-
-out:
-       kfree(sgt);
-       return ERR_PTR(ret);
-}
-EXPORT_SYMBOL_GPL(drm_gem_cma_get_sg_table);
-
-/**
- * drm_gem_cma_prime_import_sg_table - produce a CMA GEM object from another
- *     driver's scatter/gather table of pinned pages
- * @dev: device to import into
- * @attach: DMA-BUF attachment
- * @sgt: scatter/gather table of pinned pages
- *
- * This function imports a scatter/gather table exported via DMA-BUF by
- * another driver. Imported buffers must be physically contiguous in memory
- * (i.e. the scatter/gather table must contain a single entry). Drivers that
- * use the CMA helpers should set this as their
- * &drm_driver.gem_prime_import_sg_table callback.
- *
- * Returns:
- * A pointer to a newly created GEM object or an ERR_PTR-encoded negative
- * error code on failure.
- */
-struct drm_gem_object *
-drm_gem_cma_prime_import_sg_table(struct drm_device *dev,
-                                 struct dma_buf_attachment *attach,
-                                 struct sg_table *sgt)
-{
-       struct drm_gem_cma_object *cma_obj;
-
-       /* check if the entries in the sg_table are contiguous */
-       if (drm_prime_get_contiguous_size(sgt) < attach->dmabuf->size)
-               return ERR_PTR(-EINVAL);
-
-       /* Create a CMA GEM buffer. */
-       cma_obj = __drm_gem_cma_create(dev, attach->dmabuf->size, true);
-       if (IS_ERR(cma_obj))
-               return ERR_CAST(cma_obj);
-
-       cma_obj->paddr = sg_dma_address(sgt->sgl);
-       cma_obj->sgt = sgt;
-
-       DRM_DEBUG_PRIME("dma_addr = %pad, size = %zu\n", &cma_obj->paddr, attach->dmabuf->size);
-
-       return &cma_obj->base;
-}
-EXPORT_SYMBOL_GPL(drm_gem_cma_prime_import_sg_table);
-
-/**
- * drm_gem_cma_vmap - map a CMA GEM object into the kernel's virtual
- *     address space
- * @cma_obj: CMA GEM object
- * @map: Returns the kernel virtual address of the CMA GEM object's backing
- *       store.
- *
- * This function maps a buffer into the kernel's virtual address space.
- * Since the CMA buffers are already mapped into the kernel virtual address
- * space this simply returns the cached virtual address.
- *
- * Returns:
- * 0 on success, or a negative error code otherwise.
- */
-int drm_gem_cma_vmap(struct drm_gem_cma_object *cma_obj,
-                    struct iosys_map *map)
-{
-       iosys_map_set_vaddr(map, cma_obj->vaddr);
-
-       return 0;
-}
-EXPORT_SYMBOL_GPL(drm_gem_cma_vmap);
-
-/**
- * drm_gem_cma_mmap - memory-map an exported CMA GEM object
- * @cma_obj: CMA GEM object
- * @vma: VMA for the area to be mapped
- *
- * This function maps a buffer into a userspace process's address space.
- * In addition to the usual GEM VMA setup it immediately faults in the entire
- * object instead of using on-demand faulting.
- *
- * Returns:
- * 0 on success or a negative error code on failure.
- */
-int drm_gem_cma_mmap(struct drm_gem_cma_object *cma_obj, struct vm_area_struct *vma)
-{
-       struct drm_gem_object *obj = &cma_obj->base;
-       int ret;
-
-       /*
-        * Clear the VM_PFNMAP flag that was set by drm_gem_mmap(), and set the
-        * vm_pgoff (used as a fake buffer offset by DRM) to 0 as we want to map
-        * the whole buffer.
-        */
-       vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node);
-       vma->vm_flags &= ~VM_PFNMAP;
-       vma->vm_flags |= VM_DONTEXPAND;
-
-       if (cma_obj->map_noncoherent) {
-               vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
-
-               ret = dma_mmap_pages(cma_obj->base.dev->dev,
-                                    vma, vma->vm_end - vma->vm_start,
-                                    virt_to_page(cma_obj->vaddr));
-       } else {
-               ret = dma_mmap_wc(cma_obj->base.dev->dev, vma, cma_obj->vaddr,
-                                 cma_obj->paddr, vma->vm_end - vma->vm_start);
-       }
-       if (ret)
-               drm_gem_vm_close(vma);
-
-       return ret;
-}
-EXPORT_SYMBOL_GPL(drm_gem_cma_mmap);
-
-/**
- * drm_gem_cma_prime_import_sg_table_vmap - PRIME import another driver's
- *     scatter/gather table and get the virtual address of the buffer
- * @dev: DRM device
- * @attach: DMA-BUF attachment
- * @sgt: Scatter/gather table of pinned pages
- *
- * This function imports a scatter/gather table using
- * drm_gem_cma_prime_import_sg_table() and uses dma_buf_vmap() to get the kernel
- * virtual address. This ensures that a CMA GEM object always has its virtual
- * 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_DRIVER_OPS_VMAP macro provides a shortcut to set
- * the necessary DRM driver operations.
- *
- * Returns:
- * A pointer to a newly created GEM object or an ERR_PTR-encoded negative
- * error code on failure.
- */
-struct drm_gem_object *
-drm_gem_cma_prime_import_sg_table_vmap(struct drm_device *dev,
-                                      struct dma_buf_attachment *attach,
-                                      struct sg_table *sgt)
-{
-       struct drm_gem_cma_object *cma_obj;
-       struct drm_gem_object *obj;
-       struct iosys_map map;
-       int ret;
-
-       ret = dma_buf_vmap(attach->dmabuf, &map);
-       if (ret) {
-               DRM_ERROR("Failed to vmap PRIME buffer\n");
-               return ERR_PTR(ret);
-       }
-
-       obj = drm_gem_cma_prime_import_sg_table(dev, attach, sgt);
-       if (IS_ERR(obj)) {
-               dma_buf_vunmap(attach->dmabuf, &map);
-               return obj;
-       }
-
-       cma_obj = to_drm_gem_cma_obj(obj);
-       cma_obj->vaddr = map.vaddr;
-
-       return obj;
-}
-EXPORT_SYMBOL(drm_gem_cma_prime_import_sg_table_vmap);
-
-MODULE_DESCRIPTION("DRM CMA memory-management helpers");
-MODULE_IMPORT_NS(DMA_BUF);
-MODULE_LICENSE("GPL");
diff --git a/drivers/gpu/drm/drm_gem_dma_helper.c b/drivers/gpu/drm/drm_gem_dma_helper.c
new file mode 100644 (file)
index 0000000..f1780c0
--- /dev/null
@@ -0,0 +1,602 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * drm gem DMA helper functions
+ *
+ * Copyright (C) 2012 Sascha Hauer, Pengutronix
+ *
+ * Based on Samsung Exynos code
+ *
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd.
+ */
+
+#include <linux/dma-buf.h>
+#include <linux/dma-mapping.h>
+#include <linux/export.h>
+#include <linux/mm.h>
+#include <linux/module.h>
+#include <linux/mutex.h>
+#include <linux/slab.h>
+
+#include <drm/drm.h>
+#include <drm/drm_device.h>
+#include <drm/drm_drv.h>
+#include <drm/drm_gem_dma_helper.h>
+#include <drm/drm_vma_manager.h>
+
+/**
+ * DOC: dma helpers
+ *
+ * The DRM GEM/DMA helpers are a means to provide buffer objects that are
+ * presented to the device as a contiguous chunk of memory. This is useful
+ * for devices that do not support scatter-gather DMA (either directly or
+ * by using an intimately attached IOMMU).
+ *
+ * For devices that access the memory bus through an (external) IOMMU then
+ * the buffer objects are allocated using a traditional page-based
+ * allocator and may be scattered through physical memory. However they
+ * are contiguous in the IOVA space so appear contiguous to devices using
+ * them.
+ *
+ * For other devices then the helpers rely on CMA to provide buffer
+ * objects that are physically contiguous in memory.
+ *
+ * For GEM callback helpers in struct &drm_gem_object functions, see likewise
+ * named functions with an _object_ infix (e.g., drm_gem_dma_object_vmap() wraps
+ * drm_gem_dma_vmap()). These helpers perform the necessary type conversion.
+ */
+
+static const struct drm_gem_object_funcs drm_gem_dma_default_funcs = {
+       .free = drm_gem_dma_object_free,
+       .print_info = drm_gem_dma_object_print_info,
+       .get_sg_table = drm_gem_dma_object_get_sg_table,
+       .vmap = drm_gem_dma_object_vmap,
+       .mmap = drm_gem_dma_object_mmap,
+       .vm_ops = &drm_gem_dma_vm_ops,
+};
+
+/**
+ * __drm_gem_dma_create - Create a GEM DMA object without allocating memory
+ * @drm: DRM device
+ * @size: size of the object to allocate
+ * @private: true if used for internal purposes
+ *
+ * This function creates and initializes a GEM DMA object of the given size,
+ * but doesn't allocate any memory to back the object.
+ *
+ * Returns:
+ * A struct drm_gem_dma_object * on success or an ERR_PTR()-encoded negative
+ * error code on failure.
+ */
+static struct drm_gem_dma_object *
+__drm_gem_dma_create(struct drm_device *drm, size_t size, bool private)
+{
+       struct drm_gem_dma_object *dma_obj;
+       struct drm_gem_object *gem_obj;
+       int ret = 0;
+
+       if (drm->driver->gem_create_object) {
+               gem_obj = drm->driver->gem_create_object(drm, size);
+               if (IS_ERR(gem_obj))
+                       return ERR_CAST(gem_obj);
+               dma_obj = to_drm_gem_dma_obj(gem_obj);
+       } else {
+               dma_obj = kzalloc(sizeof(*dma_obj), GFP_KERNEL);
+               if (!dma_obj)
+                       return ERR_PTR(-ENOMEM);
+               gem_obj = &dma_obj->base;
+       }
+
+       if (!gem_obj->funcs)
+               gem_obj->funcs = &drm_gem_dma_default_funcs;
+
+       if (private) {
+               drm_gem_private_object_init(drm, gem_obj, size);
+
+               /* Always use writecombine for dma-buf mappings */
+               dma_obj->map_noncoherent = false;
+       } else {
+               ret = drm_gem_object_init(drm, gem_obj, size);
+       }
+       if (ret)
+               goto error;
+
+       ret = drm_gem_create_mmap_offset(gem_obj);
+       if (ret) {
+               drm_gem_object_release(gem_obj);
+               goto error;
+       }
+
+       return dma_obj;
+
+error:
+       kfree(dma_obj);
+       return ERR_PTR(ret);
+}
+
+/**
+ * drm_gem_dma_create - allocate an object with the given size
+ * @drm: DRM device
+ * @size: size of the object to allocate
+ *
+ * This function creates a DMA GEM object and allocates memory as backing store.
+ * The allocated memory will occupy a contiguous chunk of bus address space.
+ *
+ * For devices that are directly connected to the memory bus then the allocated
+ * memory will be physically contiguous. For devices that access through an
+ * IOMMU, then the allocated memory is not expected to be physically contiguous
+ * because having contiguous IOVAs is sufficient to meet a devices DMA
+ * requirements.
+ *
+ * Returns:
+ * A struct drm_gem_dma_object * on success or an ERR_PTR()-encoded negative
+ * error code on failure.
+ */
+struct drm_gem_dma_object *drm_gem_dma_create(struct drm_device *drm,
+                                             size_t size)
+{
+       struct drm_gem_dma_object *dma_obj;
+       int ret;
+
+       size = round_up(size, PAGE_SIZE);
+
+       dma_obj = __drm_gem_dma_create(drm, size, false);
+       if (IS_ERR(dma_obj))
+               return dma_obj;
+
+       if (dma_obj->map_noncoherent) {
+               dma_obj->vaddr = dma_alloc_noncoherent(drm->dev, size,
+                                                      &dma_obj->paddr,
+                                                      DMA_TO_DEVICE,
+                                                      GFP_KERNEL | __GFP_NOWARN);
+       } else {
+               dma_obj->vaddr = dma_alloc_wc(drm->dev, size, &dma_obj->paddr,
+                                             GFP_KERNEL | __GFP_NOWARN);
+       }
+       if (!dma_obj->vaddr) {
+               drm_dbg(drm, "failed to allocate buffer with size %zu\n",
+                        size);
+               ret = -ENOMEM;
+               goto error;
+       }
+
+       return dma_obj;
+
+error:
+       drm_gem_object_put(&dma_obj->base);
+       return ERR_PTR(ret);
+}
+EXPORT_SYMBOL_GPL(drm_gem_dma_create);
+
+/**
+ * drm_gem_dma_create_with_handle - allocate an object with the given size and
+ *     return a GEM handle to it
+ * @file_priv: DRM file-private structure to register the handle for
+ * @drm: DRM device
+ * @size: size of the object to allocate
+ * @handle: return location for the GEM handle
+ *
+ * This function creates a DMA GEM object, allocating a chunk of memory as
+ * backing store. The GEM object is then added to the list of object associated
+ * with the given file and a handle to it is returned.
+ *
+ * The allocated memory will occupy a contiguous chunk of bus address space.
+ * See drm_gem_dma_create() for more details.
+ *
+ * Returns:
+ * A struct drm_gem_dma_object * on success or an ERR_PTR()-encoded negative
+ * error code on failure.
+ */
+static struct drm_gem_dma_object *
+drm_gem_dma_create_with_handle(struct drm_file *file_priv,
+                              struct drm_device *drm, size_t size,
+                              uint32_t *handle)
+{
+       struct drm_gem_dma_object *dma_obj;
+       struct drm_gem_object *gem_obj;
+       int ret;
+
+       dma_obj = drm_gem_dma_create(drm, size);
+       if (IS_ERR(dma_obj))
+               return dma_obj;
+
+       gem_obj = &dma_obj->base;
+
+       /*
+        * allocate a id of idr table where the obj is registered
+        * and handle has the id what user can see.
+        */
+       ret = drm_gem_handle_create(file_priv, gem_obj, handle);
+       /* drop reference from allocate - handle holds it now. */
+       drm_gem_object_put(gem_obj);
+       if (ret)
+               return ERR_PTR(ret);
+
+       return dma_obj;
+}
+
+/**
+ * drm_gem_dma_free - free resources associated with a DMA GEM object
+ * @dma_obj: DMA GEM object to free
+ *
+ * This function frees the backing memory of the DMA GEM object, cleans up the
+ * GEM object state and frees the memory used to store the object itself.
+ * If the buffer is imported and the virtual address is set, it is released.
+ */
+void drm_gem_dma_free(struct drm_gem_dma_object *dma_obj)
+{
+       struct drm_gem_object *gem_obj = &dma_obj->base;
+       struct iosys_map map = IOSYS_MAP_INIT_VADDR(dma_obj->vaddr);
+
+       if (gem_obj->import_attach) {
+               if (dma_obj->vaddr)
+                       dma_buf_vunmap(gem_obj->import_attach->dmabuf, &map);
+               drm_prime_gem_destroy(gem_obj, dma_obj->sgt);
+       } else if (dma_obj->vaddr) {
+               if (dma_obj->map_noncoherent)
+                       dma_free_noncoherent(gem_obj->dev->dev, dma_obj->base.size,
+                                            dma_obj->vaddr, dma_obj->paddr,
+                                            DMA_TO_DEVICE);
+               else
+                       dma_free_wc(gem_obj->dev->dev, dma_obj->base.size,
+                                   dma_obj->vaddr, dma_obj->paddr);
+       }
+
+       drm_gem_object_release(gem_obj);
+
+       kfree(dma_obj);
+}
+EXPORT_SYMBOL_GPL(drm_gem_dma_free);
+
+/**
+ * drm_gem_dma_dumb_create_internal - create a dumb buffer object
+ * @file_priv: DRM file-private structure to create the dumb buffer for
+ * @drm: DRM device
+ * @args: IOCTL data
+ *
+ * This aligns the pitch and size arguments to the minimum required. This is
+ * an internal helper that can be wrapped by a driver to account for hardware
+ * with more specific alignment requirements. It should not be used directly
+ * as their &drm_driver.dumb_create callback.
+ *
+ * Returns:
+ * 0 on success or a negative error code on failure.
+ */
+int drm_gem_dma_dumb_create_internal(struct drm_file *file_priv,
+                                    struct drm_device *drm,
+                                    struct drm_mode_create_dumb *args)
+{
+       unsigned int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8);
+       struct drm_gem_dma_object *dma_obj;
+
+       if (args->pitch < min_pitch)
+               args->pitch = min_pitch;
+
+       if (args->size < args->pitch * args->height)
+               args->size = args->pitch * args->height;
+
+       dma_obj = drm_gem_dma_create_with_handle(file_priv, drm, args->size,
+                                                &args->handle);
+       return PTR_ERR_OR_ZERO(dma_obj);
+}
+EXPORT_SYMBOL_GPL(drm_gem_dma_dumb_create_internal);
+
+/**
+ * drm_gem_dma_dumb_create - create a dumb buffer object
+ * @file_priv: DRM file-private structure to create the dumb buffer for
+ * @drm: DRM device
+ * @args: IOCTL data
+ *
+ * This function computes the pitch of the dumb buffer and rounds it up to an
+ * integer number of bytes per pixel. Drivers for hardware that doesn't have
+ * any additional restrictions on the pitch can directly use this function as
+ * their &drm_driver.dumb_create callback.
+ *
+ * For hardware with additional restrictions, drivers can adjust the fields
+ * set up by userspace and pass the IOCTL data along to the
+ * drm_gem_dma_dumb_create_internal() function.
+ *
+ * Returns:
+ * 0 on success or a negative error code on failure.
+ */
+int drm_gem_dma_dumb_create(struct drm_file *file_priv,
+                           struct drm_device *drm,
+                           struct drm_mode_create_dumb *args)
+{
+       struct drm_gem_dma_object *dma_obj;
+
+       args->pitch = DIV_ROUND_UP(args->width * args->bpp, 8);
+       args->size = args->pitch * args->height;
+
+       dma_obj = drm_gem_dma_create_with_handle(file_priv, drm, args->size,
+                                                &args->handle);
+       return PTR_ERR_OR_ZERO(dma_obj);
+}
+EXPORT_SYMBOL_GPL(drm_gem_dma_dumb_create);
+
+const struct vm_operations_struct drm_gem_dma_vm_ops = {
+       .open = drm_gem_vm_open,
+       .close = drm_gem_vm_close,
+};
+EXPORT_SYMBOL_GPL(drm_gem_dma_vm_ops);
+
+#ifndef CONFIG_MMU
+/**
+ * drm_gem_dma_get_unmapped_area - propose address for mapping in noMMU cases
+ * @filp: file object
+ * @addr: memory address
+ * @len: buffer size
+ * @pgoff: page offset
+ * @flags: memory flags
+ *
+ * This function is used in noMMU platforms to propose address mapping
+ * for a given buffer.
+ * It's intended to be used as a direct handler for the struct
+ * &file_operations.get_unmapped_area operation.
+ *
+ * Returns:
+ * mapping address on success or a negative error code on failure.
+ */
+unsigned long drm_gem_dma_get_unmapped_area(struct file *filp,
+                                           unsigned long addr,
+                                           unsigned long len,
+                                           unsigned long pgoff,
+                                           unsigned long flags)
+{
+       struct drm_gem_dma_object *dma_obj;
+       struct drm_gem_object *obj = NULL;
+       struct drm_file *priv = filp->private_data;
+       struct drm_device *dev = priv->minor->dev;
+       struct drm_vma_offset_node *node;
+
+       if (drm_dev_is_unplugged(dev))
+               return -ENODEV;
+
+       drm_vma_offset_lock_lookup(dev->vma_offset_manager);
+       node = drm_vma_offset_exact_lookup_locked(dev->vma_offset_manager,
+                                                 pgoff,
+                                                 len >> PAGE_SHIFT);
+       if (likely(node)) {
+               obj = container_of(node, struct drm_gem_object, vma_node);
+               /*
+                * When the object is being freed, after it hits 0-refcnt it
+                * proceeds to tear down the object. In the process it will
+                * attempt to remove the VMA offset and so acquire this
+                * mgr->vm_lock.  Therefore if we find an object with a 0-refcnt
+                * that matches our range, we know it is in the process of being
+                * destroyed and will be freed as soon as we release the lock -
+                * so we have to check for the 0-refcnted object and treat it as
+                * invalid.
+                */
+               if (!kref_get_unless_zero(&obj->refcount))
+                       obj = NULL;
+       }
+
+       drm_vma_offset_unlock_lookup(dev->vma_offset_manager);
+
+       if (!obj)
+               return -EINVAL;
+
+       if (!drm_vma_node_is_allowed(node, priv)) {
+               drm_gem_object_put(obj);
+               return -EACCES;
+       }
+
+       dma_obj = to_drm_gem_dma_obj(obj);
+
+       drm_gem_object_put(obj);
+
+       return dma_obj->vaddr ? (unsigned long)dma_obj->vaddr : -EINVAL;
+}
+EXPORT_SYMBOL_GPL(drm_gem_dma_get_unmapped_area);
+#endif
+
+/**
+ * drm_gem_dma_print_info() - Print &drm_gem_dma_object info for debugfs
+ * @dma_obj: DMA GEM object
+ * @p: DRM printer
+ * @indent: Tab indentation level
+ *
+ * This function prints paddr and vaddr for use in e.g. debugfs output.
+ */
+void drm_gem_dma_print_info(const struct drm_gem_dma_object *dma_obj,
+                           struct drm_printer *p, unsigned int indent)
+{
+       drm_printf_indent(p, indent, "paddr=%pad\n", &dma_obj->paddr);
+       drm_printf_indent(p, indent, "vaddr=%p\n", dma_obj->vaddr);
+}
+EXPORT_SYMBOL(drm_gem_dma_print_info);
+
+/**
+ * drm_gem_dma_get_sg_table - provide a scatter/gather table of pinned
+ *     pages for a DMA GEM object
+ * @dma_obj: DMA GEM object
+ *
+ * This function exports a scatter/gather table by calling the standard
+ * DMA mapping API.
+ *
+ * Returns:
+ * A pointer to the scatter/gather table of pinned pages or NULL on failure.
+ */
+struct sg_table *drm_gem_dma_get_sg_table(struct drm_gem_dma_object *dma_obj)
+{
+       struct drm_gem_object *obj = &dma_obj->base;
+       struct sg_table *sgt;
+       int ret;
+
+       sgt = kzalloc(sizeof(*sgt), GFP_KERNEL);
+       if (!sgt)
+               return ERR_PTR(-ENOMEM);
+
+       ret = dma_get_sgtable(obj->dev->dev, sgt, dma_obj->vaddr,
+                             dma_obj->paddr, obj->size);
+       if (ret < 0)
+               goto out;
+
+       return sgt;
+
+out:
+       kfree(sgt);
+       return ERR_PTR(ret);
+}
+EXPORT_SYMBOL_GPL(drm_gem_dma_get_sg_table);
+
+/**
+ * drm_gem_dma_prime_import_sg_table - produce a DMA GEM object from another
+ *     driver's scatter/gather table of pinned pages
+ * @dev: device to import into
+ * @attach: DMA-BUF attachment
+ * @sgt: scatter/gather table of pinned pages
+ *
+ * This function imports a scatter/gather table exported via DMA-BUF by
+ * another driver. Imported buffers must be physically contiguous in memory
+ * (i.e. the scatter/gather table must contain a single entry). Drivers that
+ * use the DMA helpers should set this as their
+ * &drm_driver.gem_prime_import_sg_table callback.
+ *
+ * Returns:
+ * A pointer to a newly created GEM object or an ERR_PTR-encoded negative
+ * error code on failure.
+ */
+struct drm_gem_object *
+drm_gem_dma_prime_import_sg_table(struct drm_device *dev,
+                                 struct dma_buf_attachment *attach,
+                                 struct sg_table *sgt)
+{
+       struct drm_gem_dma_object *dma_obj;
+
+       /* check if the entries in the sg_table are contiguous */
+       if (drm_prime_get_contiguous_size(sgt) < attach->dmabuf->size)
+               return ERR_PTR(-EINVAL);
+
+       /* Create a DMA GEM buffer. */
+       dma_obj = __drm_gem_dma_create(dev, attach->dmabuf->size, true);
+       if (IS_ERR(dma_obj))
+               return ERR_CAST(dma_obj);
+
+       dma_obj->paddr = sg_dma_address(sgt->sgl);
+       dma_obj->sgt = sgt;
+
+       DRM_DEBUG_PRIME("dma_addr = %pad, size = %zu\n", &dma_obj->paddr, attach->dmabuf->size);
+
+       return &dma_obj->base;
+}
+EXPORT_SYMBOL_GPL(drm_gem_dma_prime_import_sg_table);
+
+/**
+ * drm_gem_dma_vmap - map a DMA GEM object into the kernel's virtual
+ *     address space
+ * @dma_obj: DMA GEM object
+ * @map: Returns the kernel virtual address of the DMA GEM object's backing
+ *       store.
+ *
+ * This function maps a buffer into the kernel's virtual address space.
+ * Since the DMA buffers are already mapped into the kernel virtual address
+ * space this simply returns the cached virtual address.
+ *
+ * Returns:
+ * 0 on success, or a negative error code otherwise.
+ */
+int drm_gem_dma_vmap(struct drm_gem_dma_object *dma_obj,
+                    struct iosys_map *map)
+{
+       iosys_map_set_vaddr(map, dma_obj->vaddr);
+
+       return 0;
+}
+EXPORT_SYMBOL_GPL(drm_gem_dma_vmap);
+
+/**
+ * drm_gem_dma_mmap - memory-map an exported DMA GEM object
+ * @dma_obj: DMA GEM object
+ * @vma: VMA for the area to be mapped
+ *
+ * This function maps a buffer into a userspace process's address space.
+ * In addition to the usual GEM VMA setup it immediately faults in the entire
+ * object instead of using on-demand faulting.
+ *
+ * Returns:
+ * 0 on success or a negative error code on failure.
+ */
+int drm_gem_dma_mmap(struct drm_gem_dma_object *dma_obj, struct vm_area_struct *vma)
+{
+       struct drm_gem_object *obj = &dma_obj->base;
+       int ret;
+
+       /*
+        * Clear the VM_PFNMAP flag that was set by drm_gem_mmap(), and set the
+        * vm_pgoff (used as a fake buffer offset by DRM) to 0 as we want to map
+        * the whole buffer.
+        */
+       vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node);
+       vma->vm_flags &= ~VM_PFNMAP;
+       vma->vm_flags |= VM_DONTEXPAND;
+
+       if (dma_obj->map_noncoherent) {
+               vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
+
+               ret = dma_mmap_pages(dma_obj->base.dev->dev,
+                                    vma, vma->vm_end - vma->vm_start,
+                                    virt_to_page(dma_obj->vaddr));
+       } else {
+               ret = dma_mmap_wc(dma_obj->base.dev->dev, vma, dma_obj->vaddr,
+                                 dma_obj->paddr, vma->vm_end - vma->vm_start);
+       }
+       if (ret)
+               drm_gem_vm_close(vma);
+
+       return ret;
+}
+EXPORT_SYMBOL_GPL(drm_gem_dma_mmap);
+
+/**
+ * drm_gem_dma_prime_import_sg_table_vmap - PRIME import another driver's
+ *     scatter/gather table and get the virtual address of the buffer
+ * @dev: DRM device
+ * @attach: DMA-BUF attachment
+ * @sgt: Scatter/gather table of pinned pages
+ *
+ * This function imports a scatter/gather table using
+ * drm_gem_dma_prime_import_sg_table() and uses dma_buf_vmap() to get the kernel
+ * virtual address. This ensures that a DMA GEM object always has its virtual
+ * 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_DMA_DRIVER_OPS_VMAP macro provides a shortcut to set
+ * the necessary DRM driver operations.
+ *
+ * Returns:
+ * A pointer to a newly created GEM object or an ERR_PTR-encoded negative
+ * error code on failure.
+ */
+struct drm_gem_object *
+drm_gem_dma_prime_import_sg_table_vmap(struct drm_device *dev,
+                                      struct dma_buf_attachment *attach,
+                                      struct sg_table *sgt)
+{
+       struct drm_gem_dma_object *dma_obj;
+       struct drm_gem_object *obj;
+       struct iosys_map map;
+       int ret;
+
+       ret = dma_buf_vmap(attach->dmabuf, &map);
+       if (ret) {
+               DRM_ERROR("Failed to vmap PRIME buffer\n");
+               return ERR_PTR(ret);
+       }
+
+       obj = drm_gem_dma_prime_import_sg_table(dev, attach, sgt);
+       if (IS_ERR(obj)) {
+               dma_buf_vunmap(attach->dmabuf, &map);
+               return obj;
+       }
+
+       dma_obj = to_drm_gem_dma_obj(obj);
+       dma_obj->vaddr = map.vaddr;
+
+       return obj;
+}
+EXPORT_SYMBOL(drm_gem_dma_prime_import_sg_table_vmap);
+
+MODULE_DESCRIPTION("DRM DMA memory-management helpers");
+MODULE_IMPORT_NS(DMA_BUF);
+MODULE_LICENSE("GPL");
index 2f61f53d472f129000433ce862d9c7e3981668d5..2ecaf3cb7afb36984d2eac57bb3c28d6837697e6 100644 (file)
@@ -1136,7 +1136,7 @@ int mipi_dbi_spi_init(struct spi_device *spi, struct mipi_dbi *dbi,
        /*
         * Even though it's not the SPI device that does DMA (the master does),
         * the dma mask is necessary for the dma_alloc_wc() in the GEM code
-        * (e.g., drm_gem_cma_create()). The dma_addr returned will be a physical
+        * (e.g., drm_gem_dma_create()). The dma_addr returned will be a physical
         * address which might be different from the bus address, but this is
         * not a problem since the address will not be used.
         * The virtual address is used in the transfer and the SPI core
index e95e96c565baac10268174e291d29f8f25b8e317..5ca71ef87325906ded46d6c25e19e146cb3bf945 100644 (file)
@@ -3,7 +3,7 @@ config DRM_FSL_DCU
        tristate "DRM Support for Freescale DCU"
        depends on DRM && OF && ARM && COMMON_CLK
        select BACKLIGHT_CLASS_DEVICE
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_KMS_HELPER
        select DRM_PANEL
        select REGMAP_MMIO
index 4baa4977e47348a4b5556fee4b70afe37bfa8ee3..b4acc3422ba4501b6c678a99e5620a8efa1ec26c 100644 (file)
@@ -21,7 +21,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_modeset_helper.h>
 #include <drm/drm_module.h>
 #include <drm/drm_probe_helper.h>
@@ -149,13 +149,13 @@ static void fsl_dcu_unload(struct drm_device *dev)
        dev->dev_private = NULL;
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
+DEFINE_DRM_GEM_DMA_FOPS(fsl_dcu_drm_fops);
 
 static const struct drm_driver fsl_dcu_drm_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .load                   = fsl_dcu_load,
        .unload                 = fsl_dcu_unload,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
        .fops                   = &fsl_dcu_drm_fops,
        .name                   = "fsl-dcu-drm",
        .desc                   = "Freescale DCU DRM",
index aba2b714e8a6d31586df34e503e7091886272c6a..48c98331a3c0a8d482e622e2924654652c9a9247 100644 (file)
@@ -13,7 +13,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_plane_helper.h>
 #include <drm/drm_probe_helper.h>
 
@@ -84,7 +84,7 @@ static void fsl_dcu_drm_plane_atomic_update(struct drm_plane *plane,
        struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state,
                                                                           plane);
        struct drm_framebuffer *fb = plane->state->fb;
-       struct drm_gem_cma_object *gem;
+       struct drm_gem_dma_object *gem;
        unsigned int alpha = DCU_LAYER_AB_NONE, bpp;
        int index;
 
index b770f7662830836b1c7b79ff9cff728938b54563..c5265675bf0ceb9894ec97f93df56d83b53d359e 100644 (file)
@@ -3,7 +3,7 @@ config DRM_HISI_KIRIN
        tristate "DRM Support for Hisilicon Kirin series SoCs Platform"
        depends on DRM && OF && ARM64
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_MIPI_DSI
        help
          Choose this option if you have a hisilicon Kirin chipsets(hi6220).
index c5d304826c3b6bf9f806755704a65f4f00a8a896..9666d71a83ccb529a6d86015a193fd21c642a3fa 100644 (file)
@@ -27,7 +27,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_vblank.h>
 #include <drm/drm_gem_framebuffer_helper.h>
@@ -548,7 +548,7 @@ static const struct drm_crtc_funcs ade_crtc_funcs = {
 static void ade_rdma_set(void __iomem *base, struct drm_framebuffer *fb,
                         u32 ch, u32 y, u32 in_h, u32 fmt)
 {
-       struct drm_gem_cma_object *obj = drm_fb_dma_get_gem_obj(fb, 0);
+       struct drm_gem_dma_object *obj = drm_fb_dma_get_gem_obj(fb, 0);
        u32 reg_ctrl, reg_addr, reg_size, reg_stride, reg_space, reg_en;
        u32 stride = fb->pitches[0];
        u32 addr = (u32)obj->paddr + y * stride;
@@ -919,12 +919,12 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
 
 };
 
-DEFINE_DRM_GEM_CMA_FOPS(ade_fops);
+DEFINE_DRM_GEM_DMA_FOPS(ade_fops);
 
 static const struct drm_driver ade_driver = {
        .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops = &ade_fops,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
        .name = "kirin",
        .desc = "Hisilicon Kirin620 SoC DRM Driver",
        .date = "20150718",
index e8b0fe9709694197826ce420829104f2e9548830..73ee7f25f7346f3caf5a7e7b5882dbaae0a1a9f4 100644 (file)
@@ -20,7 +20,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_module.h>
 #include <drm/drm_of.h>
index bb9738c7c825d5e46328e6e754028e505787bc45..975de4ff7313cb9dbd5e206f7f327d1aa4a3faf2 100644 (file)
@@ -3,7 +3,7 @@ config DRM_IMX
        tristate "DRM Support for Freescale i.MX"
        select DRM_KMS_HELPER
        select VIDEOMODE_HELPERS
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_KMS_HELPER
        depends on DRM && (ARCH_MXC || ARCH_MULTIPLATFORM || COMPILE_TEST)
        depends on IMX_IPUV3_CORE
index 5c2b2277afbf54510aad9ece357ef09b517a9013..3ffc061d392bbaee2a2d044c8308c74f5168fd45 100644 (file)
@@ -2,7 +2,7 @@ config DRM_IMX_DCSS
        tristate "i.MX8MQ DCSS"
        select IMX_IRQSTEER
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select VIDEOMODE_HELPERS
        depends on DRM && ARCH_MXC && ARM64
        help
index 9b84df34a6a12bbe8cd2f5b76948525749f90324..f50814e9d5493010be22591e1b267d742a04c56f 100644 (file)
@@ -8,7 +8,7 @@
 #include <drm/drm_bridge_connector.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
@@ -17,7 +17,7 @@
 #include "dcss-dev.h"
 #include "dcss-kms.h"
 
-DEFINE_DRM_GEM_CMA_FOPS(dcss_cma_fops);
+DEFINE_DRM_GEM_DMA_FOPS(dcss_cma_fops);
 
 static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
        .fb_create = drm_gem_fb_create,
@@ -28,7 +28,7 @@ static const struct drm_mode_config_funcs dcss_drm_mode_config_funcs = {
 
 static const struct drm_driver dcss_kms_driver = {
        .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
        .fops                   = &dcss_cma_fops,
        .name                   = "imx-dcss",
        .desc                   = "i.MX8MQ Display Subsystem",
index a333c13c9ebc8b1b0639c4d3da03ee968d0e8883..4c41c93ac900cb1dda7b8341eabdbd74d95591f8 100644 (file)
@@ -9,7 +9,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 
 #include "dcss-dev.h"
 #include "dcss-kms.h"
@@ -147,7 +147,7 @@ static int dcss_plane_atomic_check(struct drm_plane *plane,
        struct dcss_dev *dcss = plane->dev->dev_private;
        struct drm_framebuffer *fb = new_plane_state->fb;
        bool is_primary_plane = plane->type == DRM_PLANE_TYPE_PRIMARY;
-       struct drm_gem_cma_object *cma_obj;
+       struct drm_gem_dma_object *dma_obj;
        struct drm_crtc_state *crtc_state;
        int hdisplay, vdisplay;
        int min, max;
@@ -156,8 +156,8 @@ static int dcss_plane_atomic_check(struct drm_plane *plane,
        if (!fb || !new_plane_state->crtc)
                return 0;
 
-       cma_obj = drm_fb_dma_get_gem_obj(fb, 0);
-       WARN_ON(!cma_obj);
+       dma_obj = drm_fb_dma_get_gem_obj(fb, 0);
+       WARN_ON(!dma_obj);
 
        crtc_state = drm_atomic_get_existing_crtc_state(state,
                                                        new_plane_state->crtc);
@@ -218,26 +218,26 @@ static void dcss_plane_atomic_set_base(struct dcss_plane *dcss_plane)
        struct dcss_dev *dcss = plane->dev->dev_private;
        struct drm_framebuffer *fb = state->fb;
        const struct drm_format_info *format = fb->format;
-       struct drm_gem_cma_object *cma_obj = drm_fb_dma_get_gem_obj(fb, 0);
+       struct drm_gem_dma_object *dma_obj = drm_fb_dma_get_gem_obj(fb, 0);
        unsigned long p1_ba = 0, p2_ba = 0;
 
        if (!format->is_yuv ||
            format->format == DRM_FORMAT_NV12 ||
            format->format == DRM_FORMAT_NV21)
-               p1_ba = cma_obj->paddr + fb->offsets[0] +
+               p1_ba = dma_obj->paddr + fb->offsets[0] +
                        fb->pitches[0] * (state->src.y1 >> 16) +
                        format->char_per_block[0] * (state->src.x1 >> 16);
        else if (format->format == DRM_FORMAT_UYVY ||
                 format->format == DRM_FORMAT_VYUY ||
                 format->format == DRM_FORMAT_YUYV ||
                 format->format == DRM_FORMAT_YVYU)
-               p1_ba = cma_obj->paddr + fb->offsets[0] +
+               p1_ba = dma_obj->paddr + fb->offsets[0] +
                        fb->pitches[0] * (state->src.y1 >> 16) +
                        2 * format->char_per_block[0] * (state->src.x1 >> 17);
 
        if (format->format == DRM_FORMAT_NV12 ||
            format->format == DRM_FORMAT_NV21)
-               p2_ba = cma_obj->paddr + fb->offsets[1] +
+               p2_ba = dma_obj->paddr + fb->offsets[1] +
                        (((fb->pitches[1] >> 1) * (state->src.y1 >> 17) +
                        (state->src.x1 >> 17)) << 1);
 
index e43345bd1346c4187db75323798b6852ec07b464..8dd8b0f912af68aa60e475a2a122abd21ff1fc10 100644 (file)
@@ -17,7 +17,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_of.h>
@@ -32,7 +32,7 @@
 static int legacyfb_depth = 16;
 module_param(legacyfb_depth, int, 0444);
 
-DEFINE_DRM_GEM_CMA_FOPS(imx_drm_driver_fops);
+DEFINE_DRM_GEM_DMA_FOPS(imx_drm_driver_fops);
 
 void imx_drm_connector_destroy(struct drm_connector *connector)
 {
@@ -152,7 +152,7 @@ static int imx_drm_dumb_create(struct drm_file *file_priv,
 
        args->width = ALIGN(width, 8);
 
-       ret = drm_gem_cma_dumb_create(file_priv, drm, args);
+       ret = drm_gem_dma_dumb_create(file_priv, drm, args);
        if (ret)
                return ret;
 
@@ -162,7 +162,7 @@ static int imx_drm_dumb_create(struct drm_file *file_priv,
 
 static const struct drm_driver imx_drm_driver = {
        .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
-       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(imx_drm_dumb_create),
+       DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE(imx_drm_dumb_create),
        .ioctls                 = imx_drm_ioctls,
        .num_ioctls             = ARRAY_SIZE(imx_drm_ioctls),
        .fops                   = &imx_drm_driver_fops,
index c3e1a3f14d30cd00de6bdb9352a9d29f90c853ac..e721bebda2bddaf0a7b19187c306d04dadf140fb 100644 (file)
@@ -32,7 +32,7 @@ extern struct platform_driver ipu_drm_driver;
 
 void imx_drm_mode_config_init(struct drm_device *drm);
 
-struct drm_gem_cma_object *imx_drm_fb_get_obj(struct drm_framebuffer *fb);
+struct drm_gem_dma_object *imx_drm_fb_get_obj(struct drm_framebuffer *fb);
 
 int imx_drm_encoder_parse_of(struct drm_device *drm,
        struct drm_encoder *encoder, struct device_node *np);
index d9f832f952c23c4c580ef8573a0fd6dfe3fe374d..5f26090b0c9850a541d563d0648e103a50f72816 100644 (file)
@@ -18,7 +18,7 @@
 
 #include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_vblank.h>
index 27bd164180028d4ed82b4d7b9203bf84eb20ffdf..07c0b9def38372503d293db07f937b8d5a984073 100644 (file)
@@ -12,7 +12,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 
 #include <video/imx-ipu-v3.h>
@@ -125,14 +125,14 @@ static inline unsigned long
 drm_plane_state_to_eba(struct drm_plane_state *state, int plane)
 {
        struct drm_framebuffer *fb = state->fb;
-       struct drm_gem_cma_object *cma_obj;
+       struct drm_gem_dma_object *dma_obj;
        int x = state->src.x1 >> 16;
        int y = state->src.y1 >> 16;
 
-       cma_obj = drm_fb_dma_get_gem_obj(fb, plane);
-       BUG_ON(!cma_obj);
+       dma_obj = drm_fb_dma_get_gem_obj(fb, plane);
+       BUG_ON(!dma_obj);
 
-       return cma_obj->paddr + fb->offsets[plane] + fb->pitches[plane] * y +
+       return dma_obj->paddr + fb->offsets[plane] + fb->pitches[plane] * y +
               fb->format->cpp[plane] * x;
 }
 
@@ -140,18 +140,18 @@ static inline unsigned long
 drm_plane_state_to_ubo(struct drm_plane_state *state)
 {
        struct drm_framebuffer *fb = state->fb;
-       struct drm_gem_cma_object *cma_obj;
+       struct drm_gem_dma_object *dma_obj;
        unsigned long eba = drm_plane_state_to_eba(state, 0);
        int x = state->src.x1 >> 16;
        int y = state->src.y1 >> 16;
 
-       cma_obj = drm_fb_dma_get_gem_obj(fb, 1);
-       BUG_ON(!cma_obj);
+       dma_obj = drm_fb_dma_get_gem_obj(fb, 1);
+       BUG_ON(!dma_obj);
 
        x /= fb->format->hsub;
        y /= fb->format->vsub;
 
-       return cma_obj->paddr + fb->offsets[1] + fb->pitches[1] * y +
+       return dma_obj->paddr + fb->offsets[1] + fb->pitches[1] * y +
               fb->format->cpp[1] * x - eba;
 }
 
@@ -159,18 +159,18 @@ static inline unsigned long
 drm_plane_state_to_vbo(struct drm_plane_state *state)
 {
        struct drm_framebuffer *fb = state->fb;
-       struct drm_gem_cma_object *cma_obj;
+       struct drm_gem_dma_object *dma_obj;
        unsigned long eba = drm_plane_state_to_eba(state, 0);
        int x = state->src.x1 >> 16;
        int y = state->src.y1 >> 16;
 
-       cma_obj = drm_fb_dma_get_gem_obj(fb, 2);
-       BUG_ON(!cma_obj);
+       dma_obj = drm_fb_dma_get_gem_obj(fb, 2);
+       BUG_ON(!dma_obj);
 
        x /= fb->format->hsub;
        y /= fb->format->vsub;
 
-       return cma_obj->paddr + fb->offsets[2] + fb->pitches[2] * y +
+       return dma_obj->paddr + fb->offsets[2] + fb->pitches[2] * y +
               fb->format->cpp[2] * x - eba;
 }
 
index 090830bcbde7f32572333057d85b70889dd80a10..a53f475d33df32214da166cd2449cf8591c537b4 100644 (file)
@@ -8,7 +8,7 @@ config DRM_INGENIC
        select DRM_BRIDGE
        select DRM_PANEL_BRIDGE
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select VT_HW_CONSOLE_BINDING if FRAMEBUFFER_CONSOLE
        help
          Choose this option for DRM support for the Ingenic SoCs.
index 1dd78145b4b938010557630ec9b8057a38fcc5e4..ab0515d2c420a20964d56547c56dbea2f179df18 100644 (file)
@@ -30,7 +30,7 @@
 #include <drm/drm_damage_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_encoder.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
@@ -914,7 +914,7 @@ static struct drm_gem_object *
 ingenic_drm_gem_create_object(struct drm_device *drm, size_t size)
 {
        struct ingenic_drm *priv = drm_device_get_priv(drm);
-       struct drm_gem_cma_object *obj;
+       struct drm_gem_dma_object *obj;
 
        obj = kzalloc(sizeof(*obj), GFP_KERNEL);
        if (!obj)
@@ -947,7 +947,7 @@ static void ingenic_drm_destroy_state(struct drm_private_obj *obj,
        kfree(priv_state);
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(ingenic_drm_fops);
+DEFINE_DRM_GEM_DMA_FOPS(ingenic_drm_fops);
 
 static const struct drm_driver ingenic_drm_driver_data = {
        .driver_features        = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
@@ -960,7 +960,7 @@ static const struct drm_driver ingenic_drm_driver_data = {
 
        .fops                   = &ingenic_drm_fops,
        .gem_create_object      = ingenic_drm_gem_create_object,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
 };
 
 static const struct drm_plane_funcs ingenic_drm_primary_plane_funcs = {
index 21052600cef4c9188d7b6cd44bcab4c015b67c4e..7a43505011a571c862dafcc41d55c5529dac01d0 100644 (file)
@@ -26,7 +26,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_plane.h>
 #include <drm/drm_property.h>
index 5fdd43dad507a1b71cdc698d840b072bcf96e112..fd011367db1d41599c4bdcad4b1164e1fc75834d 100644 (file)
@@ -3,7 +3,7 @@ config DRM_KMB_DISPLAY
        depends on DRM
        depends on ARCH_KEEMBAY || COMPILE_TEST
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_MIPI_DSI
        help
        Choose this option if you have Intel's KeemBay SOC which integrates
index 76fef0880504ead8eb4709e11c7623875eb1f844..2382ccb3ee99dd21abd30c5ee71dfa615aec631b 100644 (file)
@@ -16,7 +16,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_module.h>
 #include <drm/drm_probe_helper.h>
@@ -433,14 +433,14 @@ static void kmb_irq_uninstall(struct drm_device *drm)
        free_irq(kmb->irq_lcd, drm);
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(fops);
+DEFINE_DRM_GEM_DMA_FOPS(fops);
 
 static const struct drm_driver kmb_driver = {
        .driver_features = DRIVER_GEM |
            DRIVER_MODESET | DRIVER_ATOMIC,
        /* GEM Operations */
        .fops = &fops,
-       DRM_GEM_CMA_DRIVER_OPS_VMAP,
+       DRM_GEM_DMA_DRIVER_OPS_VMAP,
        .name = "kmb-drm",
        .desc = "KEEMBAY DISPLAY DRIVER",
        .date = DRIVER_DATE,
index ca3246e48e45b83762bc0c68ce8b3cdaa0e1d63d..a42f63f6f95737d7a1a6fd0eb3bf12e9acd1b925 100644 (file)
@@ -12,7 +12,7 @@
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 
 #include "kmb_drv.h"
index 73be27cc749c63ed22730f10129bc11787170608..fa7a883688094c8176b6222f79eed6b761e5466b 100644 (file)
@@ -4,6 +4,6 @@ config DRM_LOGICVC
        depends on OF || COMPILE_TEST
        select DRM_KMS_HELPER
        select DRM_KMS_DMA_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        help
          DRM display driver for the logiCVC programmable logic block from Xylon
index c94bb9bb456bc92801482f82c6b560db22350ef1..43a675d03808fbff4249a6aa915726f7e2443282 100644 (file)
@@ -12,7 +12,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_drv.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_print.h>
 #include <drm/drm_vblank.h>
 
index 65a050176c3370b7e6254a6387ea41a602a67240..cc9a4e965f779865999ee977f7e2b6816d5430bc 100644 (file)
@@ -18,7 +18,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_print.h>
 
 #include "logicvc_crtc.h"
@@ -29,9 +29,9 @@
 #include "logicvc_of.h"
 #include "logicvc_regs.h"
 
-DEFINE_DRM_GEM_CMA_FOPS(logicvc_drm_fops);
+DEFINE_DRM_GEM_DMA_FOPS(logicvc_drm_fops);
 
-static int logicvc_drm_gem_cma_dumb_create(struct drm_file *file_priv,
+static int logicvc_drm_gem_dma_dumb_create(struct drm_file *file_priv,
                                           struct drm_device *drm_dev,
                                           struct drm_mode_create_dumb *args)
 {
@@ -40,7 +40,7 @@ static int logicvc_drm_gem_cma_dumb_create(struct drm_file *file_priv,
        /* Stride is always fixed to its configuration value. */
        args->pitch = logicvc->config.row_stride * DIV_ROUND_UP(args->bpp, 8);
 
-       return drm_gem_cma_dumb_create_internal(file_priv, drm_dev, args);
+       return drm_gem_dma_dumb_create_internal(file_priv, drm_dev, args);
 }
 
 static struct drm_driver logicvc_drm_driver = {
@@ -54,7 +54,7 @@ static struct drm_driver logicvc_drm_driver = {
        .major                          = 1,
        .minor                          = 0,
 
-       DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(logicvc_drm_gem_cma_dumb_create),
+       DRM_GEM_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(logicvc_drm_gem_dma_dumb_create),
 };
 
 static struct regmap_config logicvc_drm_regmap_config = {
index c73592f6c406796da2d57c58a56cf9b10ee299b3..815cebb4c4ca168c212b85c08cd4c1799248f0e5 100644 (file)
@@ -12,7 +12,7 @@
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_encoder.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_modeset_helper_vtables.h>
 #include <drm/drm_of.h>
 #include <drm/drm_panel.h>
index c59da7039dc120958d1c132ee2c26a9fe5ac6f21..d8207ffda1af9e32f49ce974631fd80deaca83b0 100644 (file)
@@ -11,7 +11,7 @@
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_mode_config.h>
 #include <drm/drm_panel.h>
index d0bf1bc8da3fec56c9d0367238b4698ef2710dc4..4f3d68e11bc123a1bf35661446ea8ba974b9a159 100644 (file)
@@ -10,7 +10,7 @@ config DRM_MCDE
        select DRM_BRIDGE
        select DRM_PANEL_BRIDGE
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select VT_HW_CONSOLE_BINDING if FRAMEBUFFER_CONSOLE
        help
          Choose this option for DRM support for the ST-Ericsson MCDE
index 9247da47f0cfcc79c9161404deeeae89ae5a4e6d..52043a12a2e8e5ae2f0d6d279b2314ba31c98b5b 100644 (file)
@@ -15,7 +15,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_mipi_dsi.h>
 #include <drm/drm_simple_kms_helper.h>
 #include <drm/drm_bridge.h>
index 509c2b03bc420961f4f3b40b3da8d0dd3717719b..1c4482ad507d9ff4a5a0c367dc03235f3d418c0e 100644 (file)
@@ -71,7 +71,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_gem.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_of.h>
@@ -198,7 +198,7 @@ static int mcde_modeset_init(struct drm_device *drm)
        return 0;
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
+DEFINE_DRM_GEM_DMA_FOPS(drm_fops);
 
 static const struct drm_driver mcde_drm_driver = {
        .driver_features =
@@ -212,7 +212,7 @@ static const struct drm_driver mcde_drm_driver = {
        .major = 1,
        .minor = 0,
        .patchlevel = 0,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
 };
 
 static int mcde_drm_bind(struct device *dev)
index 2976d21e9a34a3e77563bb4d9291e8b0935f34a5..6d7d0e207082bdf1886436d5a1b5f5180d593c7b 100644 (file)
@@ -7,7 +7,7 @@ config DRM_MEDIATEK
        depends on HAVE_ARM_SMCCC
        depends on OF
        depends on MTK_MMSYS
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_KMS_HELPER
        select DRM_MIPI_DSI
        select DRM_PANEL
index 0e4c77724b0550b5352cd33f0857e206f7a18fa8..5f02f8d0e4fcfde1ce1dbc867d70f76ea80805a5 100644 (file)
@@ -20,7 +20,7 @@
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_gem.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
index 139d7724c6d02f44f8c3606c3f6e84c414656ac3..47e96b0289f98ebc345548f92877c6a7e68f45f6 100644 (file)
@@ -8,7 +8,7 @@
 #include <drm/drm.h>
 #include <drm/drm_device.h>
 #include <drm/drm_gem.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_prime.h>
 
 #include "mtk_drm_drv.h"
@@ -22,7 +22,7 @@ static const struct drm_gem_object_funcs mtk_drm_gem_object_funcs = {
        .vmap = mtk_drm_gem_prime_vmap,
        .vunmap = mtk_drm_gem_prime_vunmap,
        .mmap = mtk_drm_gem_object_mmap,
-       .vm_ops = &drm_gem_cma_vm_ops,
+       .vm_ops = &drm_gem_dma_vm_ops,
 };
 
 static struct mtk_drm_gem_obj *mtk_drm_gem_init(struct drm_device *dev,
index 6c70fc3214af276d29ea16325ae7e695560fa9e9..823909da87dbf36a6ad0405b976bae8e08b9a201 100644 (file)
@@ -4,7 +4,7 @@ config DRM_MESON
        depends on DRM && OF && (ARM || ARM64)
        depends on ARCH_MESON || COMPILE_TEST
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_DISPLAY_CONNECTOR
        select VIDEOMODE_HELPERS
        select REGMAP_MMIO
index 1b70938cfd2c43b327cc3df086a57a7efc8d07e4..ef386d7b9450b129ca301a1e869ee7f7ab150349 100644 (file)
@@ -19,7 +19,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_modeset_helper_vtables.h>
 #include <drm/drm_module.h>
@@ -87,16 +87,16 @@ static int meson_dumb_create(struct drm_file *file, struct drm_device *dev,
        args->pitch = ALIGN(DIV_ROUND_UP(args->width * args->bpp, 8), SZ_64);
        args->size = PAGE_ALIGN(args->pitch * args->height);
 
-       return drm_gem_cma_dumb_create_internal(file, dev, args);
+       return drm_gem_dma_dumb_create_internal(file, dev, args);
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(fops);
+DEFINE_DRM_GEM_DMA_FOPS(fops);
 
 static const struct drm_driver meson_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 
-       /* CMA Ops */
-       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(meson_dumb_create),
+       /* DMA Ops */
+       DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE(meson_dumb_create),
 
        /* Misc */
        .fops                   = &fops,
index bfebf45d8402f9a98c81c2d40f3a2b438f8fa6d8..9d3ab4a80b1c1ac854c947ee05ffe1121a94e37f 100644 (file)
@@ -15,7 +15,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 
 #include "meson_overlay.h"
 #include "meson_registers.h"
@@ -476,7 +476,7 @@ static void meson_overlay_atomic_update(struct drm_plane *plane,
                                                                           plane);
        struct drm_framebuffer *fb = new_state->fb;
        struct meson_drm *priv = meson_overlay->priv;
-       struct drm_gem_cma_object *gem;
+       struct drm_gem_dma_object *gem;
        unsigned long flags;
        bool interlace_mode;
 
index 51479715cce7eabe39725b0f98313c7941d14225..f7b9f63a1e703303e79725b7fac76df088cabe20 100644 (file)
@@ -19,7 +19,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 
 #include "meson_plane.h"
 #include "meson_registers.h"
@@ -139,7 +139,7 @@ static void meson_plane_atomic_update(struct drm_plane *plane,
        struct drm_rect dest = drm_plane_state_dest(new_state);
        struct meson_drm *priv = meson_plane->priv;
        struct drm_framebuffer *fb = new_state->fb;
-       struct drm_gem_cma_object *gem;
+       struct drm_gem_dma_object *gem;
        unsigned long flags;
        int vsc_ini_rcv_num, vsc_ini_rpt_p0_num;
        int vsc_bot_rcv_num, vsc_bot_rpt_p0_num;
index 1ed4cd09dbf8bf82b4c2e9f6a385f9c54fe56057..1d0bafedd585050d2ed44a0f3c052222e1b24f90 100644 (file)
@@ -355,7 +355,7 @@ static int msm_init_vram(struct drm_device *dev)
                DRM_INFO("using VRAM carveout: %lx@%pa\n", size, &r.start);
 
                /* if we have no IOMMU, then we need to use carveout allocator.
-                * Grab the entire CMA chunk carved out in early startup in
+                * Grab the entire DMA chunk carved out in early startup in
                 * mach-msm:
                 */
        } else if (!msm_use_mmu(dev)) {
index 873551b4552f5023322b0b8c8819a323004dc3a9..116f8168bda4ab1b5ec57d0db876fafa5dc7bf13 100644 (file)
@@ -10,7 +10,7 @@ config DRM_MXSFB
        depends on COMMON_CLK
        select DRM_MXS
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_PANEL
        select DRM_PANEL_BRIDGE
        help
@@ -26,7 +26,7 @@ config DRM_IMX_LCDIF
        depends on COMMON_CLK
        select DRM_MXS
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_PANEL
        select DRM_PANEL_BRIDGE
        help
index befad33dcb959d0d8dc4abfc468d86f39af2d525..05db135800db09f95faa19351424e16dee7898e9 100644 (file)
@@ -20,7 +20,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_mode_config.h>
 #include <drm/drm_module.h>
@@ -199,11 +199,11 @@ static void lcdif_unload(struct drm_device *drm)
        drm->dev_private = NULL;
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(fops);
+DEFINE_DRM_GEM_DMA_FOPS(fops);
 
 static const struct drm_driver lcdif_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
        .fops   = &fops,
        .name   = "imx-lcdif",
        .desc   = "i.MX LCDIF Controller DRM",
index 0df418774035bcdf252b6ce39959e761f8b1fc73..c7efc0d27f0e34fecd933766a4c8a19a3933b98b 100644 (file)
@@ -21,7 +21,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_plane.h>
 #include <drm/drm_vblank.h>
 
index 55aad92e08ba14b72c18ecb2a2321b9e07a669e3..b29b332ed38149c3b50459055275156c21239904 100644 (file)
@@ -22,7 +22,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_mode_config.h>
 #include <drm/drm_module.h>
@@ -324,11 +324,11 @@ static void mxsfb_unload(struct drm_device *drm)
        pm_runtime_disable(drm->dev);
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(fops);
+DEFINE_DRM_GEM_DMA_FOPS(fops);
 
 static const struct drm_driver mxsfb_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
        .fops   = &fops,
        .name   = "mxsfb-drm",
        .desc   = "MXSFB Controller DRM",
index e55e9262afb28d892460b10e34b834f2213aa94e..0bff493bf2a896a229f0c32c2f79a21965ae1fe4 100644 (file)
@@ -24,7 +24,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_plane.h>
 #include <drm/drm_vblank.h>
 
index a9043eacce97c6c06234a15bc9fac306a5c3ed3c..584a69f99af6f2511c95fd4ee3b6ccb96b5a7000 100644 (file)
@@ -166,7 +166,7 @@ config DRM_PANEL_ILITEK_ILI9341
        tristate "Ilitek ILI9341 240x320 QVGA panels"
        depends on OF && SPI
        depends on DRM_KMS_HELPER
-       depends on DRM_GEM_CMA_HELPER
+       depends on DRM_GEM_DMA_HELPER
        depends on BACKLIGHT_CLASS_DEVICE
        select DRM_MIPI_DBI
        help
index 6826f4d4826a4b12520c813da4540f47f2296efd..7da09e34385d3d73231fdcc570cb3ce95b4f12cb 100644 (file)
@@ -32,7 +32,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_mipi_dbi.h>
 #include <drm/drm_modes.h>
@@ -586,12 +586,12 @@ static const struct drm_display_mode ili9341_dbi_mode = {
        DRM_SIMPLE_MODE(240, 320, 37, 49),
 };
 
-DEFINE_DRM_GEM_CMA_FOPS(ili9341_dbi_fops);
+DEFINE_DRM_GEM_DMA_FOPS(ili9341_dbi_fops);
 
 static struct drm_driver ili9341_dbi_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops                   = &ili9341_dbi_fops,
-       DRM_GEM_CMA_DRIVER_OPS_VMAP,
+       DRM_GEM_DMA_DRIVER_OPS_VMAP,
        .debugfs_init           = mipi_dbi_debugfs_init,
        .name                   = "ili9341",
        .desc                   = "Ilitek ILI9341",
index 91ee05b013037fb94d212a7ada995064238972d4..ad24cdf1d99280757356f460e8b3417f1dd6c183 100644 (file)
@@ -6,7 +6,7 @@ config DRM_PL111
        depends on VEXPRESS_CONFIG || VEXPRESS_CONFIG=n
        depends on COMMON_CLK
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_BRIDGE
        select DRM_PANEL_BRIDGE
        select VT_HW_CONSOLE_BINDING if FRAMEBUFFER_CONSOLE
index 5f2429c3633ef51978a287526b344600684810a4..6afdf260a4e226492637fa1f27f5a6b33de95918 100644 (file)
@@ -19,7 +19,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_vblank.h>
 
 #include "pl111_drm.h"
index 5b5f3573b619fe70a767960a11898ad66fbd0d6d..eb25eedb5ee008cb5bc2b35ca33694ed3a9627ae 100644 (file)
@@ -50,7 +50,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_of.h>
 #include <drm/drm_panel.h>
@@ -207,10 +207,10 @@ pl111_gem_import_sg_table(struct drm_device *dev,
        if (priv->use_device_memory)
                return ERR_PTR(-EINVAL);
 
-       return drm_gem_cma_prime_import_sg_table(dev, attach, sgt);
+       return drm_gem_dma_prime_import_sg_table(dev, attach, sgt);
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
+DEFINE_DRM_GEM_DMA_FOPS(drm_fops);
 
 static const struct drm_driver pl111_drm_driver = {
        .driver_features =
@@ -223,7 +223,7 @@ static const struct drm_driver pl111_drm_driver = {
        .major = 1,
        .minor = 0,
        .patchlevel = 0,
-       .dumb_create = drm_gem_cma_dumb_create,
+       .dumb_create = drm_gem_dma_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 = pl111_gem_import_sg_table,
index f6e6a6d5d987bf95d2954a4268fe04389d568ebf..c959e8c6be7d4e5c39e56c548d6c55d6b6c37710 100644 (file)
@@ -5,7 +5,7 @@ config DRM_RCAR_DU
        depends on ARM || ARM64
        depends on ARCH_RENESAS || COMPILE_TEST
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select VIDEOMODE_HELPERS
        help
          Choose this option if you have an R-Car chipset.
index ed887ebd2f6bbbd0bbb0b9b468a55575321d2db7..fd3b94649a01d15f39a1b909871b1194e0f38a33 100644 (file)
@@ -17,7 +17,7 @@
 #include <drm/drm_bridge.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_device.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_vblank.h>
 
 #include "rcar_cmm.h"
index 110ec9538b444e068eec56c3cb3252b4e14dd79e..00ac233a115e7ba65675f759c308c471c7c94e51 100644 (file)
@@ -21,7 +21,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_probe_helper.h>
 
@@ -578,7 +578,7 @@ const char *rcar_du_output_name(enum rcar_du_output output)
  * DRM operations
  */
 
-DEFINE_DRM_GEM_CMA_FOPS(rcar_du_fops);
+DEFINE_DRM_GEM_DMA_FOPS(rcar_du_fops);
 
 static const struct drm_driver rcar_du_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
index 7fed5b0c65cefe1af4dccaf801fd8ad3c05bb674..c9b8c4e03c25ae3fa09fcb415b30a6ba1ee2763a 100644 (file)
@@ -12,7 +12,7 @@
 #include <drm/drm_crtc.h>
 #include <drm/drm_device.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_probe_helper.h>
@@ -327,12 +327,12 @@ const struct rcar_du_format_info *rcar_du_format_info(u32 fourcc)
  */
 
 static const struct drm_gem_object_funcs rcar_du_gem_funcs = {
-       .free = drm_gem_cma_object_free,
-       .print_info = drm_gem_cma_object_print_info,
-       .get_sg_table = drm_gem_cma_object_get_sg_table,
-       .vmap = drm_gem_cma_object_vmap,
-       .mmap = drm_gem_cma_object_mmap,
-       .vm_ops = &drm_gem_cma_vm_ops,
+       .free = drm_gem_dma_object_free,
+       .print_info = drm_gem_dma_object_print_info,
+       .get_sg_table = drm_gem_dma_object_get_sg_table,
+       .vmap = drm_gem_dma_object_vmap,
+       .mmap = drm_gem_dma_object_mmap,
+       .vm_ops = &drm_gem_dma_vm_ops,
 };
 
 struct drm_gem_object *rcar_du_gem_prime_import_sg_table(struct drm_device *dev,
@@ -340,33 +340,33 @@ struct drm_gem_object *rcar_du_gem_prime_import_sg_table(struct drm_device *dev,
                                struct sg_table *sgt)
 {
        struct rcar_du_device *rcdu = to_rcar_du_device(dev);
-       struct drm_gem_cma_object *cma_obj;
+       struct drm_gem_dma_object *dma_obj;
        struct drm_gem_object *gem_obj;
        int ret;
 
        if (!rcar_du_has(rcdu, RCAR_DU_FEATURE_VSP1_SOURCE))
-               return drm_gem_cma_prime_import_sg_table(dev, attach, sgt);
+               return drm_gem_dma_prime_import_sg_table(dev, attach, sgt);
 
-       /* Create a CMA GEM buffer. */
-       cma_obj = kzalloc(sizeof(*cma_obj), GFP_KERNEL);
-       if (!cma_obj)
+       /* Create a DMA GEM buffer. */
+       dma_obj = kzalloc(sizeof(*dma_obj), GFP_KERNEL);
+       if (!dma_obj)
                return ERR_PTR(-ENOMEM);
 
-       gem_obj = &cma_obj->base;
+       gem_obj = &dma_obj->base;
        gem_obj->funcs = &rcar_du_gem_funcs;
 
        drm_gem_private_object_init(dev, gem_obj, attach->dmabuf->size);
-       cma_obj->map_noncoherent = false;
+       dma_obj->map_noncoherent = false;
 
        ret = drm_gem_create_mmap_offset(gem_obj);
        if (ret) {
                drm_gem_object_release(gem_obj);
-               kfree(cma_obj);
+               kfree(dma_obj);
                return ERR_PTR(ret);
        }
 
-       cma_obj->paddr = 0;
-       cma_obj->sgt = sgt;
+       dma_obj->paddr = 0;
+       dma_obj->sgt = sgt;
 
        return gem_obj;
 }
@@ -389,7 +389,7 @@ int rcar_du_dumb_create(struct drm_file *file, struct drm_device *dev,
 
        args->pitch = roundup(min_pitch, align);
 
-       return drm_gem_cma_dumb_create_internal(file, dev, args);
+       return drm_gem_dma_dumb_create_internal(file, dev, args);
 }
 
 static struct drm_framebuffer *
index 4ae444346991867b470203bdbf030439e5218bb0..31024f50cd23ae3c7fe027172791d43b1a77f148 100644 (file)
@@ -15,7 +15,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 
 #include "rcar_du_drv.h"
 #include "rcar_du_group.h"
@@ -341,7 +341,7 @@ static void rcar_du_plane_setup_scanout(struct rcar_du_group *rgrp,
 
        if (state->source == RCAR_DU_PLANE_MEMORY) {
                struct drm_framebuffer *fb = state->state.fb;
-               struct drm_gem_cma_object *gem;
+               struct drm_gem_dma_object *gem;
                unsigned int i;
 
                if (state->format->planes == 2)
index 99d32f42e46d53b6990453abb2fd167d814a4e6c..0f6c0a08e74dc15aa7833a495dc92dc7058c5444 100644 (file)
@@ -15,7 +15,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_vblank.h>
 
@@ -183,7 +183,7 @@ int rcar_du_vsp_map_fb(struct rcar_du_vsp *vsp, struct drm_framebuffer *fb,
        int ret;
 
        for (i = 0; i < fb->format->num_planes; ++i) {
-               struct drm_gem_cma_object *gem = drm_fb_dma_get_gem_obj(fb, i);
+               struct drm_gem_dma_object *gem = drm_fb_dma_get_gem_obj(fb, i);
                struct sg_table *sgt = &sg_tables[i];
 
                if (gem->sgt) {
index 53c2d9980d48bb424b0a849896d334932a032ffc..1bf3e2829cd07b6b0023a2f1e4ca6d75846fb44e 100644 (file)
@@ -2,7 +2,7 @@
 config DRM_ROCKCHIP
        tristate "DRM Support for Rockchip"
        depends on DRM && ROCKCHIP_IOMMU
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_KMS_HELPER
        select DRM_PANEL
        select VIDEOMODE_HELPERS
index 67d38f53d3e506d5e72591ef4005e44b002e9268..49831c738d4de7d5eea77269f9cd759436ba4bb8 100644 (file)
@@ -18,7 +18,7 @@
 #include <drm/drm_aperture.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_vblank.h>
index 985584147da10f4cb9685dee052854e04ff2cc99..614e97aaac805464205473b2320dc573349d1b1a 100644 (file)
@@ -10,7 +10,7 @@
 
 #include <drm/drm.h>
 #include <drm/drm_gem.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_prime.h>
 #include <drm/drm_vma_manager.h>
 
@@ -279,7 +279,7 @@ static const struct drm_gem_object_funcs rockchip_gem_object_funcs = {
        .vmap = rockchip_gem_prime_vmap,
        .vunmap = rockchip_gem_prime_vunmap,
        .mmap = rockchip_drm_gem_object_mmap,
-       .vm_ops = &drm_gem_cma_vm_ops,
+       .vm_ops = &drm_gem_dma_vm_ops,
 };
 
 static struct rockchip_gem_object *
index 288b838a904a211ef16c206ca582dac0444d6507..4ec5dc74a6b0b880c61772191eba2561f75ba98e 100644 (file)
@@ -5,7 +5,7 @@ config DRM_SHMOBILE
        depends on ARCH_SHMOBILE || COMPILE_TEST
        select BACKLIGHT_CLASS_DEVICE
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        help
          Choose this option if you have an SH Mobile chipset.
          If M is selected the module will be called shmob-drm.
index 94318f858ed6f31c36bc60b81d949107c636e552..bdf3e8841a40fafe96de60062b56c742e727a9ed 100644 (file)
@@ -15,7 +15,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_simple_kms_helper.h>
 #include <drm/drm_vblank.h>
@@ -288,7 +288,7 @@ static void shmob_drm_crtc_compute_base(struct shmob_drm_crtc *scrtc,
 {
        struct drm_crtc *crtc = &scrtc->crtc;
        struct drm_framebuffer *fb = crtc->primary->fb;
-       struct drm_gem_cma_object *gem;
+       struct drm_gem_dma_object *gem;
        unsigned int bpp;
 
        bpp = scrtc->format->yuv ? 8 : scrtc->format->bpp;
index 731cbad7520f24e3a0b8d98a3c8bdb9632395d47..3d511fa389136411da470ad12096f124df328f9f 100644 (file)
@@ -17,7 +17,7 @@
 
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_drv.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_module.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_vblank.h>
@@ -126,11 +126,11 @@ static irqreturn_t shmob_drm_irq(int irq, void *arg)
        return IRQ_HANDLED;
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(shmob_drm_fops);
+DEFINE_DRM_GEM_DMA_FOPS(shmob_drm_fops);
 
 static const struct drm_driver shmob_drm_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
        .fops                   = &shmob_drm_fops,
        .name                   = "shmob-drm",
        .desc                   = "Renesas SH Mobile DRM",
index edb0035375307b8e58a9da2a43e0c79e57935c2c..60a2c8d8a0d947d2f6626196f9581fc3fff0a72b 100644 (file)
@@ -10,7 +10,7 @@
 #include <drm/drm_crtc.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_fourcc.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_probe_helper.h>
 
index 6ec2b732bb9498829ec2f83b74ee8cd5850625d7..0347b1fd2338a84dfc4d35df4f066ab035cea472 100644 (file)
@@ -12,7 +12,7 @@
 
 #include <linux/types.h>
 
-struct drm_gem_cma_object;
+struct drm_gem_dma_object;
 struct shmob_drm_device;
 
 struct shmob_drm_format_info {
index 6fa64bce0c91b95405368fb6239c200357cd618e..6d167e858d869d1c5cf4bcfb36547a07986a2257 100644 (file)
@@ -12,7 +12,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 
 #include "shmob_drm_drv.h"
 #include "shmob_drm_kms.h"
@@ -41,7 +41,7 @@ static void shmob_drm_plane_compute_base(struct shmob_drm_plane *splane,
                                         struct drm_framebuffer *fb,
                                         int x, int y)
 {
-       struct drm_gem_cma_object *gem;
+       struct drm_gem_dma_object *gem;
        unsigned int bpp;
 
        bpp = splane->format->yuv ? 8 : splane->format->bpp;
index 9a9c7ebfc71662634afa3056dc473548e2840670..e22b780fe82248296a7153d02269faf8cd63294f 100644 (file)
@@ -2,7 +2,7 @@ config DRM_SPRD
        tristate "DRM Support for Unisoc SoCs Platform"
        depends on ARCH_SPRD || COMPILE_TEST
        depends on DRM && OF
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_KMS_HELPER
        select DRM_MIPI_DSI
        select VIDEOMODE_HELPERS
index 5ea104e0beb82bcd6e348bfa28b50f68d1f9ed86..44c0fba93607d1819eda63f48b4373e3da0eb27a 100644 (file)
@@ -21,7 +21,7 @@
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 
 #include "sprd_drm.h"
@@ -323,7 +323,7 @@ static u32 drm_blend_to_dpu(struct drm_plane_state *state)
 static void sprd_dpu_layer(struct sprd_dpu *dpu, struct drm_plane_state *state)
 {
        struct dpu_context *ctx = &dpu->ctx;
-       struct drm_gem_cma_object *cma_obj;
+       struct drm_gem_dma_object *dma_obj;
        struct drm_framebuffer *fb = state->fb;
        u32 addr, size, offset, pitch, blend, format, rotation;
        u32 src_x = state->src_x >> 16;
@@ -340,8 +340,8 @@ static void sprd_dpu_layer(struct sprd_dpu *dpu, struct drm_plane_state *state)
        size = (src_w & 0xffff) | (src_h << 16);
 
        for (i = 0; i < fb->format->num_planes; i++) {
-               cma_obj = drm_fb_dma_get_gem_obj(fb, i);
-               addr = cma_obj->paddr + fb->offsets[i];
+               dma_obj = drm_fb_dma_get_gem_obj(fb, i);
+               addr = dma_obj->paddr + fb->offsets[i];
 
                if (i == 0)
                        layer_reg_wr(ctx, REG_LAY_BASE_ADDR0, addr, index);
index b8fc1c6a0cb84c3616afdd68d456ed208e26182f..9d42f17a5734352ac93a7666c17bbbe5ead22aa1 100644 (file)
@@ -13,7 +13,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_drv.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
@@ -48,14 +48,14 @@ static void sprd_drm_mode_config_init(struct drm_device *drm)
        drm->mode_config.helper_private = &sprd_drm_mode_config_helper;
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(sprd_drm_fops);
+DEFINE_DRM_GEM_DMA_FOPS(sprd_drm_fops);
 
 static struct drm_driver sprd_drm_drv = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops                   = &sprd_drm_fops,
 
        /* GEM Operations */
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
 
        .name                   = DRIVER_NAME,
        .desc                   = DRIVER_DESC,
index 246a94afbe745417e0cdbfc861cd588d7cfa4504..f2a880c48485e9bad5f1fc91036bd8604ba626e6 100644 (file)
@@ -4,7 +4,7 @@ config DRM_STI
        depends on OF && DRM && (ARCH_STI || ARCH_MULTIPLATFORM)
        select RESET_CONTROLLER
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_PANEL
        select FW_LOADER
        select SND_SOC_HDMI_CODEC if SND_SOC
index d374fa50be600a5a4753f7663b8c5cd964d76920..db0a1eb535328f931a0a4ed6f388b5532dcf054d 100644 (file)
@@ -13,7 +13,7 @@
 #include <drm/drm_device.h>
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 
 #include "sti_compositor.h"
 #include "sti_cursor.h"
@@ -244,7 +244,7 @@ static int sti_cursor_atomic_check(struct drm_plane *drm_plane,
        }
 
        if (!drm_fb_dma_get_gem_obj(fb, 0)) {
-               DRM_ERROR("Can't get CMA GEM object for fb\n");
+               DRM_ERROR("Can't get DMA GEM object for fb\n");
                return -EINVAL;
        }
 
@@ -267,7 +267,7 @@ static void sti_cursor_atomic_update(struct drm_plane *drm_plane,
        struct drm_framebuffer *fb = newstate->fb;
        struct drm_display_mode *mode;
        int dst_x, dst_y;
-       struct drm_gem_cma_object *cma_obj;
+       struct drm_gem_dma_object *dma_obj;
        u32 y, x;
        u32 val;
 
@@ -278,10 +278,10 @@ static void sti_cursor_atomic_update(struct drm_plane *drm_plane,
        dst_x = newstate->crtc_x;
        dst_y = newstate->crtc_y;
 
-       cma_obj = drm_fb_dma_get_gem_obj(fb, 0);
+       dma_obj = drm_fb_dma_get_gem_obj(fb, 0);
 
        /* Convert ARGB8888 to CLUT8 */
-       sti_cursor_argb8888_to_clut8(cursor, (u32 *)cma_obj->vaddr);
+       sti_cursor_argb8888_to_clut8(cursor, (u32 *)dma_obj->vaddr);
 
        /* AWS and AWE depend on the mode */
        y = sti_vtg_get_line_number(*mode, 0);
index c0fbdb8cf6ebf02d9261097b38ab838cc8a04cc5..7abf010a329351fc89d21e4afc6e05a47fb84e25 100644 (file)
@@ -15,7 +15,7 @@
 #include <drm/drm_debugfs.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
@@ -127,12 +127,12 @@ static void sti_mode_config_init(struct drm_device *dev)
        dev->mode_config.normalize_zpos = true;
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
+DEFINE_DRM_GEM_DMA_FOPS(sti_driver_fops);
 
 static const struct drm_driver sti_driver = {
        .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
        .fops = &sti_driver_fops,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
 
        .debugfs_init = sti_drm_dbg_init,
 
index 623a09163f9f5b4b10b2307778b6f1d50b633a7a..3ce9d49921764a2a6980a8b2988888f7dd9e850e 100644 (file)
@@ -15,7 +15,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 
 #include "sti_compositor.h"
 #include "sti_gdp.h"
@@ -659,7 +659,7 @@ static int sti_gdp_atomic_check(struct drm_plane *drm_plane,
        }
 
        if (!drm_fb_dma_get_gem_obj(fb, 0)) {
-               DRM_ERROR("Can't get CMA GEM object for fb\n");
+               DRM_ERROR("Can't get DMA GEM object for fb\n");
                return -EINVAL;
        }
 
@@ -714,7 +714,7 @@ static void sti_gdp_atomic_update(struct drm_plane *drm_plane,
        struct drm_display_mode *mode;
        int dst_x, dst_y, dst_w, dst_h;
        int src_x, src_y, src_w, src_h;
-       struct drm_gem_cma_object *cma_obj;
+       struct drm_gem_dma_object *dma_obj;
        struct sti_gdp_node_list *list;
        struct sti_gdp_node_list *curr_list;
        struct sti_gdp_node *top_field, *btm_field;
@@ -778,15 +778,15 @@ static void sti_gdp_atomic_update(struct drm_plane *drm_plane,
        top_field->gam_gdp_ctl |= sti_gdp_get_alpharange(format);
        top_field->gam_gdp_ppt &= ~GAM_GDP_PPT_IGNORE;
 
-       cma_obj = drm_fb_dma_get_gem_obj(fb, 0);
+       dma_obj = drm_fb_dma_get_gem_obj(fb, 0);
 
        DRM_DEBUG_DRIVER("drm FB:%d format:%.4s phys@:0x%lx\n", fb->base.id,
                         (char *)&fb->format->format,
-                        (unsigned long)cma_obj->paddr);
+                        (unsigned long)dma_obj->paddr);
 
        /* pixel memory location */
        bpp = fb->format->cpp[0];
-       top_field->gam_gdp_pml = (u32)cma_obj->paddr + fb->offsets[0];
+       top_field->gam_gdp_pml = (u32)dma_obj->paddr + fb->offsets[0];
        top_field->gam_gdp_pml += src_x * bpp;
        top_field->gam_gdp_pml += src_y * fb->pitches[0];
 
@@ -831,7 +831,7 @@ static void sti_gdp_atomic_update(struct drm_plane *drm_plane,
        dev_dbg(gdp->dev, "Current NVN:0x%X\n",
                readl(gdp->regs + GAM_GDP_NVN_OFFSET));
        dev_dbg(gdp->dev, "Posted buff: %lx current buff: %x\n",
-               (unsigned long)cma_obj->paddr,
+               (unsigned long)dma_obj->paddr,
                readl(gdp->regs + GAM_GDP_PML_OFFSET));
 
        if (!curr_list) {
index 26284c5f5b224480c12205eaa40081be2f173a81..ee274140274d458e000808749ed1af690bce658b 100644 (file)
@@ -19,7 +19,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 
 #include "sti_compositor.h"
 #include "sti_drv.h"
@@ -1056,7 +1056,7 @@ static int sti_hqvdp_atomic_check(struct drm_plane *drm_plane,
        }
 
        if (!drm_fb_dma_get_gem_obj(fb, 0)) {
-               DRM_ERROR("Can't get CMA GEM object for fb\n");
+               DRM_ERROR("Can't get DMA GEM object for fb\n");
                return -EINVAL;
        }
 
@@ -1124,7 +1124,7 @@ static void sti_hqvdp_atomic_update(struct drm_plane *drm_plane,
        struct drm_display_mode *mode;
        int dst_x, dst_y, dst_w, dst_h;
        int src_x, src_y, src_w, src_h;
-       struct drm_gem_cma_object *cma_obj;
+       struct drm_gem_dma_object *dma_obj;
        struct sti_hqvdp_cmd *cmd;
        int scale_h, scale_v;
        int cmd_offset;
@@ -1178,15 +1178,15 @@ static void sti_hqvdp_atomic_update(struct drm_plane *drm_plane,
        cmd->iqi.sat_gain = IQI_SAT_GAIN_DFLT;
        cmd->iqi.pxf_conf = IQI_PXF_CONF_DFLT;
 
-       cma_obj = drm_fb_dma_get_gem_obj(fb, 0);
+       dma_obj = drm_fb_dma_get_gem_obj(fb, 0);
 
        DRM_DEBUG_DRIVER("drm FB:%d format:%.4s phys@:0x%lx\n", fb->base.id,
                         (char *)&fb->format->format,
-                        (unsigned long)cma_obj->paddr);
+                        (unsigned long)dma_obj->paddr);
 
        /* Buffer planes address */
-       cmd->top.current_luma = (u32)cma_obj->paddr + fb->offsets[0];
-       cmd->top.current_chroma = (u32)cma_obj->paddr + fb->offsets[1];
+       cmd->top.current_luma = (u32)dma_obj->paddr + fb->offsets[0];
+       cmd->top.current_chroma = (u32)dma_obj->paddr + fb->offsets[1];
 
        /* Pitches */
        cmd->top.luma_processed_pitch = fb->pitches[0];
index 0a55180be22b5f2748f78e74ae1e9fe5cdae997d..29e669ccec5b079769cb608a2cbe0867f222893c 100644 (file)
@@ -11,7 +11,7 @@
 #include <drm/drm_blend.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 
 #include "sti_compositor.h"
 #include "sti_drv.h"
index e0379488cd0d2e1724687f8cb803e359ed91f11d..ded72f8794820ecfc78241528fb9bb2e136fa798 100644 (file)
@@ -3,7 +3,7 @@ config DRM_STM
        tristate "DRM Support for STMicroelectronics SoC Series"
        depends on DRM && (ARCH_STM32 || ARCH_MULTIPLATFORM)
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_PANEL_BRIDGE
        select VIDEOMODE_HELPERS
        select FB_PROVIDE_GET_FB_UNMAPPED_AREA if FB
index bb269dad30f99ea00f752198cbdeffd5ce49f7ba..d7914f5122dff046b85fe1d224b9febc186df3f1 100644 (file)
@@ -19,7 +19,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_module.h>
 #include <drm/drm_probe_helper.h>
@@ -36,7 +36,7 @@ static const struct drm_mode_config_funcs drv_mode_config_funcs = {
        .atomic_commit = drm_atomic_helper_commit,
 };
 
-static int stm_gem_cma_dumb_create(struct drm_file *file,
+static int stm_gem_dma_dumb_create(struct drm_file *file,
                                   struct drm_device *dev,
                                   struct drm_mode_create_dumb *args)
 {
@@ -49,10 +49,10 @@ static int stm_gem_cma_dumb_create(struct drm_file *file,
        args->pitch = roundup(min_pitch, 128);
        args->height = roundup(args->height, 4);
 
-       return drm_gem_cma_dumb_create_internal(file, dev, args);
+       return drm_gem_dma_dumb_create_internal(file, dev, args);
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
+DEFINE_DRM_GEM_DMA_FOPS(drv_driver_fops);
 
 static const struct drm_driver drv_driver = {
        .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
@@ -63,7 +63,7 @@ static const struct drm_driver drv_driver = {
        .minor = 0,
        .patchlevel = 0,
        .fops = &drv_driver_fops,
-       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(stm_gem_cma_dumb_create),
+       DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE(stm_gem_dma_dumb_create),
 };
 
 static int drv_load(struct drm_device *ddev)
index 42a98ef73d033edc8f3b2218cfcf3de7eeec3e33..03c6becda795c2b1f9ea907496eb068ef47846ee 100644 (file)
@@ -32,7 +32,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_simple_kms_helper.h>
index 1c2f8909f3cd516b30d053d07148eaac0908d848..4741d9f6544c201b699d57385a1ddbc826bf84ce 100644 (file)
@@ -3,7 +3,7 @@ config DRM_SUN4I
        tristate "DRM Support for Allwinner A10 Display Engine"
        depends on DRM && COMMON_CLK
        depends on ARCH_SUNXI || COMPILE_TEST
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_KMS_HELPER
        select DRM_PANEL
        select REGMAP_MMIO
index fa4539c3b149ee3d446509745e379e4910e22c0e..1fbdd4961194594ec438502f9129ae0eb6b073ef 100644 (file)
@@ -22,7 +22,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_probe_helper.h>
 
 #include "sun4i_backend.h"
index 382074ef13949917f0fe6fb4d68f7bc9f2060439..d06ffd99d86e157523f082673ca67affd83f392c 100644 (file)
@@ -18,7 +18,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_module.h>
 #include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
@@ -37,10 +37,10 @@ static int drm_sun4i_gem_dumb_create(struct drm_file *file_priv,
        /* The hardware only allows even pitches for YUV buffers. */
        args->pitch = ALIGN(DIV_ROUND_UP(args->width * args->bpp, 8), 2);
 
-       return drm_gem_cma_dumb_create_internal(file_priv, drm, args);
+       return drm_gem_dma_dumb_create_internal(file_priv, drm, args);
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(sun4i_drv_fops);
+DEFINE_DRM_GEM_DMA_FOPS(sun4i_drv_fops);
 
 static const struct drm_driver sun4i_drv_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
@@ -54,7 +54,7 @@ static const struct drm_driver sun4i_drv_driver = {
        .minor                  = 0,
 
        /* GEM Operations */
-       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(drm_sun4i_gem_dumb_create),
+       DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE(drm_sun4i_gem_dumb_create),
 };
 
 static int sun4i_drv_bind(struct device *dev)
index 4a811e803dacf8bcd5d4b7283fd20d2fa8fbc4c9..baeeda04691f4472c9522a8d2b244e4dadc9d4d0 100644 (file)
@@ -17,7 +17,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_plane.h>
 
 #include "sun4i_drv.h"
index b3d1c09404068263feb8849b617e94d98be461f6..bafee05f6b247697415ab126999fd5bf8a7576b0 100644 (file)
@@ -17,7 +17,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_probe_helper.h>
 
 #include "sun4i_drv.h"
index 900c71c47a3b519ba36ed7d245ddfd1e954fb222..090523356193c4798e1d38f25fa1059a0355e9ef 100644 (file)
@@ -17,7 +17,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_probe_helper.h>
 
 #include "sun8i_mixer.h"
@@ -192,7 +192,7 @@ static int sun8i_ui_layer_update_buffer(struct sun8i_mixer *mixer, int channel,
 {
        struct drm_plane_state *state = plane->state;
        struct drm_framebuffer *fb = state->fb;
-       struct drm_gem_cma_object *gem;
+       struct drm_gem_dma_object *gem;
        dma_addr_t paddr;
        u32 ch_base;
        int bpp;
index 8b5dae30c8c5fb838953eacbc7e5855eed087274..8def7e0290ce6e1750fde5dac8a9dd92d1c94044 100644 (file)
@@ -10,7 +10,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_probe_helper.h>
 
 #include "sun8i_csc.h"
@@ -308,7 +308,7 @@ static int sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int channel,
        struct drm_plane_state *state = plane->state;
        struct drm_framebuffer *fb = state->fb;
        const struct drm_format_info *format = fb->format;
-       struct drm_gem_cma_object *gem;
+       struct drm_gem_dma_object *gem;
        u32 dx, dy, src_x, src_y;
        dma_addr_t paddr;
        u32 ch_base;
index bc4fa59b6fa9a395dc659026c3caaef3c05cba88..37860080616760cf19be513840e2cfa66cd282b1 100644 (file)
@@ -3,7 +3,7 @@ config DRM_TIDSS
        depends on DRM && OF
        depends on ARM || ARM64 || COMPILE_TEST
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        help
          The TI Keystone family SoCs introduced a new generation of
          Display SubSystem. There is currently three Keystone family
index 92d2c25bb0ff4ebcd97791a84950cc909b809493..cd3c43a6c806483f5dccea762eb9b5184db471d4 100644 (file)
@@ -8,7 +8,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_crtc_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_vblank.h>
 
 #include "tidss_crtc.h"
index cdd9a64f97365404a83effe0804079cae7b28350..6f3fa37b9ca0a1d801a159ca87f63f173eda4ae9 100644 (file)
@@ -26,7 +26,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_panel.h>
 
 #include "tidss_crtc.h"
@@ -1957,7 +1957,7 @@ static
 dma_addr_t dispc_plane_state_paddr(const struct drm_plane_state *state)
 {
        struct drm_framebuffer *fb = state->fb;
-       struct drm_gem_cma_object *gem;
+       struct drm_gem_dma_object *gem;
        u32 x = state->src_x >> 16;
        u32 y = state->src_y >> 16;
 
@@ -1971,7 +1971,7 @@ static
 dma_addr_t dispc_plane_state_p_uv_addr(const struct drm_plane_state *state)
 {
        struct drm_framebuffer *fb = state->fb;
-       struct drm_gem_cma_object *gem;
+       struct drm_gem_dma_object *gem;
        u32 x = state->src_x >> 16;
        u32 y = state->src_y >> 16;
 
index 04cfff89ee516bce33abf3134050155e920c66d4..15cd9b91b7e2a46d1618645ff9acadfbee4329db 100644 (file)
@@ -15,7 +15,7 @@
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_module.h>
 #include <drm/drm_probe_helper.h>
@@ -101,13 +101,13 @@ static void tidss_release(struct drm_device *ddev)
        drm_kms_helper_poll_fini(ddev);
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(tidss_fops);
+DEFINE_DRM_GEM_DMA_FOPS(tidss_fops);
 
 static const struct drm_driver tidss_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops                   = &tidss_fops,
        .release                = tidss_release,
-       DRM_GEM_CMA_DRIVER_OPS_VMAP,
+       DRM_GEM_DMA_DRIVER_OPS_VMAP,
        .name                   = "tidss",
        .desc                   = "TI Keystone DSS",
        .date                   = "20180215",
index e315591eb36b80c41e3041f8d6af566f643e0910..d3bd2d7a181e35b114ea9a056093013da0c47b4e 100644 (file)
@@ -3,7 +3,7 @@ config DRM_TILCDC
        tristate "DRM Support for TI LCDC Display Controller"
        depends on DRM && OF && ARM
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_BRIDGE
        select DRM_PANEL_BRIDGE
        select VIDEOMODE_HELPERS
index bd4f52242c0a43263245ca55cb3919bd4724a645..9034b977853906391a0854f601975dca6ae77c40 100644 (file)
@@ -15,7 +15,7 @@
 #include <drm/drm_fb_dma_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_modeset_helper_vtables.h>
 #include <drm/drm_print.h>
 #include <drm/drm_vblank.h>
@@ -64,7 +64,7 @@ static void set_scanout(struct drm_crtc *crtc, struct drm_framebuffer *fb)
 {
        struct drm_device *dev = crtc->dev;
        struct tilcdc_drm_private *priv = dev->dev_private;
-       struct drm_gem_cma_object *gem;
+       struct drm_gem_dma_object *gem;
        dma_addr_t start, end;
        u64 dma_base_and_ceiling;
 
index eee3c447fbac28ad7793e270a762a3214eb7ca8c..f72755b8ea14c9d3cead4c65b16bf7d5646ad8f7 100644 (file)
@@ -18,7 +18,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_mm.h>
 #include <drm/drm_probe_helper.h>
@@ -476,11 +476,11 @@ static void tilcdc_debugfs_init(struct drm_minor *minor)
 }
 #endif
 
-DEFINE_DRM_GEM_CMA_FOPS(fops);
+DEFINE_DRM_GEM_DMA_FOPS(fops);
 
 static const struct drm_driver tilcdc_driver = {
        .driver_features    = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
 #ifdef CONFIG_DEBUG_FS
        .debugfs_init       = tilcdc_debugfs_init,
 #endif
index 027cd87c3d0d7acf057484749e7275114ea5421d..565957264875b9cb08e179f739ccd24e82bfeeae 100644 (file)
@@ -3,7 +3,7 @@
 config DRM_ARCPGU
        tristate "ARC PGU"
        depends on DRM && OF
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_KMS_HELPER
        help
          Choose this option if you have an ARC PGU controller.
@@ -55,7 +55,7 @@ config DRM_PANEL_MIPI_DBI
        tristate "DRM support for MIPI DBI compatible panels"
        depends on DRM && SPI
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_MIPI_DBI
        select BACKLIGHT_CLASS_DEVICE
        select VIDEOMODE_HELPERS
@@ -87,7 +87,7 @@ config TINYDRM_HX8357D
        tristate "DRM support for HX8357D display panels"
        depends on DRM && SPI
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_MIPI_DBI
        select BACKLIGHT_CLASS_DEVICE
        help
@@ -100,7 +100,7 @@ config TINYDRM_ILI9163
        tristate "DRM support for ILI9163 display panels"
        depends on DRM && SPI
        select BACKLIGHT_CLASS_DEVICE
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_KMS_HELPER
        select DRM_MIPI_DBI
        help
@@ -113,7 +113,7 @@ config TINYDRM_ILI9225
        tristate "DRM support for ILI9225 display panels"
        depends on DRM && SPI
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_MIPI_DBI
        help
          DRM driver for the following Ilitek ILI9225 panels:
@@ -125,7 +125,7 @@ config TINYDRM_ILI9341
        tristate "DRM support for ILI9341 display panels"
        depends on DRM && SPI
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_MIPI_DBI
        select BACKLIGHT_CLASS_DEVICE
        help
@@ -138,7 +138,7 @@ config TINYDRM_ILI9486
        tristate "DRM support for ILI9486 display panels"
        depends on DRM && SPI
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_MIPI_DBI
        select BACKLIGHT_CLASS_DEVICE
        help
@@ -152,7 +152,7 @@ config TINYDRM_MI0283QT
        tristate "DRM support for MI0283QT"
        depends on DRM && SPI
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_MIPI_DBI
        select BACKLIGHT_CLASS_DEVICE
        help
@@ -163,7 +163,7 @@ config TINYDRM_REPAPER
        tristate "DRM support for Pervasive Displays RePaper panels (V231)"
        depends on DRM && SPI
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        help
          DRM driver for the following Pervasive Displays panels:
          1.44" TFT EPD Panel (E1144CS021)
@@ -177,7 +177,7 @@ config TINYDRM_ST7586
        tristate "DRM support for Sitronix ST7586 display panels"
        depends on DRM && SPI
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_MIPI_DBI
        help
          DRM driver for the following Sitronix ST7586 panels:
@@ -189,7 +189,7 @@ config TINYDRM_ST7735R
        tristate "DRM support for Sitronix ST7715R/ST7735R display panels"
        depends on DRM && SPI
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_MIPI_DBI
        select BACKLIGHT_CLASS_DEVICE
        help
index cdf320c547fbfa31b15466de535521593a153ccf..21d9e0bd67bad47f743192469049bfe01c807ed1 100644 (file)
@@ -15,7 +15,7 @@
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_module.h>
 #include <drm/drm_of.h>
@@ -220,7 +220,7 @@ static void arc_pgu_update(struct drm_simple_display_pipe *pipe,
                           struct drm_plane_state *state)
 {
        struct arcpgu_drm_private *arcpgu;
-       struct drm_gem_cma_object *gem;
+       struct drm_gem_dma_object *gem;
 
        if (!pipe->plane.state->fb)
                return;
@@ -243,7 +243,7 @@ static const struct drm_mode_config_funcs arcpgu_drm_modecfg_funcs = {
        .atomic_commit = drm_atomic_helper_commit,
 };
 
-DEFINE_DRM_GEM_CMA_FOPS(arcpgu_drm_ops);
+DEFINE_DRM_GEM_DMA_FOPS(arcpgu_drm_ops);
 
 static int arcpgu_load(struct arcpgu_drm_private *arcpgu)
 {
@@ -370,7 +370,7 @@ static const struct drm_driver arcpgu_drm_driver = {
        .minor = 0,
        .patchlevel = 0,
        .fops = &arcpgu_drm_ops,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
 #ifdef CONFIG_DEBUG_FS
        .debugfs_init = arcpgu_debugfs_init,
 #endif
index ebb025543f8de65c40e1f9b118de2116dc4af6d8..57f229a785bf8abba4ec6eb277d6bfbc83c78856 100644 (file)
@@ -20,7 +20,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_mipi_dbi.h>
 #include <drm/drm_modeset_helper.h>
@@ -190,12 +190,12 @@ static const struct drm_display_mode yx350hv15_mode = {
        DRM_SIMPLE_MODE(320, 480, 60, 75),
 };
 
-DEFINE_DRM_GEM_CMA_FOPS(hx8357d_fops);
+DEFINE_DRM_GEM_DMA_FOPS(hx8357d_fops);
 
 static const struct drm_driver hx8357d_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops                   = &hx8357d_fops,
-       DRM_GEM_CMA_DRIVER_OPS_VMAP,
+       DRM_GEM_DMA_DRIVER_OPS_VMAP,
        .debugfs_init           = mipi_dbi_debugfs_init,
        .name                   = "hx8357d",
        .desc                   = "HX8357D",
index fc8ed245b0bc989dc1a0b21e7d5a87862ada2b1f..86439e50e304f7ffde79a9763cdd2db8ee3e1b04 100644 (file)
@@ -11,7 +11,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_mipi_dbi.h>
 #include <drm/drm_modeset_helper.h>
 
@@ -110,12 +110,12 @@ static const struct drm_display_mode yx240qv29_mode = {
        DRM_SIMPLE_MODE(128, 160, 28, 35),
 };
 
-DEFINE_DRM_GEM_CMA_FOPS(ili9163_fops);
+DEFINE_DRM_GEM_DMA_FOPS(ili9163_fops);
 
 static struct drm_driver ili9163_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops                   = &ili9163_fops,
-       DRM_GEM_CMA_DRIVER_OPS_VMAP,
+       DRM_GEM_DMA_DRIVER_OPS_VMAP,
        .debugfs_init           = mipi_dbi_debugfs_init,
        .name                   = "ili9163",
        .desc                   = "Ilitek ILI9163",
index fc73ffa46a198345c879b8e28c9204453523400a..a79da2b4af647159f5db4a2fdfcb415235a2a1c4 100644 (file)
@@ -24,7 +24,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_mipi_dbi.h>
 #include <drm/drm_rect.h>
@@ -78,7 +78,7 @@ static inline int ili9225_command(struct mipi_dbi *dbi, u8 cmd, u16 data)
 
 static void ili9225_fb_dirty(struct drm_framebuffer *fb, struct drm_rect *rect)
 {
-       struct drm_gem_cma_object *cma_obj = drm_fb_dma_get_gem_obj(fb, 0);
+       struct drm_gem_dma_object *dma_obj = drm_fb_dma_get_gem_obj(fb, 0);
        struct mipi_dbi_dev *dbidev = drm_to_mipi_dbi_dev(fb->dev);
        unsigned int height = rect->y2 - rect->y1;
        unsigned int width = rect->x2 - rect->x1;
@@ -104,7 +104,7 @@ static void ili9225_fb_dirty(struct drm_framebuffer *fb, struct drm_rect *rect)
                if (ret)
                        goto err_msg;
        } else {
-               tr = cma_obj->vaddr;
+               tr = dma_obj->vaddr;
        }
 
        switch (dbidev->rotation) {
@@ -335,12 +335,12 @@ static const struct drm_display_mode ili9225_mode = {
        DRM_SIMPLE_MODE(176, 220, 35, 44),
 };
 
-DEFINE_DRM_GEM_CMA_FOPS(ili9225_fops);
+DEFINE_DRM_GEM_DMA_FOPS(ili9225_fops);
 
 static const struct drm_driver ili9225_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops                   = &ili9225_fops,
-       DRM_GEM_CMA_DRIVER_OPS_VMAP,
+       DRM_GEM_DMA_DRIVER_OPS_VMAP,
        .name                   = "ili9225",
        .desc                   = "Ilitek ILI9225",
        .date                   = "20171106",
index 5b8cc770ee7b92519718041ba2441928b2f7417e..b8826a0b086bfee98f19fbd73b94540b44de5b31 100644 (file)
@@ -19,7 +19,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_mipi_dbi.h>
 #include <drm/drm_modeset_helper.h>
@@ -146,12 +146,12 @@ static const struct drm_display_mode yx240qv29_mode = {
        DRM_SIMPLE_MODE(240, 320, 37, 49),
 };
 
-DEFINE_DRM_GEM_CMA_FOPS(ili9341_fops);
+DEFINE_DRM_GEM_DMA_FOPS(ili9341_fops);
 
 static const struct drm_driver ili9341_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops                   = &ili9341_fops,
-       DRM_GEM_CMA_DRIVER_OPS_VMAP,
+       DRM_GEM_DMA_DRIVER_OPS_VMAP,
        .debugfs_init           = mipi_dbi_debugfs_init,
        .name                   = "ili9341",
        .desc                   = "Ilitek ILI9341",
index 6d655e18e0aa2062c59d7d7be0469eccf27a6b87..a5b433a8e0d8abec911e3294bc090f7404d099d2 100644 (file)
@@ -18,7 +18,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_mipi_dbi.h>
 #include <drm/drm_modeset_helper.h>
@@ -159,12 +159,12 @@ static const struct drm_display_mode waveshare_mode = {
        DRM_SIMPLE_MODE(480, 320, 73, 49),
 };
 
-DEFINE_DRM_GEM_CMA_FOPS(ili9486_fops);
+DEFINE_DRM_GEM_DMA_FOPS(ili9486_fops);
 
 static const struct drm_driver ili9486_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops                   = &ili9486_fops,
-       DRM_GEM_CMA_DRIVER_OPS_VMAP,
+       DRM_GEM_DMA_DRIVER_OPS_VMAP,
        .debugfs_init           = mipi_dbi_debugfs_init,
        .name                   = "ili9486",
        .desc                   = "Ilitek ILI9486",
index 5e060f6910bb45f557aa61f1540bb1139bb77b1d..27f1bd4da2f4e800673a156f2827bb90fe193cde 100644 (file)
@@ -17,7 +17,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_mipi_dbi.h>
 #include <drm/drm_modeset_helper.h>
@@ -150,12 +150,12 @@ static const struct drm_display_mode mi0283qt_mode = {
        DRM_SIMPLE_MODE(320, 240, 58, 43),
 };
 
-DEFINE_DRM_GEM_CMA_FOPS(mi0283qt_fops);
+DEFINE_DRM_GEM_DMA_FOPS(mi0283qt_fops);
 
 static const struct drm_driver mi0283qt_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops                   = &mi0283qt_fops,
-       DRM_GEM_CMA_DRIVER_OPS_VMAP,
+       DRM_GEM_DMA_DRIVER_OPS_VMAP,
        .debugfs_init           = mipi_dbi_debugfs_init,
        .name                   = "mi0283qt",
        .desc                   = "Multi-Inno MI0283QT",
index c759ff9c2c875396a5356c07763cd615c2544ee3..a76fefa8adbc8701a2344bdd69eab26f39c8cdbd 100644 (file)
@@ -18,7 +18,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_mipi_dbi.h>
 #include <drm/drm_modes.h>
@@ -217,12 +217,12 @@ static const struct drm_simple_display_pipe_funcs panel_mipi_dbi_pipe_funcs = {
        .update = mipi_dbi_pipe_update,
 };
 
-DEFINE_DRM_GEM_CMA_FOPS(panel_mipi_dbi_fops);
+DEFINE_DRM_GEM_DMA_FOPS(panel_mipi_dbi_fops);
 
 static const struct drm_driver panel_mipi_dbi_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops                   = &panel_mipi_dbi_fops,
-       DRM_GEM_CMA_DRIVER_OPS_VMAP,
+       DRM_GEM_DMA_DRIVER_OPS_VMAP,
        .debugfs_init           = mipi_dbi_debugfs_init,
        .name                   = "panel-mipi-dbi",
        .desc                   = "MIPI DBI compatible display panel",
index 6d3b5b3cb955a26684d667de4c194fa555f5f2a1..4cd24b54ac74d5aeaa1ccad75cd2d4bd02e2bbe2 100644 (file)
@@ -30,7 +30,7 @@
 #include <drm/drm_format_helper.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_modes.h>
@@ -511,7 +511,7 @@ static void repaper_get_temperature(struct repaper_epd *epd)
 
 static int repaper_fb_dirty(struct drm_framebuffer *fb)
 {
-       struct drm_gem_cma_object *cma_obj = drm_fb_dma_get_gem_obj(fb, 0);
+       struct drm_gem_dma_object *dma_obj = drm_fb_dma_get_gem_obj(fb, 0);
        struct repaper_epd *epd = drm_to_epd(fb->dev);
        struct drm_rect clip;
        int idx, ret = 0;
@@ -541,7 +541,7 @@ static int repaper_fb_dirty(struct drm_framebuffer *fb)
        if (ret)
                goto out_free;
 
-       drm_fb_xrgb8888_to_mono(buf, 0, cma_obj->vaddr, fb, &clip);
+       drm_fb_xrgb8888_to_mono(buf, 0, dma_obj->vaddr, fb, &clip);
 
        drm_gem_fb_end_cpu_access(fb, DMA_FROM_DEVICE);
 
@@ -903,12 +903,12 @@ static const struct drm_display_mode repaper_e2271cs021_mode = {
 static const u8 repaper_e2271cs021_cs[] = { 0x00, 0x00, 0x00, 0x7f,
                                            0xff, 0xfe, 0x00, 0x00 };
 
-DEFINE_DRM_GEM_CMA_FOPS(repaper_fops);
+DEFINE_DRM_GEM_DMA_FOPS(repaper_fops);
 
 static const struct drm_driver repaper_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops                   = &repaper_fops,
-       DRM_GEM_CMA_DRIVER_OPS_VMAP,
+       DRM_GEM_DMA_DRIVER_OPS_VMAP,
        .name                   = "repaper",
        .desc                   = "Pervasive Displays RePaper e-ink panels",
        .date                   = "20170405",
index b1584b362c79b1fce1b5973f8b9bd9e7e22d9c14..94f55fac42952608d5a0a8f16a90c9f0643526b1 100644 (file)
@@ -20,7 +20,7 @@
 #include <drm/drm_format_helper.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_mipi_dbi.h>
@@ -92,8 +92,8 @@ static void st7586_xrgb8888_to_gray332(u8 *dst, void *vaddr,
 static int st7586_buf_copy(void *dst, struct drm_framebuffer *fb,
                           struct drm_rect *clip)
 {
-       struct drm_gem_cma_object *cma_obj = drm_fb_dma_get_gem_obj(fb, 0);
-       void *src = cma_obj->vaddr;
+       struct drm_gem_dma_object *dma_obj = drm_fb_dma_get_gem_obj(fb, 0);
+       void *src = dma_obj->vaddr;
        int ret = 0;
 
        ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE);
@@ -269,12 +269,12 @@ static const struct drm_display_mode st7586_mode = {
        DRM_SIMPLE_MODE(178, 128, 37, 27),
 };
 
-DEFINE_DRM_GEM_CMA_FOPS(st7586_fops);
+DEFINE_DRM_GEM_DMA_FOPS(st7586_fops);
 
 static const struct drm_driver st7586_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops                   = &st7586_fops,
-       DRM_GEM_CMA_DRIVER_OPS_VMAP,
+       DRM_GEM_DMA_DRIVER_OPS_VMAP,
        .debugfs_init           = mipi_dbi_debugfs_init,
        .name                   = "st7586",
        .desc                   = "Sitronix ST7586",
index e0f02d367d880ae4fceb2f2d3d0a8a15485b4332..d2042a0f02dd358b357fb63ba26d39f7289de5b7 100644 (file)
@@ -20,7 +20,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_mipi_dbi.h>
 
@@ -151,12 +151,12 @@ static const struct st7735r_cfg rh128128t_cfg = {
        .rgb            = true,
 };
 
-DEFINE_DRM_GEM_CMA_FOPS(st7735r_fops);
+DEFINE_DRM_GEM_DMA_FOPS(st7735r_fops);
 
 static const struct drm_driver st7735r_driver = {
        .driver_features        = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
        .fops                   = &st7735r_fops,
-       DRM_GEM_CMA_DRIVER_OPS_VMAP,
+       DRM_GEM_DMA_DRIVER_OPS_VMAP,
        .debugfs_init           = mipi_dbi_debugfs_init,
        .name                   = "st7735r",
        .desc                   = "Sitronix ST7735R",
index 47a7dbe6c11480ad8ce4d6fee8289d6abb6ba487..11e865be81c6d0416c3622060c52bcff06ca50e0 100644 (file)
@@ -8,7 +8,7 @@ config DRM_TVE200
        select DRM_BRIDGE
        select DRM_PANEL_BRIDGE
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select VT_HW_CONSOLE_BINDING if FRAMEBUFFER_CONSOLE
        help
          Choose this option for DRM support for the Faraday TV Encoder
index 6647aab8a25e28ce6b71bdc0ab85a589676ece40..37bdd976ae591ac4fbd6c9823cb019d9ea2bc860 100644 (file)
@@ -19,7 +19,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_atomic_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_panel.h>
 #include <drm/drm_vblank.h>
 
index 86ebfe626cd0b7c2aa70efb1608c7f6da36e9688..79d790ae1670e9500554de54827662677f1f13bc 100644 (file)
@@ -40,7 +40,7 @@
 #include <drm/drm_bridge.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_module.h>
 #include <drm/drm_of.h>
@@ -134,7 +134,7 @@ finish:
        return ret;
 }
 
-DEFINE_DRM_GEM_CMA_FOPS(drm_fops);
+DEFINE_DRM_GEM_DMA_FOPS(drm_fops);
 
 static const struct drm_driver tve200_drm_driver = {
        .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
@@ -146,7 +146,7 @@ static const struct drm_driver tve200_drm_driver = {
        .major = 1,
        .minor = 0,
        .patchlevel = 0,
-       DRM_GEM_CMA_DRIVER_OPS,
+       DRM_GEM_DMA_DRIVER_OPS,
 };
 
 static int tve200_probe(struct platform_device *pdev)
index 725a252e837bf566a7121ba1ca437397ad82c12d..b8980440d137f26e34a5513c2c62f9fa7b2e3ccf 100644 (file)
@@ -313,7 +313,7 @@ v3d_lookup_bos(struct drm_device *dev,
        }
 
        job->bo = kvmalloc_array(job->bo_count,
-                                sizeof(struct drm_gem_cma_object *),
+                                sizeof(struct drm_gem_dma_object *),
                                 GFP_KERNEL | __GFP_ZERO);
        if (!job->bo) {
                DRM_DEBUG("Failed to allocate validated BO pointers\n");
@@ -1092,7 +1092,7 @@ v3d_gem_init(struct drm_device *dev)
        if (!v3d->pt) {
                drm_mm_takedown(&v3d->mm);
                dev_err(v3d->drm.dev,
-                       "Failed to allocate page tables. Please ensure you have CMA enabled.\n");
+                       "Failed to allocate page tables. Please ensure you have DMA enabled.\n");
                return -ENOMEM;
        }
 
index b0f3117102ca5260e95a6e1bb25479d733e5f2d7..246305d17a52a3c756f3c3d6212bccae20f4e6cb 100644 (file)
@@ -12,7 +12,7 @@ config DRM_VC4
        select DRM_DISPLAY_HDMI_HELPER
        select DRM_DISPLAY_HELPER
        select DRM_KMS_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_PANEL_BRIDGE
        select SND_PCM
        select SND_PCM_ELD
index 2ccf96b764db275f447419034149399cb01c974c..07f57910c9e816d7d10ed64ea2bee8d1001eae5f 100644 (file)
@@ -8,10 +8,10 @@
  *
  * The VC4 GPU architecture (both scanout and rendering) has direct
  * access to system memory with no MMU in between.  To support it, we
- * use the GEM CMA helper functions to allocate contiguous ranges of
+ * use the GEM DMA helper functions to allocate contiguous ranges of
  * physical memory for our BOs.
  *
- * Since the CMA allocator is very slow, we keep a cache of recently
+ * Since the DMA allocator is very slow, we keep a cache of recently
  * freed BOs around so that the kernel's allocation of objects for 3D
  * rendering can return quickly.
  */
@@ -179,7 +179,7 @@ static void vc4_bo_destroy(struct vc4_bo *bo)
                bo->validated_shader = NULL;
        }
 
-       drm_gem_cma_free(&bo->base);
+       drm_gem_dma_free(&bo->base);
 }
 
 static void vc4_bo_remove_from_cache(struct vc4_bo *bo)
@@ -387,7 +387,7 @@ out:
  * @dev: DRM device
  * @size: Size in bytes of the memory the object will reference
  *
- * This lets the CMA helpers allocate object structs for us, and keep
+ * This lets the DMA helpers allocate object structs for us, and keep
  * our BO stats correct.
  */
 struct drm_gem_object *vc4_create_object(struct drm_device *dev, size_t size)
@@ -426,7 +426,7 @@ struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t unaligned_size,
 {
        size_t size = roundup(unaligned_size, PAGE_SIZE);
        struct vc4_dev *vc4 = to_vc4_dev(dev);
-       struct drm_gem_cma_object *cma_obj;
+       struct drm_gem_dma_object *dma_obj;
        struct vc4_bo *bo;
 
        if (WARN_ON_ONCE(vc4->is_vc5))
@@ -443,39 +443,39 @@ struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t unaligned_size,
                return bo;
        }
 
-       cma_obj = drm_gem_cma_create(dev, size);
-       if (IS_ERR(cma_obj)) {
+       dma_obj = drm_gem_dma_create(dev, size);
+       if (IS_ERR(dma_obj)) {
                /*
-                * If we've run out of CMA memory, kill the cache of
-                * CMA allocations we've got laying around and try again.
+                * If we've run out of DMA memory, kill the cache of
+                * DMA allocations we've got laying around and try again.
                 */
                vc4_bo_cache_purge(dev);
-               cma_obj = drm_gem_cma_create(dev, size);
+               dma_obj = drm_gem_dma_create(dev, size);
        }
 
-       if (IS_ERR(cma_obj)) {
+       if (IS_ERR(dma_obj)) {
                /*
-                * Still not enough CMA memory, purge the userspace BO
+                * Still not enough DMA memory, purge the userspace BO
                 * cache and retry.
                 * This is sub-optimal since we purge the whole userspace
                 * BO cache which forces user that want to re-use the BO to
                 * restore its initial content.
                 * Ideally, we should purge entries one by one and retry
-                * after each to see if CMA allocation succeeds. Or even
+                * after each to see if DMA allocation succeeds. Or even
                 * better, try to find an entry with at least the same
                 * size.
                 */
                vc4_bo_userspace_cache_purge(dev);
-               cma_obj = drm_gem_cma_create(dev, size);
+               dma_obj = drm_gem_dma_create(dev, size);
        }
 
-       if (IS_ERR(cma_obj)) {
+       if (IS_ERR(dma_obj)) {
                struct drm_printer p = drm_info_printer(vc4->base.dev);
-               DRM_ERROR("Failed to allocate from CMA:\n");
+               DRM_ERROR("Failed to allocate from GEM DMA helper:\n");
                vc4_bo_stats_print(&p, vc4);
                return ERR_PTR(-ENOMEM);
        }
-       bo = to_vc4_bo(&cma_obj->base);
+       bo = to_vc4_bo(&dma_obj->base);
 
        /* By default, BOs do not support the MADV ioctl. This will be enabled
         * only on BOs that are exposed to userspace (V3D, V3D_SHADER and DUMB
@@ -484,7 +484,7 @@ struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t unaligned_size,
        bo->madv = __VC4_MADV_NOTSUPP;
 
        mutex_lock(&vc4->bo_lock);
-       vc4_bo_set_label(&cma_obj->base, type);
+       vc4_bo_set_label(&dma_obj->base, type);
        mutex_unlock(&vc4->bo_lock);
 
        return bo;
@@ -569,7 +569,7 @@ static void vc4_free_object(struct drm_gem_object *gem_bo)
                goto out;
        }
 
-       /* If this object was partially constructed but CMA allocation
+       /* If this object was partially constructed but DMA allocation
         * had failed, just free it. Can also happen when the BO has been
         * purged.
         */
@@ -747,7 +747,7 @@ static int vc4_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_struct
                return -EINVAL;
        }
 
-       return drm_gem_cma_mmap(&bo->base, vma);
+       return drm_gem_dma_mmap(&bo->base, vma);
 }
 
 static const struct vm_operations_struct vc4_vm_ops = {
@@ -759,8 +759,8 @@ static const struct vm_operations_struct vc4_vm_ops = {
 static const struct drm_gem_object_funcs vc4_gem_object_funcs = {
        .free = vc4_free_object,
        .export = vc4_prime_export,
-       .get_sg_table = drm_gem_cma_object_get_sg_table,
-       .vmap = drm_gem_cma_object_vmap,
+       .get_sg_table = drm_gem_dma_object_get_sg_table,
+       .vmap = drm_gem_dma_object_vmap,
        .mmap = vc4_gem_object_mmap,
        .vm_ops = &vc4_vm_ops,
 };
index f857884017072d9adc3b844ca041047bd2d4db9b..2def6e2ad6f075940f7850cf103a501a72d9054b 100644 (file)
@@ -823,9 +823,9 @@ static void vc4_async_page_flip_seqno_complete(struct vc4_seqno_cb *cb)
        struct vc4_bo *bo = NULL;
 
        if (flip_state->old_fb) {
-               struct drm_gem_cma_object *cma_bo =
+               struct drm_gem_dma_object *dma_bo =
                        drm_fb_dma_get_gem_obj(flip_state->old_fb, 0);
-               bo = to_vc4_bo(&cma_bo->base);
+               bo = to_vc4_bo(&dma_bo->base);
        }
 
        vc4_async_page_flip_complete(flip_state);
@@ -857,19 +857,19 @@ static int vc4_async_set_fence_cb(struct drm_device *dev,
                                  struct vc4_async_flip_state *flip_state)
 {
        struct drm_framebuffer *fb = flip_state->fb;
-       struct drm_gem_cma_object *cma_bo = drm_fb_dma_get_gem_obj(fb, 0);
+       struct drm_gem_dma_object *dma_bo = drm_fb_dma_get_gem_obj(fb, 0);
        struct vc4_dev *vc4 = to_vc4_dev(dev);
        struct dma_fence *fence;
        int ret;
 
        if (!vc4->is_vc5) {
-               struct vc4_bo *bo = to_vc4_bo(&cma_bo->base);
+               struct vc4_bo *bo = to_vc4_bo(&dma_bo->base);
 
                return vc4_queue_seqno_cb(dev, &flip_state->cb.seqno, bo->seqno,
                                          vc4_async_page_flip_seqno_complete);
        }
 
-       ret = dma_resv_get_singleton(cma_bo->base.resv, DMA_RESV_USAGE_READ, &fence);
+       ret = dma_resv_get_singleton(dma_bo->base.resv, DMA_RESV_USAGE_READ, &fence);
        if (ret)
                return ret;
 
@@ -945,8 +945,8 @@ static int vc4_async_page_flip(struct drm_crtc *crtc,
 {
        struct drm_device *dev = crtc->dev;
        struct vc4_dev *vc4 = to_vc4_dev(dev);
-       struct drm_gem_cma_object *cma_bo = drm_fb_dma_get_gem_obj(fb, 0);
-       struct vc4_bo *bo = to_vc4_bo(&cma_bo->base);
+       struct drm_gem_dma_object *dma_bo = drm_fb_dma_get_gem_obj(fb, 0);
+       struct vc4_bo *bo = to_vc4_bo(&dma_bo->base);
        int ret;
 
        if (WARN_ON_ONCE(vc4->is_vc5))
index d33baf2667dde11724ac0389e462bde0583c5800..ffbbb454c9e878e71be0df45dac2b4c928c89059 100644 (file)
@@ -85,7 +85,7 @@ static int vc5_dumb_create(struct drm_file *file_priv,
        if (ret)
                return ret;
 
-       return drm_gem_cma_dumb_create_internal(file_priv, dev, args);
+       return drm_gem_dma_dumb_create_internal(file_priv, dev, args);
 }
 
 static int vc4_get_param_ioctl(struct drm_device *dev, void *data,
@@ -211,7 +211,7 @@ static const struct drm_driver vc4_drm_driver = {
 
        .gem_create_object = vc4_create_object,
 
-       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(vc4_bo_dumb_create),
+       DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE(vc4_bo_dumb_create),
 
        .ioctls = vc4_drm_ioctls,
        .num_ioctls = ARRAY_SIZE(vc4_drm_ioctls),
@@ -234,7 +234,7 @@ static const struct drm_driver vc5_drm_driver = {
        .debugfs_init = vc4_debugfs_init,
 #endif
 
-       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(vc5_dumb_create),
+       DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE(vc5_dumb_create),
 
        .fops = &vc4_drm_fops,
 
index 1649350b9efda3554d8e8b8097ded94c4d52fba0..418a8242691f26b2cf6952b56eec23c65e849ef5 100644 (file)
@@ -14,7 +14,7 @@
 #include <drm/drm_debugfs.h>
 #include <drm/drm_device.h>
 #include <drm/drm_encoder.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_mm.h>
 #include <drm/drm_modeset_lock.h>
@@ -239,7 +239,7 @@ to_vc4_dev(struct drm_device *dev)
 }
 
 struct vc4_bo {
-       struct drm_gem_cma_object base;
+       struct drm_gem_dma_object base;
 
        /* seqno of the last job to render using this BO. */
        uint64_t seqno;
@@ -288,7 +288,7 @@ struct vc4_bo {
 static inline struct vc4_bo *
 to_vc4_bo(struct drm_gem_object *bo)
 {
-       return container_of(to_drm_gem_cma_obj(bo), struct vc4_bo, base);
+       return container_of(to_drm_gem_dma_obj(bo), struct vc4_bo, base);
 }
 
 struct vc4_fence {
@@ -602,14 +602,14 @@ struct vc4_exec_info {
        /* This is the array of BOs that were looked up at the start of exec.
         * Command validation will use indices into this array.
         */
-       struct drm_gem_cma_object **bo;
+       struct drm_gem_dma_object **bo;
        uint32_t bo_count;
 
        /* List of BOs that are being written by the RCL.  Other than
         * the binner temporary storage, this is all the BOs written
         * by the job.
         */
-       struct drm_gem_cma_object *rcl_write_bo[4];
+       struct drm_gem_dma_object *rcl_write_bo[4];
        uint32_t rcl_write_bo_count;
 
        /* Pointers for our position in vc4->job_list */
@@ -628,7 +628,7 @@ struct vc4_exec_info {
        /* This is the BO where we store the validated command lists, shader
         * records, and uniforms.
         */
-       struct drm_gem_cma_object *exec_bo;
+       struct drm_gem_dma_object *exec_bo;
 
        /**
         * This tracks the per-shader-record state (packet 64) that
@@ -989,19 +989,19 @@ vc4_validate_bin_cl(struct drm_device *dev,
 int
 vc4_validate_shader_recs(struct drm_device *dev, struct vc4_exec_info *exec);
 
-struct drm_gem_cma_object *vc4_use_bo(struct vc4_exec_info *exec,
+struct drm_gem_dma_object *vc4_use_bo(struct vc4_exec_info *exec,
                                      uint32_t hindex);
 
 int vc4_get_rcl(struct drm_device *dev, struct vc4_exec_info *exec);
 
 bool vc4_check_tex_size(struct vc4_exec_info *exec,
-                       struct drm_gem_cma_object *fbo,
+                       struct drm_gem_dma_object *fbo,
                        uint32_t offset, uint8_t tiling_format,
                        uint32_t width, uint32_t height, uint8_t cpp);
 
 /* vc4_validate_shader.c */
 struct vc4_validated_shader_info *
-vc4_validate_shader(struct drm_gem_cma_object *shader_obj);
+vc4_validate_shader(struct drm_gem_dma_object *shader_obj);
 
 /* vc4_perfmon.c */
 void vc4_perfmon_get(struct vc4_perfmon *perfmon);
index 7acb43972e6989d66c3c790e5e47b98ed13ec9fb..56a0af281b929b8b11364afa372493b4299728c1 100644 (file)
@@ -764,7 +764,7 @@ vc4_cl_lookup_bos(struct drm_device *dev,
        }
 
        exec->bo = kvmalloc_array(exec->bo_count,
-                                   sizeof(struct drm_gem_cma_object *),
+                                   sizeof(struct drm_gem_dma_object *),
                                    GFP_KERNEL | __GFP_ZERO);
        if (!exec->bo) {
                DRM_ERROR("Failed to allocate validated BO pointers\n");
@@ -797,7 +797,7 @@ vc4_cl_lookup_bos(struct drm_device *dev,
                }
 
                drm_gem_object_get(bo);
-               exec->bo[i] = (struct drm_gem_cma_object *)bo;
+               exec->bo[i] = (struct drm_gem_dma_object *)bo;
        }
        spin_unlock(&file_priv->table_lock);
 
index 51e0e8aa2135aec12bfa51a7d8ead3f262e61961..b76b0e602c8105a85c831430a4123f4c8643a8c0 100644 (file)
@@ -339,7 +339,7 @@ static int vc4_plane_setup_clipping_and_scaling(struct drm_plane_state *state)
 {
        struct vc4_plane_state *vc4_state = to_vc4_plane_state(state);
        struct drm_framebuffer *fb = state->fb;
-       struct drm_gem_cma_object *bo = drm_fb_dma_get_gem_obj(fb, 0);
+       struct drm_gem_dma_object *bo = drm_fb_dma_get_gem_obj(fb, 0);
        int num_planes = fb->format->num_planes;
        struct drm_crtc_state *crtc_state;
        u32 h_subsample = fb->format->hsub;
@@ -1243,7 +1243,7 @@ u32 vc4_plane_dlist_size(const struct drm_plane_state *state)
 void vc4_plane_async_set_fb(struct drm_plane *plane, struct drm_framebuffer *fb)
 {
        struct vc4_plane_state *vc4_state = to_vc4_plane_state(plane->state);
-       struct drm_gem_cma_object *bo = drm_fb_dma_get_gem_obj(fb, 0);
+       struct drm_gem_dma_object *bo = drm_fb_dma_get_gem_obj(fb, 0);
        uint32_t addr;
 
        /* We're skipping the address adjustment for negative origin,
index f6b7dc3df08cd52c6f778b14cd02aac74b0ffb6e..c8a92023238c259b0968c5dc43eb366f6377f7d5 100644 (file)
 #include "vc4_packet.h"
 
 struct vc4_rcl_setup {
-       struct drm_gem_cma_object *color_read;
-       struct drm_gem_cma_object *color_write;
-       struct drm_gem_cma_object *zs_read;
-       struct drm_gem_cma_object *zs_write;
-       struct drm_gem_cma_object *msaa_color_write;
-       struct drm_gem_cma_object *msaa_zs_write;
-
-       struct drm_gem_cma_object *rcl;
+       struct drm_gem_dma_object *color_read;
+       struct drm_gem_dma_object *color_write;
+       struct drm_gem_dma_object *zs_read;
+       struct drm_gem_dma_object *zs_write;
+       struct drm_gem_dma_object *msaa_color_write;
+       struct drm_gem_dma_object *msaa_zs_write;
+
+       struct drm_gem_dma_object *rcl;
        u32 next_offset;
 
        u32 next_write_bo_index;
@@ -97,7 +97,7 @@ static void vc4_store_before_load(struct vc4_rcl_setup *setup)
  * coordinates packet, and instead just store to the address given.
  */
 static uint32_t vc4_full_res_offset(struct vc4_exec_info *exec,
-                                   struct drm_gem_cma_object *bo,
+                                   struct drm_gem_dma_object *bo,
                                    struct drm_vc4_submit_rcl_surface *surf,
                                    uint8_t x, uint8_t y)
 {
@@ -381,7 +381,7 @@ static int vc4_create_rcl_bo(struct drm_device *dev, struct vc4_exec_info *exec,
 }
 
 static int vc4_full_res_bounds_check(struct vc4_exec_info *exec,
-                                    struct drm_gem_cma_object *obj,
+                                    struct drm_gem_dma_object *obj,
                                     struct drm_vc4_submit_rcl_surface *surf)
 {
        struct drm_vc4_submit_cl *args = exec->args;
@@ -407,7 +407,7 @@ static int vc4_full_res_bounds_check(struct vc4_exec_info *exec,
 }
 
 static int vc4_rcl_msaa_surface_setup(struct vc4_exec_info *exec,
-                                     struct drm_gem_cma_object **obj,
+                                     struct drm_gem_dma_object **obj,
                                      struct drm_vc4_submit_rcl_surface *surf)
 {
        if (surf->flags != 0 || surf->bits != 0) {
@@ -433,7 +433,7 @@ static int vc4_rcl_msaa_surface_setup(struct vc4_exec_info *exec,
 }
 
 static int vc4_rcl_surface_setup(struct vc4_exec_info *exec,
-                                struct drm_gem_cma_object **obj,
+                                struct drm_gem_dma_object **obj,
                                 struct drm_vc4_submit_rcl_surface *surf,
                                 bool is_write)
 {
@@ -533,7 +533,7 @@ static int vc4_rcl_surface_setup(struct vc4_exec_info *exec,
 static int
 vc4_rcl_render_config_surface_setup(struct vc4_exec_info *exec,
                                    struct vc4_rcl_setup *setup,
-                                   struct drm_gem_cma_object **obj,
+                                   struct drm_gem_dma_object **obj,
                                    struct drm_vc4_submit_rcl_surface *surf)
 {
        uint8_t tiling = VC4_GET_FIELD(surf->bits,
index af48ae68f213e3ee5ae3a797df911fe659d071d9..811bc7d9b90c14c92d4c035ef8a8392ea036c1ef 100644 (file)
@@ -280,7 +280,7 @@ static void vc4_txp_connector_atomic_commit(struct drm_connector *conn,
        struct drm_connector_state *conn_state = drm_atomic_get_new_connector_state(state,
                                                                                    conn);
        struct vc4_txp *txp = connector_to_vc4_txp(conn);
-       struct drm_gem_cma_object *gem;
+       struct drm_gem_dma_object *gem;
        struct drm_display_mode *mode;
        struct drm_framebuffer *fb;
        u32 ctrl;
index 40f04157ea39dd7e660306e9346620727a94eb19..6222c884dcbb6262490082b0f9e59194cb94a265 100644 (file)
@@ -231,7 +231,7 @@ try_again:
  * if it doesn't fit within the buffer that we allocated up front.
  * However, it turns out that 16MB is "enough for anybody", and
  * real-world applications run into allocation failures from the
- * overall CMA pool before they make scenes complicated enough to run
+ * overall DMA pool before they make scenes complicated enough to run
  * out of bin space.
  */
 static int bin_bo_alloc(struct vc4_dev *vc4)
@@ -261,7 +261,7 @@ static int bin_bo_alloc(struct vc4_dev *vc4)
 
                        dev_err(&v3d->pdev->dev,
                                "Failed to allocate memory for tile binning: "
-                               "%d. You may need to enable CMA or give it "
+                               "%d. You may need to enable DMA or give it "
                                "more memory.",
                                ret);
                        break;
index 2feba55bcef7bb7d171ad13a10c28ee792a119aa..d5dc6b51ec6946e8b2bd5ec2c8ddb63514f1c42e 100644 (file)
@@ -102,11 +102,11 @@ size_is_lt(uint32_t width, uint32_t height, int cpp)
                height <= 4 * utile_height(cpp));
 }
 
-struct drm_gem_cma_object *
+struct drm_gem_dma_object *
 vc4_use_bo(struct vc4_exec_info *exec, uint32_t hindex)
 {
        struct vc4_dev *vc4 = exec->dev;
-       struct drm_gem_cma_object *obj;
+       struct drm_gem_dma_object *obj;
        struct vc4_bo *bo;
 
        if (WARN_ON_ONCE(vc4->is_vc5))
@@ -129,7 +129,7 @@ vc4_use_bo(struct vc4_exec_info *exec, uint32_t hindex)
        return obj;
 }
 
-static struct drm_gem_cma_object *
+static struct drm_gem_dma_object *
 vc4_use_handle(struct vc4_exec_info *exec, uint32_t gem_handles_packet_index)
 {
        return vc4_use_bo(exec, exec->bo_index[gem_handles_packet_index]);
@@ -160,7 +160,7 @@ gl_shader_rec_size(uint32_t pointer_bits)
 }
 
 bool
-vc4_check_tex_size(struct vc4_exec_info *exec, struct drm_gem_cma_object *fbo,
+vc4_check_tex_size(struct vc4_exec_info *exec, struct drm_gem_dma_object *fbo,
                   uint32_t offset, uint8_t tiling_format,
                   uint32_t width, uint32_t height, uint8_t cpp)
 {
@@ -263,7 +263,7 @@ validate_increment_semaphore(VALIDATE_ARGS)
 static int
 validate_indexed_prim_list(VALIDATE_ARGS)
 {
-       struct drm_gem_cma_object *ib;
+       struct drm_gem_dma_object *ib;
        uint32_t length = *(uint32_t *)(untrusted + 1);
        uint32_t offset = *(uint32_t *)(untrusted + 5);
        uint32_t max_index = *(uint32_t *)(untrusted + 9);
@@ -575,7 +575,7 @@ reloc_tex(struct vc4_exec_info *exec,
          struct vc4_texture_sample_info *sample,
          uint32_t texture_handle_index, bool is_cs)
 {
-       struct drm_gem_cma_object *tex;
+       struct drm_gem_dma_object *tex;
        uint32_t p0 = *(uint32_t *)(uniform_data_u + sample->p_offset[0]);
        uint32_t p1 = *(uint32_t *)(uniform_data_u + sample->p_offset[1]);
        uint32_t p2 = (sample->p_offset[2] != ~0 ?
@@ -765,7 +765,7 @@ validate_gl_shader_rec(struct drm_device *dev,
                28, /* cs */
        };
        uint32_t shader_reloc_count = ARRAY_SIZE(shader_reloc_offsets);
-       struct drm_gem_cma_object *bo[ARRAY_SIZE(shader_reloc_offsets) + 8];
+       struct drm_gem_dma_object *bo[ARRAY_SIZE(shader_reloc_offsets) + 8];
        uint32_t nr_attributes, nr_relocs, packet_size;
        int i;
 
@@ -896,7 +896,7 @@ validate_gl_shader_rec(struct drm_device *dev,
        }
 
        for (i = 0; i < nr_attributes; i++) {
-               struct drm_gem_cma_object *vbo =
+               struct drm_gem_dma_object *vbo =
                        bo[ARRAY_SIZE(shader_reloc_offsets) + i];
                uint32_t o = 36 + i * 8;
                uint32_t offset = *(uint32_t *)(pkt_u + o + 0);
index e315aeb5fef5a8a667bc7803452cde4056eeebc6..9745f8810eca6d2559f8a2e912eca5f28d01eb65 100644 (file)
@@ -776,7 +776,7 @@ vc4_handle_branch_target(struct vc4_shader_validation_state *validation_state)
 }
 
 struct vc4_validated_shader_info *
-vc4_validate_shader(struct drm_gem_cma_object *shader_obj)
+vc4_validate_shader(struct drm_gem_dma_object *shader_obj)
 {
        struct vc4_dev *vc4 = to_vc4_dev(shader_obj->base.dev);
        bool found_shader_end = false;
index f9cf93c9e7e3022fe8464f673cf6f83fc69ade32..68ee897de9d758848fe1632d44a3fba566f97a13 100644 (file)
@@ -8,7 +8,7 @@ config DRM_ZYNQMP_DPSUB
        select DMA_ENGINE
        select DRM_DISPLAY_DP_HELPER
        select DRM_DISPLAY_HELPER
-       select DRM_GEM_CMA_HELPER
+       select DRM_GEM_DMA_HELPER
        select DRM_KMS_HELPER
        select GENERIC_PHY
        help
index 824b510e337b7ea072a5b830a112747e3b18a2ad..1de2d927c32b07fc774b9e27575fcf28e3594791 100644 (file)
@@ -21,7 +21,7 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
-#include <drm/drm_gem_cma_helper.h>
+#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_mode_config.h>
@@ -47,7 +47,7 @@ static int zynqmp_dpsub_dumb_create(struct drm_file *file_priv,
        /* Enforce the alignment constraints of the DMA engine. */
        args->pitch = ALIGN(pitch, dpsub->dma_align);
 
-       return drm_gem_cma_dumb_create_internal(file_priv, drm, args);
+       return drm_gem_dma_dumb_create_internal(file_priv, drm, args);
 }
 
 static struct drm_framebuffer *
@@ -75,13 +75,13 @@ static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
  * DRM/KMS Driver
  */
 
-DEFINE_DRM_GEM_CMA_FOPS(zynqmp_dpsub_drm_fops);
+DEFINE_DRM_GEM_DMA_FOPS(zynqmp_dpsub_drm_fops);
 
 static const struct drm_driver zynqmp_dpsub_drm_driver = {
        .driver_features                = DRIVER_MODESET | DRIVER_GEM |
                                          DRIVER_ATOMIC,
 
-       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(zynqmp_dpsub_dumb_create),
+       DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE(zynqmp_dpsub_dumb_create),
 
        .fops                           = &zynqmp_dpsub_drm_fops,
 
index 05f657363b30250190c74a74afbcd4ca643f2e5f..d5e036c578019b47abab96f753a5aee0610dfa5c 100644 (file)
@@ -8,7 +8,7 @@ struct drm_device;
 struct drm_framebuffer;
 struct drm_plane_state;
 
-struct drm_gem_cma_object *drm_fb_dma_get_gem_obj(struct drm_framebuffer *fb,
+struct drm_gem_dma_object *drm_fb_dma_get_gem_obj(struct drm_framebuffer *fb,
        unsigned int plane);
 
 dma_addr_t drm_fb_dma_get_gem_addr(struct drm_framebuffer *fb,
index 87cffc9efa85500947d53364600524b7ea5a14bb..58a18a17c67ebb9c0d5b61f92f47947b281ed449 100644 (file)
@@ -217,7 +217,7 @@ struct drm_gem_object {
         *
         * SHMEM file node used as backing storage for swappable buffer objects.
         * GEM also supports driver private objects with driver-specific backing
-        * storage (contiguous CMA memory, special reserved blocks). In this
+        * storage (contiguous DMA memory, special reserved blocks). In this
         * case @filp is NULL.
         */
        struct file *filp;
diff --git a/include/drm/drm_gem_cma_helper.h b/include/drm/drm_gem_cma_helper.h
deleted file mode 100644 (file)
index fbda4ce..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __DRM_GEM_CMA_HELPER_H__
-#define __DRM_GEM_CMA_HELPER_H__
-
-#include <drm/drm_file.h>
-#include <drm/drm_ioctl.h>
-#include <drm/drm_gem.h>
-
-struct drm_mode_create_dumb;
-
-/**
- * struct drm_gem_cma_object - GEM object backed by CMA memory allocations
- * @base: base GEM object
- * @paddr: physical address of the backing memory
- * @sgt: scatter/gather table for imported PRIME buffers. The table can have
- *       more than one entry but they are guaranteed to have contiguous
- *       DMA addresses.
- * @vaddr: kernel virtual address of the backing memory
- * @map_noncoherent: if true, the GEM object is backed by non-coherent memory
- */
-struct drm_gem_cma_object {
-       struct drm_gem_object base;
-       dma_addr_t paddr;
-       struct sg_table *sgt;
-
-       /* For objects with DMA memory allocated by GEM CMA */
-       void *vaddr;
-
-       bool map_noncoherent;
-};
-
-#define to_drm_gem_cma_obj(gem_obj) \
-       container_of(gem_obj, struct drm_gem_cma_object, base)
-
-struct drm_gem_cma_object *drm_gem_cma_create(struct drm_device *drm,
-                                             size_t size);
-void drm_gem_cma_free(struct drm_gem_cma_object *cma_obj);
-void drm_gem_cma_print_info(const struct drm_gem_cma_object *cma_obj,
-                           struct drm_printer *p, unsigned int indent);
-struct sg_table *drm_gem_cma_get_sg_table(struct drm_gem_cma_object *cma_obj);
-int drm_gem_cma_vmap(struct drm_gem_cma_object *cma_obj,
-                    struct iosys_map *map);
-int drm_gem_cma_mmap(struct drm_gem_cma_object *cma_obj, struct vm_area_struct *vma);
-
-extern const struct vm_operations_struct drm_gem_cma_vm_ops;
-
-/*
- * GEM object functions
- */
-
-/**
- * drm_gem_cma_object_free - GEM object function for drm_gem_cma_free()
- * @obj: GEM object to free
- *
- * This function wraps drm_gem_cma_free_object(). Drivers that employ the CMA helpers
- * should use it as their &drm_gem_object_funcs.free handler.
- */
-static inline void drm_gem_cma_object_free(struct drm_gem_object *obj)
-{
-       struct drm_gem_cma_object *cma_obj = to_drm_gem_cma_obj(obj);
-
-       drm_gem_cma_free(cma_obj);
-}
-
-/**
- * drm_gem_cma_object_print_info() - Print &drm_gem_cma_object info for debugfs
- * @p: DRM printer
- * @indent: Tab indentation level
- * @obj: GEM object
- *
- * This function wraps drm_gem_cma_print_info(). Drivers that employ the CMA helpers
- * should use this function as their &drm_gem_object_funcs.print_info handler.
- */
-static inline void drm_gem_cma_object_print_info(struct drm_printer *p, unsigned int indent,
-                                                const struct drm_gem_object *obj)
-{
-       const struct drm_gem_cma_object *cma_obj = to_drm_gem_cma_obj(obj);
-
-       drm_gem_cma_print_info(cma_obj, p, indent);
-}
-
-/**
- * drm_gem_cma_object_get_sg_table - GEM object function for drm_gem_cma_get_sg_table()
- * @obj: GEM object
- *
- * This function wraps drm_gem_cma_get_sg_table(). Drivers that employ the CMA helpers should
- * use it as their &drm_gem_object_funcs.get_sg_table handler.
- *
- * Returns:
- * A pointer to the scatter/gather table of pinned pages or NULL on failure.
- */
-static inline struct sg_table *drm_gem_cma_object_get_sg_table(struct drm_gem_object *obj)
-{
-       struct drm_gem_cma_object *cma_obj = to_drm_gem_cma_obj(obj);
-
-       return drm_gem_cma_get_sg_table(cma_obj);
-}
-
-/*
- * drm_gem_cma_object_vmap - GEM object function for drm_gem_cma_vmap()
- * @obj: GEM object
- * @map: Returns the kernel virtual address of the CMA GEM object's backing store.
- *
- * This function wraps drm_gem_cma_vmap(). Drivers that employ the CMA helpers should
- * use it as their &drm_gem_object_funcs.vmap handler.
- *
- * Returns:
- * 0 on success or a negative error code on failure.
- */
-static inline int drm_gem_cma_object_vmap(struct drm_gem_object *obj,
-                                         struct iosys_map *map)
-{
-       struct drm_gem_cma_object *cma_obj = to_drm_gem_cma_obj(obj);
-
-       return drm_gem_cma_vmap(cma_obj, map);
-}
-
-/**
- * drm_gem_cma_object_mmap - GEM object function for drm_gem_cma_mmap()
- * @obj: GEM object
- * @vma: VMA for the area to be mapped
- *
- * This function wraps drm_gem_cma_mmap(). Drivers that employ the cma helpers should
- * use it as their &drm_gem_object_funcs.mmap handler.
- *
- * Returns:
- * 0 on success or a negative error code on failure.
- */
-static inline int drm_gem_cma_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
-{
-       struct drm_gem_cma_object *cma_obj = to_drm_gem_cma_obj(obj);
-
-       return drm_gem_cma_mmap(cma_obj, vma);
-}
-
-/*
- * Driver ops
- */
-
-/* create memory region for DRM framebuffer */
-int drm_gem_cma_dumb_create_internal(struct drm_file *file_priv,
-                                    struct drm_device *drm,
-                                    struct drm_mode_create_dumb *args);
-
-/* create memory region for DRM framebuffer */
-int drm_gem_cma_dumb_create(struct drm_file *file_priv,
-                           struct drm_device *drm,
-                           struct drm_mode_create_dumb *args);
-
-struct drm_gem_object *
-drm_gem_cma_prime_import_sg_table(struct drm_device *dev,
-                                 struct dma_buf_attachment *attach,
-                                 struct sg_table *sgt);
-
-/**
- * DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE - CMA GEM driver operations
- * @dumb_create_func: callback function for .dumb_create
- *
- * This macro provides a shortcut for setting the default GEM operations in the
- * &drm_driver structure.
- *
- * 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. Drivers that require a virtual address
- * on imported buffers should use
- * DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE() instead.
- */
-#define DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(dumb_create_func) \
-       .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, \
-       .gem_prime_mmap         = drm_gem_prime_mmap
-
-/**
- * DRM_GEM_CMA_DRIVER_OPS - CMA GEM driver operations
- *
- * This macro provides a shortcut for setting the default GEM operations in the
- * &drm_driver structure.
- *
- * 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. Drivers that require a virtual address
- * on imported buffers should use DRM_GEM_CMA_DRIVER_OPS_VMAP instead.
- */
-#define DRM_GEM_CMA_DRIVER_OPS \
-       DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE(drm_gem_cma_dumb_create)
-
-/**
- * DRM_GEM_CMA_DRIVER_OPS_VMAP_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_VMAP for drivers that
- * override the default implementation of &struct drm_driver.dumb_create. Use
- * DRM_GEM_CMA_DRIVER_OPS_VMAP if possible. Drivers that do not require a
- * virtual address on imported buffers should use
- * DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE() instead.
- */
-#define DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(dumb_create_func) \
-       .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_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. Drivers that do not require a
- * virtual address on imported buffers should use DRM_GEM_CMA_DRIVER_OPS
- * instead.
- */
-#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 *
-drm_gem_cma_prime_import_sg_table_vmap(struct drm_device *drm,
-                                      struct dma_buf_attachment *attach,
-                                      struct sg_table *sgt);
-
-/*
- * File ops
- */
-
-#ifndef CONFIG_MMU
-unsigned long drm_gem_cma_get_unmapped_area(struct file *filp,
-                                           unsigned long addr,
-                                           unsigned long len,
-                                           unsigned long pgoff,
-                                           unsigned long flags);
-#define DRM_GEM_CMA_UNMAPPED_AREA_FOPS \
-       .get_unmapped_area      = drm_gem_cma_get_unmapped_area,
-#else
-#define DRM_GEM_CMA_UNMAPPED_AREA_FOPS
-#endif
-
-/**
- * DEFINE_DRM_GEM_CMA_FOPS() - macro to generate file operations for CMA drivers
- * @name: name for the generated structure
- *
- * This macro autogenerates a suitable &struct file_operations for CMA based
- * drivers, which can be assigned to &drm_driver.fops. Note that this structure
- * cannot be shared between drivers, because it contains a reference to the
- * current module using THIS_MODULE.
- *
- * Note that the declaration is already marked as static - if you need a
- * non-static version of this you're probably doing it wrong and will break the
- * THIS_MODULE reference by accident.
- */
-#define DEFINE_DRM_GEM_CMA_FOPS(name) \
-       static const struct file_operations name = {\
-               .owner          = THIS_MODULE,\
-               .open           = drm_open,\
-               .release        = drm_release,\
-               .unlocked_ioctl = drm_ioctl,\
-               .compat_ioctl   = drm_compat_ioctl,\
-               .poll           = drm_poll,\
-               .read           = drm_read,\
-               .llseek         = noop_llseek,\
-               .mmap           = drm_gem_mmap,\
-               DRM_GEM_CMA_UNMAPPED_AREA_FOPS \
-       }
-
-#endif /* __DRM_GEM_CMA_HELPER_H__ */
diff --git a/include/drm/drm_gem_dma_helper.h b/include/drm/drm_gem_dma_helper.h
new file mode 100644 (file)
index 0000000..8280506
--- /dev/null
@@ -0,0 +1,279 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __DRM_GEM_DMA_HELPER_H__
+#define __DRM_GEM_DMA_HELPER_H__
+
+#include <drm/drm_file.h>
+#include <drm/drm_ioctl.h>
+#include <drm/drm_gem.h>
+
+struct drm_mode_create_dumb;
+
+/**
+ * struct drm_gem_dma_object - GEM object backed by DMA memory allocations
+ * @base: base GEM object
+ * @paddr: DMA address of the backing memory
+ * @sgt: scatter/gather table for imported PRIME buffers. The table can have
+ *       more than one entry but they are guaranteed to have contiguous
+ *       DMA addresses.
+ * @vaddr: kernel virtual address of the backing memory
+ * @map_noncoherent: if true, the GEM object is backed by non-coherent memory
+ */
+struct drm_gem_dma_object {
+       struct drm_gem_object base;
+       dma_addr_t paddr;
+       struct sg_table *sgt;
+
+       /* For objects with DMA memory allocated by GEM DMA */
+       void *vaddr;
+
+       bool map_noncoherent;
+};
+
+#define to_drm_gem_dma_obj(gem_obj) \
+       container_of(gem_obj, struct drm_gem_dma_object, base)
+
+struct drm_gem_dma_object *drm_gem_dma_create(struct drm_device *drm,
+                                             size_t size);
+void drm_gem_dma_free(struct drm_gem_dma_object *dma_obj);
+void drm_gem_dma_print_info(const struct drm_gem_dma_object *dma_obj,
+                           struct drm_printer *p, unsigned int indent);
+struct sg_table *drm_gem_dma_get_sg_table(struct drm_gem_dma_object *dma_obj);
+int drm_gem_dma_vmap(struct drm_gem_dma_object *dma_obj,
+                    struct iosys_map *map);
+int drm_gem_dma_mmap(struct drm_gem_dma_object *dma_obj, struct vm_area_struct *vma);
+
+extern const struct vm_operations_struct drm_gem_dma_vm_ops;
+
+/*
+ * GEM object functions
+ */
+
+/**
+ * drm_gem_dma_object_free - GEM object function for drm_gem_dma_free()
+ * @obj: GEM object to free
+ *
+ * This function wraps drm_gem_dma_free_object(). Drivers that employ the DMA helpers
+ * should use it as their &drm_gem_object_funcs.free handler.
+ */
+static inline void drm_gem_dma_object_free(struct drm_gem_object *obj)
+{
+       struct drm_gem_dma_object *dma_obj = to_drm_gem_dma_obj(obj);
+
+       drm_gem_dma_free(dma_obj);
+}
+
+/**
+ * drm_gem_dma_object_print_info() - Print &drm_gem_dma_object info for debugfs
+ * @p: DRM printer
+ * @indent: Tab indentation level
+ * @obj: GEM object
+ *
+ * This function wraps drm_gem_dma_print_info(). Drivers that employ the DMA helpers
+ * should use this function as their &drm_gem_object_funcs.print_info handler.
+ */
+static inline void drm_gem_dma_object_print_info(struct drm_printer *p, unsigned int indent,
+                                                const struct drm_gem_object *obj)
+{
+       const struct drm_gem_dma_object *dma_obj = to_drm_gem_dma_obj(obj);
+
+       drm_gem_dma_print_info(dma_obj, p, indent);
+}
+
+/**
+ * drm_gem_dma_object_get_sg_table - GEM object function for drm_gem_dma_get_sg_table()
+ * @obj: GEM object
+ *
+ * This function wraps drm_gem_dma_get_sg_table(). Drivers that employ the DMA helpers should
+ * use it as their &drm_gem_object_funcs.get_sg_table handler.
+ *
+ * Returns:
+ * A pointer to the scatter/gather table of pinned pages or NULL on failure.
+ */
+static inline struct sg_table *drm_gem_dma_object_get_sg_table(struct drm_gem_object *obj)
+{
+       struct drm_gem_dma_object *dma_obj = to_drm_gem_dma_obj(obj);
+
+       return drm_gem_dma_get_sg_table(dma_obj);
+}
+
+/*
+ * drm_gem_dma_object_vmap - GEM object function for drm_gem_dma_vmap()
+ * @obj: GEM object
+ * @map: Returns the kernel virtual address of the DMA GEM object's backing store.
+ *
+ * This function wraps drm_gem_dma_vmap(). Drivers that employ the DMA helpers should
+ * use it as their &drm_gem_object_funcs.vmap handler.
+ *
+ * Returns:
+ * 0 on success or a negative error code on failure.
+ */
+static inline int drm_gem_dma_object_vmap(struct drm_gem_object *obj,
+                                         struct iosys_map *map)
+{
+       struct drm_gem_dma_object *dma_obj = to_drm_gem_dma_obj(obj);
+
+       return drm_gem_dma_vmap(dma_obj, map);
+}
+
+/**
+ * drm_gem_dma_object_mmap - GEM object function for drm_gem_dma_mmap()
+ * @obj: GEM object
+ * @vma: VMA for the area to be mapped
+ *
+ * This function wraps drm_gem_dma_mmap(). Drivers that employ the dma helpers should
+ * use it as their &drm_gem_object_funcs.mmap handler.
+ *
+ * Returns:
+ * 0 on success or a negative error code on failure.
+ */
+static inline int drm_gem_dma_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+{
+       struct drm_gem_dma_object *dma_obj = to_drm_gem_dma_obj(obj);
+
+       return drm_gem_dma_mmap(dma_obj, vma);
+}
+
+/*
+ * Driver ops
+ */
+
+/* create memory region for DRM framebuffer */
+int drm_gem_dma_dumb_create_internal(struct drm_file *file_priv,
+                                    struct drm_device *drm,
+                                    struct drm_mode_create_dumb *args);
+
+/* create memory region for DRM framebuffer */
+int drm_gem_dma_dumb_create(struct drm_file *file_priv,
+                           struct drm_device *drm,
+                           struct drm_mode_create_dumb *args);
+
+struct drm_gem_object *
+drm_gem_dma_prime_import_sg_table(struct drm_device *dev,
+                                 struct dma_buf_attachment *attach,
+                                 struct sg_table *sgt);
+
+/**
+ * DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE - DMA GEM driver operations
+ * @dumb_create_func: callback function for .dumb_create
+ *
+ * This macro provides a shortcut for setting the default GEM operations in the
+ * &drm_driver structure.
+ *
+ * This macro is a variant of DRM_GEM_DMA_DRIVER_OPS for drivers that
+ * override the default implementation of &struct rm_driver.dumb_create. Use
+ * DRM_GEM_DMA_DRIVER_OPS if possible. Drivers that require a virtual address
+ * on imported buffers should use
+ * DRM_GEM_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE() instead.
+ */
+#define DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE(dumb_create_func) \
+       .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_dma_prime_import_sg_table, \
+       .gem_prime_mmap         = drm_gem_prime_mmap
+
+/**
+ * DRM_GEM_DMA_DRIVER_OPS - DMA GEM driver operations
+ *
+ * This macro provides a shortcut for setting the default GEM operations in the
+ * &drm_driver structure.
+ *
+ * Drivers that come with their own implementation of
+ * &struct drm_driver.dumb_create should use
+ * DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE() instead. Use
+ * DRM_GEM_DMA_DRIVER_OPS if possible. Drivers that require a virtual address
+ * on imported buffers should use DRM_GEM_DMA_DRIVER_OPS_VMAP instead.
+ */
+#define DRM_GEM_DMA_DRIVER_OPS \
+       DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE(drm_gem_dma_dumb_create)
+
+/**
+ * DRM_GEM_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE - DMA 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_DMA_DRIVER_OPS_VMAP for drivers that
+ * override the default implementation of &struct drm_driver.dumb_create. Use
+ * DRM_GEM_DMA_DRIVER_OPS_VMAP if possible. Drivers that do not require a
+ * virtual address on imported buffers should use
+ * DRM_GEM_DMA_DRIVER_OPS_WITH_DUMB_CREATE() instead.
+ */
+#define DRM_GEM_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(dumb_create_func) \
+       .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_dma_prime_import_sg_table_vmap, \
+       .gem_prime_mmap         = drm_gem_prime_mmap
+
+/**
+ * DRM_GEM_DMA_DRIVER_OPS_VMAP - DMA 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_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE() instead. Use
+ * DRM_GEM_DMA_DRIVER_OPS_VMAP if possible. Drivers that do not require a
+ * virtual address on imported buffers should use DRM_GEM_DMA_DRIVER_OPS
+ * instead.
+ */
+#define DRM_GEM_DMA_DRIVER_OPS_VMAP \
+       DRM_GEM_DMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE(drm_gem_dma_dumb_create)
+
+struct drm_gem_object *
+drm_gem_dma_prime_import_sg_table_vmap(struct drm_device *drm,
+                                      struct dma_buf_attachment *attach,
+                                      struct sg_table *sgt);
+
+/*
+ * File ops
+ */
+
+#ifndef CONFIG_MMU
+unsigned long drm_gem_dma_get_unmapped_area(struct file *filp,
+                                           unsigned long addr,
+                                           unsigned long len,
+                                           unsigned long pgoff,
+                                           unsigned long flags);
+#define DRM_GEM_DMA_UNMAPPED_AREA_FOPS \
+       .get_unmapped_area      = drm_gem_dma_get_unmapped_area,
+#else
+#define DRM_GEM_DMA_UNMAPPED_AREA_FOPS
+#endif
+
+/**
+ * DEFINE_DRM_GEM_DMA_FOPS() - macro to generate file operations for DMA drivers
+ * @name: name for the generated structure
+ *
+ * This macro autogenerates a suitable &struct file_operations for DMA based
+ * drivers, which can be assigned to &drm_driver.fops. Note that this structure
+ * cannot be shared between drivers, because it contains a reference to the
+ * current module using THIS_MODULE.
+ *
+ * Note that the declaration is already marked as static - if you need a
+ * non-static version of this you're probably doing it wrong and will break the
+ * THIS_MODULE reference by accident.
+ */
+#define DEFINE_DRM_GEM_DMA_FOPS(name) \
+       static const struct file_operations name = {\
+               .owner          = THIS_MODULE,\
+               .open           = drm_open,\
+               .release        = drm_release,\
+               .unlocked_ioctl = drm_ioctl,\
+               .compat_ioctl   = drm_compat_ioctl,\
+               .poll           = drm_poll,\
+               .read           = drm_read,\
+               .llseek         = noop_llseek,\
+               .mmap           = drm_gem_mmap,\
+               DRM_GEM_DMA_UNMAPPED_AREA_FOPS \
+       }
+
+#endif /* __DRM_GEM_DMA_HELPER_H__ */