static int imx_tve_connector_get_modes(struct drm_connector *connector)
 {
        struct imx_tve *tve = con_to_tve(connector);
-       struct edid *edid;
-       int ret = 0;
+       const struct drm_edid *drm_edid;
+       int ret;
 
        if (!tve->ddc)
                return 0;
 
-       edid = drm_get_edid(connector, tve->ddc);
-       if (edid) {
-               drm_connector_update_edid_property(connector, edid);
-               ret = drm_add_edid_modes(connector, edid);
-               kfree(edid);
-       }
+       drm_edid = drm_edid_read_ddc(connector, tve->ddc);
+       drm_edid_connector_update(connector, drm_edid);
+       ret = drm_edid_connector_add_modes(connector);
+       drm_edid_free(drm_edid);
 
        return ret;
 }