static const struct drm_connector_funcs vc4_vec_connector_funcs = {
        .detect = vc4_vec_connector_detect,
        .fill_modes = drm_helper_probe_single_connector_modes,
-       .destroy = drm_connector_cleanup,
        .reset = drm_atomic_helper_connector_reset,
        .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
        .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
 static int vc4_vec_connector_init(struct drm_device *dev, struct vc4_vec *vec)
 {
        struct drm_connector *connector = &vec->connector;
+       int ret;
 
        connector->interlace_allowed = true;
 
+       ret = drmm_connector_init(dev, connector, &vc4_vec_connector_funcs,
+                                DRM_MODE_CONNECTOR_Composite, NULL);
+       if (ret)
+               return ret;
 
-       drm_connector_init(dev, connector, &vc4_vec_connector_funcs,
-                          DRM_MODE_CONNECTOR_Composite);
        drm_connector_helper_add(connector, &vc4_vec_connector_helper_funcs);
 
        drm_object_attach_property(&connector->base,
 static void vc4_vec_unbind(struct device *dev, struct device *master,
                           void *data)
 {
-       struct vc4_vec *vec = dev_get_drvdata(dev);
-
-       drm_connector_cleanup(&vec->connector);
        pm_runtime_disable(dev);
 }