]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/rockchip: Compute dumb-buffer sizes with drm_mode_size_dumb()
authorThomas Zimmermann <tzimmermann@suse.de>
Thu, 21 Aug 2025 08:17:26 +0000 (10:17 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Mon, 29 Sep 2025 12:00:57 +0000 (14:00 +0200)
Call drm_mode_size_dumb() to compute dumb-buffer scanline pitch and
buffer size. Align the pitch to a multiple of 64.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Heiko Stuebner <heiko@sntech.de>
Cc: Sandy Huang <hjc@rock-chips.com>
Cc: "Heiko Stübner" <heiko@sntech.de>
Cc: Andy Yan <andy.yan@rock-chips.com>
Link: https://lore.kernel.org/r/20250821081918.79786-20-tzimmermann@suse.de
drivers/gpu/drm/rockchip/rockchip_drm_gem.c

index 6330b883efc35d84336cde3b71c7cf0a69936304..3bd06202e232fa1f0b402cac971b9e7c515b5fcc 100644 (file)
@@ -9,6 +9,7 @@
 #include <linux/vmalloc.h>
 
 #include <drm/drm.h>
+#include <drm/drm_dumb_buffers.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_gem.h>
 #include <drm/drm_gem_dma_helper.h>
@@ -403,13 +404,12 @@ int rockchip_gem_dumb_create(struct drm_file *file_priv,
                             struct drm_mode_create_dumb *args)
 {
        struct rockchip_gem_object *rk_obj;
-       int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8);
+       int ret;
 
-       /*
-        * align to 64 bytes since Mali requires it.
-        */
-       args->pitch = ALIGN(min_pitch, 64);
-       args->size = args->pitch * args->height;
+       /* 64-byte alignment required by Mali */
+       ret = drm_mode_size_dumb(dev, args, SZ_64, 0);
+       if (ret)
+               return ret;
 
        rk_obj = rockchip_gem_create_with_handle(file_priv, dev, args->size,
                                                 &args->handle);