Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/msm/mdp4: use drmm-managed allocation for mdp4_dsi_encoder

Change struct mdp4_dsi_encoder allocation to use drmm_encoder_alloc().
This removes the need to perform any actions on this encoder
destruction.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/546180/
Link: https://lore.kernel.org/r/20230708010407.3871346-14-dmitry.baryshkov@linaro.org

+5 -27
+5 -27
drivers/gpu/drm/msm/disp/mdp4/mdp4_dsi_encoder.c
··· 26 26 return to_mdp4_kms(to_mdp_kms(priv->kms)); 27 27 } 28 28 29 - static void mdp4_dsi_encoder_destroy(struct drm_encoder *encoder) 30 - { 31 - struct mdp4_dsi_encoder *mdp4_dsi_encoder = to_mdp4_dsi_encoder(encoder); 32 - 33 - drm_encoder_cleanup(encoder); 34 - kfree(mdp4_dsi_encoder); 35 - } 36 - 37 - static const struct drm_encoder_funcs mdp4_dsi_encoder_funcs = { 38 - .destroy = mdp4_dsi_encoder_destroy, 39 - }; 40 - 41 29 static void mdp4_dsi_encoder_mode_set(struct drm_encoder *encoder, 42 30 struct drm_display_mode *mode, 43 31 struct drm_display_mode *adjusted_mode) ··· 136 148 /* initialize encoder */ 137 149 struct drm_encoder *mdp4_dsi_encoder_init(struct drm_device *dev) 138 150 { 139 - struct drm_encoder *encoder = NULL; 151 + struct drm_encoder *encoder; 140 152 struct mdp4_dsi_encoder *mdp4_dsi_encoder; 141 - int ret; 142 153 143 - mdp4_dsi_encoder = kzalloc(sizeof(*mdp4_dsi_encoder), GFP_KERNEL); 144 - if (!mdp4_dsi_encoder) { 145 - ret = -ENOMEM; 146 - goto fail; 147 - } 154 + mdp4_dsi_encoder = drmm_encoder_alloc(dev, struct mdp4_dsi_encoder, base, 155 + NULL, DRM_MODE_ENCODER_DSI, NULL); 156 + if (IS_ERR(mdp4_dsi_encoder)) 157 + return ERR_CAST(mdp4_dsi_encoder); 148 158 149 159 encoder = &mdp4_dsi_encoder->base; 150 160 151 - drm_encoder_init(dev, encoder, &mdp4_dsi_encoder_funcs, 152 - DRM_MODE_ENCODER_DSI, NULL); 153 161 drm_encoder_helper_add(encoder, &mdp4_dsi_encoder_helper_funcs); 154 162 155 163 return encoder; 156 - 157 - fail: 158 - if (encoder) 159 - mdp4_dsi_encoder_destroy(encoder); 160 - 161 - return ERR_PTR(ret); 162 164 } 163 165 #endif /* CONFIG_DRM_MSM_DSI */