drm/mtk: Remove impossible internal error
Subsystems (3)
PATCH v2 1/3 drm/mtk: Remove impossible internal error
We cannot create a framebuffer with no objects, so there's no point testing for it.
v2: Remove the error entirely. (Sean, CK, Thierry)
--- drivers/gpu/drm/mediatek/mtk_drm_plane.c | 5 ----- 1 file changed, 5 deletions(-)
drivers/gpu/drm/mediatek/mtk_drm_plane.c +0 -5
@@ -95,11 +95,6 @@ static int mtk_plane_atomic_check(struct drm_plane *plane,if (!fb)return 0 ; -if (!mtk_fb_get_gem_obj (fb)) { -DRM_DEBUG_KMS ("buffer is null\n" ); -return -EFAULT ; - } -if (!state->crtc)return 0 ;
Signature · 6 lines
2.17.0 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
PATCH v2 2/3 drm/mtk: Move GEM BO to drm_framebuffer
Since drm_framebuffer can now store GEM objects directly, place them there rather than in our own subclass. As this makes the framebuffer create_handle and destroy functions the same as the GEM framebuffer helper, we can reuse those.
--- drivers/gpu/drm/mediatek/mtk_drm_fb.c | 38 ++++-------------------- drivers/gpu/drm/mediatek/mtk_drm_fb.h | 1 - drivers/gpu/drm/mediatek/mtk_drm_plane.c | 2 +- 3 files changed, 6 insertions(+), 35 deletions(-)
drivers/gpu/drm/mediatek/mtk_drm_fb.c +5 -33
@@ -15,6 +15,7 @@#include <drm/drm_crtc_helper.h> #include <drm/drm_fb_helper.h> #include <drm/drm_gem.h> +#include <drm/drm_gem_framebuffer_helper.h> #include <linux/dma-buf.h> #include <linux/reservation.h>
@@ -30,42 +31,13 @@*/ struct mtk_drm_fb {struct drm_framebuffer base; -/* For now we only support a single plane */ -struct drm_gem_object *gem_obj; };#define to_mtk_fb (x) container_of(x, struct mtk_drm_fb, base) -struct drm_gem_object *mtk_fb_get_gem_obj (struct drm_framebuffer *fb) -{ -struct mtk_drm_fb *mtk_fb =to_mtk_fb (fb); - -return mtk_fb->gem_obj; -} - -static int mtk_drm_fb_create_handle (struct drm_framebuffer *fb, -struct drm_file *file_priv, -unsigned int *handle) -{ -struct mtk_drm_fb *mtk_fb =to_mtk_fb (fb); - -return drm_gem_handle_create (file_priv, mtk_fb->gem_obj, handle); -} - -static void mtk_drm_fb_destroy (struct drm_framebuffer *fb) -{ -struct mtk_drm_fb *mtk_fb =to_mtk_fb (fb); - -drm_framebuffer_cleanup (fb); - -drm_gem_object_put_unlocked (mtk_fb->gem_obj); - -kfree (mtk_fb); -} -static const struct drm_framebuffer_funcs mtk_drm_fb_funcs = { - .create_handle = mtk_drm_fb_create_handle, - .destroy = mtk_drm_fb_destroy, + .create_handle = drm_gem_fb_create_handle, + .destroy = drm_gem_fb_destroy, }; static struct mtk_drm_fb *mtk_drm_framebuffer_init(struct drm_device *dev,
@@ -84,7 +56,7 @@ static struct mtk_drm_fb *mtk_drm_framebuffer_init(struct drm_device *dev,drm_helper_mode_fill_fb_struct (dev, &mtk_fb->base, mode); - mtk_fb->gem_obj = obj; + mtk_fb->base.obj[0 ] = obj; ret =drm_framebuffer_init (dev, &mtk_fb->base, &mtk_drm_fb_funcs);if (ret) {
@@ -110,7 +82,7 @@ int mtk_fb_wait(struct drm_framebuffer *fb)if (!fb)return 0 ; - gem =mtk_fb_get_gem_obj (fb); + gem = fb->obj[0 ];if (!gem || !gem->dma_buf || !gem->dma_buf->resv)return 0 ;
drivers/gpu/drm/mediatek/mtk_drm_fb.h +0 -1
@@ -14,7 +14,6 @@#ifndef MTK_DRM_FB_H #define MTK_DRM_FB_H -struct drm_gem_object *mtk_fb_get_gem_obj (struct drm_framebuffer *fb);int mtk_fb_wait (struct drm_framebuffer *fb); struct drm_framebuffer *mtk_drm_mode_fb_create(struct drm_device *dev, struct drm_file *file,
drivers/gpu/drm/mediatek/mtk_drm_plane.c +1 -1
@@ -122,7 +122,7 @@ static void mtk_plane_atomic_update(struct drm_plane *plane,if (!crtc ||WARN_ON (!fb))return ; - gem =mtk_fb_get_gem_obj (fb); + gem = fb->obj[0 ]; mtk_gem =to_mtk_gem_obj (gem); addr = mtk_gem->dma_addr; pitch = fb->pitches[0 ];
Signature · 6 lines
2.17.0 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
PATCH v2 3/3 drm/mtk: mtk_drm_fb -> drm_framebuffer
In reply to Daniel StoneNow that mtk_drm_fb is an empty wrapper around drm_framebuffer, we can just delete it.
--- drivers/gpu/drm/mediatek/mtk_drm_fb.c | 40 ++++++++++----------------- 1 file changed, 14 insertions(+), 26 deletions(-)
drivers/gpu/drm/mediatek/mtk_drm_fb.c +14 -26
@@ -23,49 +23,37 @@#include "mtk_drm_fb.h" #include "mtk_drm_gem.h" -/* -* mtk specific framebuffer structure. -* -* @fb: drm framebuffer object. -* @gem_obj: array of gem objects. -*/ -struct mtk_drm_fb { -struct drm_framebuffer base; -}; - -#define to_mtk_fb (x) container_of(x, struct mtk_drm_fb, base) -static const struct drm_framebuffer_funcs mtk_drm_fb_funcs = { .create_handle = drm_gem_fb_create_handle, .destroy = drm_gem_fb_destroy, }; -static struct mtk_drm_fb *mtk_drm_framebuffer_init (struct drm_device *dev, +static struct drm_framebuffer *mtk_drm_framebuffer_init (struct drm_device *dev,const struct drm_mode_fb_cmd2 *mode,struct drm_gem_object *obj) { -struct mtk_drm_fb *mtk_fb; +struct drm_framebuffer *fb;int ret;if (drm_format_num_planes (mode->pixel_format) !=1 )return ERR_PTR (-EINVAL ); - mtk_fb =kzalloc (sizeof (*mtk_fb),GFP_KERNEL ); -if (!mtk_fb) + fb =kzalloc (sizeof (*fb),GFP_KERNEL ); +if (!fb)return ERR_PTR (-ENOMEM ); -drm_helper_mode_fill_fb_struct (dev, &mtk_fb->base, mode); +drm_helper_mode_fill_fb_struct (dev, fb, mode); - mtk_fb->base.obj[0 ] = obj; + fb->obj[0 ] = obj; - ret =drm_framebuffer_init (dev, &mtk_fb->base, &mtk_drm_fb_funcs); + ret =drm_framebuffer_init (dev, fb, &mtk_drm_fb_funcs);if (ret) {DRM_ERROR ("failed to initialize framebuffer\n" ); -kfree (mtk_fb); +kfree (fb);return ERR_PTR (ret); } -return mtk_fb; +return fb; }/*
@@ -100,7 +88,7 @@ struct drm_framebuffer *mtk_drm_mode_fb_create(struct drm_device *dev,struct drm_file *file, const struct drm_mode_fb_cmd2 *cmd) { - struct mtk_drm_fb *mtk_fb; + struct drm_framebuffer *fb;struct drm_gem_object *gem;unsigned int width = cmd->width;unsigned int height = cmd->height;
@@ -123,13 +111,13 @@ struct drm_framebuffer *mtk_drm_mode_fb_create(struct drm_device *dev, goto unreference; } - mtk_fb =mtk_drm_framebuffer_init (dev, cmd, gem); -if (IS_ERR (mtk_fb)) { - ret =PTR_ERR (mtk_fb); + fb =mtk_drm_framebuffer_init (dev, cmd, gem); +if (IS_ERR (fb)) { + ret =PTR_ERR (fb); goto unreference; } -return &mtk_fb->base; +return fb; unreference:drm_gem_object_put_unlocked (gem);
Signature · 6 lines
2.17.0 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Quoted 5 lines · Daniel Stone
We cannot create a framebuffer with no objects, so there's no point testing for it.
v2: Remove the error entirely. (Sean, CK, Thierry)
Quoted 8 lines
Signed-off-by Daniel Stone <[email protected]>Cc Sean Paul <[email protected]>Cc Thierry Reding <[email protected]>Cc CK Hu <[email protected]>Cc Philipp Zabel <[email protected]>--- drivers/gpu/drm/mediatek/mtk_drm_plane.c | 5 ----- 1 file changed, 5 deletions(-)
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Quoted 5 lines · Daniel Stone
We cannot create a framebuffer with no objects, so there's no point testing for it.
v2: Remove the error entirely. (Sean, CK, Thierry)
Quoted 15 lines
Signed-off-by Daniel Stone <[email protected]>Cc Sean Paul <[email protected]>Cc Thierry Reding <[email protected]>Cc CK Hu <[email protected]>Cc Philipp Zabel <[email protected]>--- drivers/gpu/drm/mediatek/mtk_drm_plane.c | 5 ----- 1 file changed, 5 deletions(-)drivers/gpu/drm/mediatek/mtk_drm_plane.c +0
-0@@ -95,11 +95,6 @@ static int mtk_plane_atomic_check(struct drm_plane *plane,if (!fb)
drivers/gpu/drm/mediatek/mtk_drm_plane.c static int mtk_plane_atomic_check(struct drm_plane *plane, · line 100
Quoted 10 lines
drivers/gpu/drm/mediatek/mtk_drm_plane.c +0
-5return 0 ; -if (!mtk_fb_get_gem_obj (fb)) { -DRM_DEBUG_KMS ("buffer is null\n" ); -return -EFAULT ; - } -if (!state->crtc)return 0 ;
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Hi, Daniel:
For the series, applied to mediatek-drm-next-4.19 [1].
[1]
https://github.com/ckhu-mediatek/linux.git-tags/commits/mediatek-drm-next-4.19
Regards,
CK
Quoted 20 lines · Daniel Stone
We cannot create a framebuffer with no objects, so there's no point testing for it.
v2: Remove the error entirely. (Sean, CK, Thierry)
Signed-off-by Daniel Stone <[email protected]>Cc Sean Paul <[email protected]>Cc Thierry Reding <[email protected]>Cc CK Hu <[email protected]>Cc Philipp Zabel <[email protected]>--- drivers/gpu/drm/mediatek/mtk_drm_plane.c | 5 ----- 1 file changed, 5 deletions(-)drivers/gpu/drm/mediatek/mtk_drm_plane.c +0
-0@@ -95,11 +95,6 @@ static int mtk_plane_atomic_check(struct drm_plane *plane,if (!fb)
drivers/gpu/drm/mediatek/mtk_drm_plane.c static int mtk_plane_atomic_check(struct drm_plane *plane, · line 100
Quoted 10 lines
drivers/gpu/drm/mediatek/mtk_drm_plane.c +0
-5return 0 ; -if (!mtk_fb_get_gem_obj (fb)) { -DRM_DEBUG_KMS ("buffer is null\n" ); -return -EFAULT ; - } -if (!state->crtc)return 0 ;
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel