#include <drm/drm_of.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_print.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include <sound/hdmi-codec.h>
 
        .mode_set = zx_hdmi_encoder_mode_set,
 };
 
-static const struct drm_encoder_funcs zx_hdmi_encoder_funcs = {
-       .destroy = drm_encoder_cleanup,
-};
-
 static int zx_hdmi_connector_get_modes(struct drm_connector *connector)
 {
        struct zx_hdmi *hdmi = to_zx_hdmi(connector);
 
        encoder->possible_crtcs = VOU_CRTC_MASK;
 
-       drm_encoder_init(drm, encoder, &zx_hdmi_encoder_funcs,
-                        DRM_MODE_ENCODER_TMDS, NULL);
+       drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
        drm_encoder_helper_add(encoder, &zx_hdmi_encoder_helper_funcs);
 
        hdmi->connector.polled = DRM_CONNECTOR_POLL_HPD;
 
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "zx_drm_drv.h"
 #include "zx_tvenc_regs.h"
        .mode_set = zx_tvenc_encoder_mode_set,
 };
 
-static const struct drm_encoder_funcs zx_tvenc_encoder_funcs = {
-       .destroy = drm_encoder_cleanup,
-};
-
 static int zx_tvenc_connector_get_modes(struct drm_connector *connector)
 {
        struct zx_tvenc *tvenc = to_zx_tvenc(connector);
         */
        encoder->possible_crtcs = BIT(1);
 
-       drm_encoder_init(drm, encoder, &zx_tvenc_encoder_funcs,
-                        DRM_MODE_ENCODER_TVDAC, NULL);
+       drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TVDAC);
        drm_encoder_helper_add(encoder, &zx_tvenc_encoder_helper_funcs);
 
        connector->interlace_allowed = true;
 
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
 
 #include "zx_drm_drv.h"
 #include "zx_vga_regs.h"
        .disable = zx_vga_encoder_disable,
 };
 
-static const struct drm_encoder_funcs zx_vga_encoder_funcs = {
-       .destroy = drm_encoder_cleanup,
-};
-
 static int zx_vga_connector_get_modes(struct drm_connector *connector)
 {
        struct zx_vga *vga = to_zx_vga(connector);
 
        encoder->possible_crtcs = VOU_CRTC_MASK;
 
-       ret = drm_encoder_init(drm, encoder, &zx_vga_encoder_funcs,
-                              DRM_MODE_ENCODER_DAC, NULL);
+       ret = drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_DAC);
        if (ret) {
                DRM_DEV_ERROR(dev, "failed to init encoder: %d\n", ret);
                return ret;