Change struct mdp5_plane allocation to use drmm_plane_alloc(). This
removes the need to perform any actions on plane destruction.

Signed-off-by: Dmitry Baryshkov <[email protected]>
---
 drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c | 40 ++++------------------
 1 file changed, 6 insertions(+), 34 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c 
b/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c
index bd2c4ac45601..177fc1a56aad 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c
@@ -17,9 +17,6 @@
 
 struct mdp5_plane {
        struct drm_plane base;
-
-       uint32_t nformats;
-       uint32_t formats[32];
 };
 #define to_mdp5_plane(x) container_of(x, struct mdp5_plane, base)
 
@@ -38,15 +35,6 @@ static bool plane_enabled(struct drm_plane_state *state)
        return state->visible;
 }
 
-static void mdp5_plane_destroy(struct drm_plane *plane)
-{
-       struct mdp5_plane *mdp5_plane = to_mdp5_plane(plane);
-
-       drm_plane_cleanup(plane);
-
-       kfree(mdp5_plane);
-}
-
 /* helper to install properties which are common to planes and crtcs */
 static void mdp5_plane_install_properties(struct drm_plane *plane,
                struct drm_mode_object *obj)
@@ -139,7 +127,6 @@ static void mdp5_plane_destroy_state(struct drm_plane 
*plane,
 static const struct drm_plane_funcs mdp5_plane_funcs = {
                .update_plane = drm_atomic_helper_update_plane,
                .disable_plane = drm_atomic_helper_disable_plane,
-               .destroy = mdp5_plane_destroy,
                .reset = mdp5_plane_reset,
                .atomic_duplicate_state = mdp5_plane_duplicate_state,
                .atomic_destroy_state = mdp5_plane_destroy_state,
@@ -1014,25 +1001,16 @@ struct drm_plane *mdp5_plane_init(struct drm_device 
*dev,
 {
        struct drm_plane *plane = NULL;
        struct mdp5_plane *mdp5_plane;
-       int ret;
 
-       mdp5_plane = kzalloc(sizeof(*mdp5_plane), GFP_KERNEL);
-       if (!mdp5_plane) {
-               ret = -ENOMEM;
-               goto fail;
-       }
+       mdp5_plane = drmm_universal_plane_alloc(dev, struct mdp5_plane, base,
+                                               0xff, &mdp5_plane_funcs,
+                                               mdp_rgb_yuv_formats, 
mdp_rgb_yuv_num_formats,
+                                               NULL, type, NULL);
+       if (IS_ERR(mdp5_plane))
+               return ERR_CAST(mdp5_plane);
 
        plane = &mdp5_plane->base;
 
-       mdp5_plane->nformats = mdp_get_formats(mdp5_plane->formats,
-               ARRAY_SIZE(mdp5_plane->formats), false);
-
-       ret = drm_universal_plane_init(dev, plane, 0xff, &mdp5_plane_funcs,
-                       mdp5_plane->formats, mdp5_plane->nformats,
-                       NULL, type, NULL);
-       if (ret)
-               goto fail;
-
        drm_plane_helper_add(plane, &mdp5_plane_helper_funcs);
 
        mdp5_plane_install_properties(plane, &plane->base);
@@ -1040,10 +1018,4 @@ struct drm_plane *mdp5_plane_init(struct drm_device *dev,
        drm_plane_enable_fb_damage_clips(plane);
 
        return plane;
-
-fail:
-       if (plane)
-               mdp5_plane_destroy(plane);
-
-       return ERR_PTR(ret);
 }
-- 
2.39.2

Reply via email to