aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/stm/drv.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/stm/drv.c')
-rw-r--r--drivers/gpu/drm/stm/drv.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index 8fe954c27fba..8bc7e8418b8d 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -31,6 +31,24 @@ static const struct drm_mode_config_funcs drv_mode_config_funcs = {
31 .atomic_commit = drm_atomic_helper_commit, 31 .atomic_commit = drm_atomic_helper_commit,
32}; 32};
33 33
34static int stm_gem_cma_dumb_create(struct drm_file *file,
35 struct drm_device *dev,
36 struct drm_mode_create_dumb *args)
37{
38#ifdef CONFIG_MMU
39 unsigned int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8);
40
41 /*
42 * in order to optimize data transfer, pitch is aligned on
43 * 128 bytes, height is aligned on 4 bytes
44 */
45 args->pitch = roundup(min_pitch, 128);
46 args->height = roundup(args->height, 4);
47#endif
48
49 return drm_gem_cma_dumb_create_internal(file, dev, args);
50}
51
34DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops); 52DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops);
35 53
36static struct drm_driver drv_driver = { 54static struct drm_driver drv_driver = {
@@ -44,7 +62,7 @@ static struct drm_driver drv_driver = {
44 .minor = 0, 62 .minor = 0,
45 .patchlevel = 0, 63 .patchlevel = 0,
46 .fops = &drv_driver_fops, 64 .fops = &drv_driver_fops,
47 .dumb_create = drm_gem_cma_dumb_create, 65 .dumb_create = stm_gem_cma_dumb_create,
48 .prime_handle_to_fd = drm_gem_prime_handle_to_fd, 66 .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
49 .prime_fd_to_handle = drm_gem_prime_fd_to_handle, 67 .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
50 .gem_free_object_unlocked = drm_gem_cma_free_object, 68 .gem_free_object_unlocked = drm_gem_cma_free_object,