Skip to content

Commit 9dddcd2

Browse files
author
Thomas Zimmermann
committed
drm/hisilicon/hibmc: Implement hibmc_dumb_create() with generic helpers
The hibmc driver aligns scanlines to 16 bytes. By using the new pitch_align argument of drm_gem_vram_fill_create_dumb(), convert hibmc over. v2: * move changes to VRAM helpers into separate patch Signed-off-by: Thomas Zimmermann <[email protected]> Reviewed-by: Daniel Vetter <[email protected]> Acked-by: Sam Ravnborg <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 9870732 commit 9dddcd2

File tree

2 files changed

+2
-50
lines changed

2 files changed

+2
-50
lines changed

drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#include <drm/drm_framebuffer.h>
1919

2020
struct drm_device;
21-
struct drm_gem_object;
2221

2322
struct hibmc_drm_private {
2423
/* hw */
@@ -41,9 +40,6 @@ void hibmc_set_current_gate(struct hibmc_drm_private *priv,
4140
int hibmc_de_init(struct hibmc_drm_private *priv);
4241
int hibmc_vdac_init(struct hibmc_drm_private *priv);
4342

44-
int hibmc_gem_create(struct drm_device *dev, u32 size, bool iskernel,
45-
struct drm_gem_object **obj);
46-
4743
int hibmc_mm_init(struct hibmc_drm_private *hibmc);
4844
void hibmc_mm_fini(struct hibmc_drm_private *hibmc);
4945
int hibmc_dumb_create(struct drm_file *file, struct drm_device *dev,

drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -47,55 +47,11 @@ void hibmc_mm_fini(struct hibmc_drm_private *hibmc)
4747
drm_vram_helper_release_mm(hibmc->dev);
4848
}
4949

50-
int hibmc_gem_create(struct drm_device *dev, u32 size, bool iskernel,
51-
struct drm_gem_object **obj)
52-
{
53-
struct drm_gem_vram_object *gbo;
54-
int ret;
55-
56-
*obj = NULL;
57-
58-
size = roundup(size, PAGE_SIZE);
59-
if (size == 0)
60-
return -EINVAL;
61-
62-
gbo = drm_gem_vram_create(dev, &dev->vram_mm->bdev, size, 0, false);
63-
if (IS_ERR(gbo)) {
64-
ret = PTR_ERR(gbo);
65-
if (ret != -ERESTARTSYS)
66-
DRM_ERROR("failed to allocate GEM object: %d\n", ret);
67-
return ret;
68-
}
69-
*obj = &gbo->bo.base;
70-
return 0;
71-
}
72-
7350
int hibmc_dumb_create(struct drm_file *file, struct drm_device *dev,
7451
struct drm_mode_create_dumb *args)
7552
{
76-
struct drm_gem_object *gobj;
77-
u32 handle;
78-
int ret;
79-
80-
args->pitch = ALIGN(args->width * DIV_ROUND_UP(args->bpp, 8), 16);
81-
args->size = args->pitch * args->height;
82-
83-
ret = hibmc_gem_create(dev, args->size, false,
84-
&gobj);
85-
if (ret) {
86-
DRM_ERROR("failed to create GEM object: %d\n", ret);
87-
return ret;
88-
}
89-
90-
ret = drm_gem_handle_create(file, gobj, &handle);
91-
drm_gem_object_put_unlocked(gobj);
92-
if (ret) {
93-
DRM_ERROR("failed to unreference GEM object: %d\n", ret);
94-
return ret;
95-
}
96-
97-
args->handle = handle;
98-
return 0;
53+
return drm_gem_vram_fill_create_dumb(file, dev, &dev->vram_mm->bdev,
54+
0, 16, false, args);
9955
}
10056

10157
const struct drm_mode_config_funcs hibmc_mode_funcs = {

0 commit comments

Comments
 (0)