#include <drm/drm_atomic_helper.h>
 #include <drm/drm_bridge.h>
 #include <drm/drm_of.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "tilcdc_drv.h"
 #include "tilcdc_external.h"
        return 0;
 }
 
-static const struct drm_encoder_funcs tilcdc_external_encoder_funcs = {
-       .destroy        = drm_encoder_cleanup,
-};
-
 static
 int tilcdc_attach_bridge(struct drm_device *ddev, struct drm_bridge *bridge)
 {
        if (!priv->external_encoder)
                return -ENOMEM;
 
-       ret = drm_encoder_init(ddev, priv->external_encoder,
-                              &tilcdc_external_encoder_funcs,
-                              DRM_MODE_ENCODER_NONE, NULL);
+       ret = drm_simple_encoder_init(ddev, priv->external_encoder,
+                                     DRM_MODE_ENCODER_NONE);
        if (ret) {
                dev_err(ddev->dev, "drm_encoder_init() failed %d\n", ret);
                return ret;
 
 #include <drm/drm_connector.h>
 #include <drm/drm_modeset_helper_vtables.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "tilcdc_drv.h"
 #include "tilcdc_panel.h"
        /* nothing needed */
 }
 
-static const struct drm_encoder_funcs panel_encoder_funcs = {
-               .destroy        = drm_encoder_cleanup,
-};
-
 static const struct drm_encoder_helper_funcs panel_encoder_helper_funcs = {
                .dpms           = panel_encoder_dpms,
                .prepare        = panel_encoder_prepare,
        encoder = &panel_encoder->base;
        encoder->possible_crtcs = 1;
 
-       ret = drm_encoder_init(dev, encoder, &panel_encoder_funcs,
-                       DRM_MODE_ENCODER_LVDS, NULL);
+       ret = drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_LVDS);
        if (ret < 0)
                goto fail;