diff options
author | Danilo Krummrich <dakr@redhat.com> | 2022-08-02 03:04:02 +0300 |
---|---|---|
committer | Sam Ravnborg <sam@ravnborg.org> | 2022-08-03 19:30:55 +0300 |
commit | 6bcfe8eaeef01fb389e951e7c648b934dfd62f15 (patch) | |
tree | 02af5312458bf7af5679875341e391ae566c96b2 /drivers/gpu/drm/drm_fb_cma_helper.c | |
parent | 5e8bf00ea915a0f290bf5ee544b91aad5eaab4bc (diff) | |
download | linux-6bcfe8eaeef01fb389e951e7c648b934dfd62f15.tar.xz |
drm/fb: rename FB CMA helpers to FB DMA helpers
Rename "FB CMA" helpers to "FB DMA" helpers - considering the hierarchy
of APIs (mm/cma -> dma -> fb dma) calling them "FB DMA" seems to be
more applicable.
Besides that, commit e57924d4ae80 ("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}*)(FB)_CMA_(${REGEX_SYM_UPPER}*)"
REGEX_GREP_LOWER="(${REGEX_SYM_LOWER}*)(fb)_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
```
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 "FB CMA", but not "GEM CMA".
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-3-dakr@redhat.com
Diffstat (limited to 'drivers/gpu/drm/drm_fb_cma_helper.c')
-rw-r--r-- | drivers/gpu/drm/drm_fb_cma_helper.c | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c deleted file mode 100644 index 69c57273b184..000000000000 --- a/drivers/gpu/drm/drm_fb_cma_helper.c +++ /dev/null @@ -1,145 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * drm kms/fb cma (contiguous memory allocator) helper functions - * - * Copyright (C) 2012 Analog Devices Inc. - * Author: Lars-Peter Clausen <lars@metafoo.de> - * - * Based on udl_fbdev.c - * Copyright (C) 2012 Red Hat - */ - -#include <drm/drm_damage_helper.h> -#include <drm/drm_fb_cma_helper.h> -#include <drm/drm_fourcc.h> -#include <drm/drm_framebuffer.h> -#include <drm/drm_gem_cma_helper.h> -#include <drm/drm_gem_framebuffer_helper.h> -#include <drm/drm_plane.h> -#include <linux/dma-mapping.h> -#include <linux/module.h> - -/** - * DOC: framebuffer cma helper functions - * - * Provides helper functions for creating a cma (contiguous memory allocator) - * backed framebuffer. - * - * drm_gem_fb_create() is used in the &drm_mode_config_funcs.fb_create - * callback function to create a cma backed framebuffer. - */ - -/** - * drm_fb_cma_get_gem_obj() - Get CMA GEM object for framebuffer - * @fb: The framebuffer - * @plane: Which plane - * - * Return the CMA GEM object for given framebuffer. - * - * This function will usually be called from the CRTC callback functions. - */ -struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb, - unsigned int plane) -{ - struct drm_gem_object *gem; - - gem = drm_gem_fb_get_obj(fb, plane); - if (!gem) - return NULL; - - return to_drm_gem_cma_obj(gem); -} -EXPORT_SYMBOL_GPL(drm_fb_cma_get_gem_obj); - -/** - * drm_fb_cma_get_gem_addr() - Get physical address for framebuffer, for pixel - * formats where values are grouped in blocks this will get you the beginning of - * the block - * @fb: The framebuffer - * @state: Which state of drm plane - * @plane: Which plane - * Return the CMA GEM address for given framebuffer. - * - * This function will usually be called from the PLANE callback functions. - */ -dma_addr_t drm_fb_cma_get_gem_addr(struct drm_framebuffer *fb, - struct drm_plane_state *state, - unsigned int plane) -{ - struct drm_gem_cma_object *obj; - dma_addr_t paddr; - u8 h_div = 1, v_div = 1; - u32 block_w = drm_format_info_block_width(fb->format, plane); - u32 block_h = drm_format_info_block_height(fb->format, plane); - u32 block_size = fb->format->char_per_block[plane]; - u32 sample_x; - u32 sample_y; - u32 block_start_y; - u32 num_hblocks; - - obj = drm_fb_cma_get_gem_obj(fb, plane); - if (!obj) - return 0; - - paddr = obj->paddr + fb->offsets[plane]; - - if (plane > 0) { - h_div = fb->format->hsub; - v_div = fb->format->vsub; - } - - sample_x = (state->src_x >> 16) / h_div; - sample_y = (state->src_y >> 16) / v_div; - block_start_y = (sample_y / block_h) * block_h; - num_hblocks = sample_x / block_w; - - paddr += fb->pitches[plane] * block_start_y; - paddr += block_size * num_hblocks; - - return paddr; -} -EXPORT_SYMBOL_GPL(drm_fb_cma_get_gem_addr); - -/** - * drm_fb_cma_sync_non_coherent - Sync GEM object to non-coherent backing - * memory - * @drm: DRM device - * @old_state: Old plane state - * @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 - * in a plane's .atomic_update ensures that all the data in the backing - * memory have been written to RAM. - */ -void drm_fb_cma_sync_non_coherent(struct drm_device *drm, - struct drm_plane_state *old_state, - struct drm_plane_state *state) -{ - const struct drm_format_info *finfo = state->fb->format; - struct drm_atomic_helper_damage_iter iter; - const struct drm_gem_cma_object *cma_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_cma_get_gem_obj(state->fb, i); - if (!cma_obj->map_noncoherent) - continue; - - daddr = drm_fb_cma_get_gem_addr(state->fb, state, i); - drm_atomic_helper_damage_iter_init(&iter, old_state, state); - - drm_atomic_for_each_plane_damage(&iter, &clip) { - /* Ignore x1/x2 values, invalidate complete lines */ - offset = clip.y1 * state->fb->pitches[i]; - - nb_bytes = (clip.y2 - clip.y1) * state->fb->pitches[i]; - dma_sync_single_for_device(drm->dev, daddr + offset, - nb_bytes, DMA_TO_DEVICE); - } - } -} -EXPORT_SYMBOL_GPL(drm_fb_cma_sync_non_coherent); |