}
                        nodes[j++] = remote_node;
 
-                       ret = of_get_videomode(remote_node,
-                                                       &mic->vm, 0);
-                       if (ret) {
-                               DRM_ERROR("mic: failed to get videomode");
-                               goto exit;
-                       }
-
                        break;
                default:
                        DRM_ERROR("mic: Unknown endpoint from MIC");
        mutex_unlock(&mic_mutex);
 }
 
+static void mic_mode_set(struct drm_bridge *bridge,
+                       struct drm_display_mode *mode,
+                       struct drm_display_mode *adjusted_mode)
+{
+       struct exynos_mic *mic = bridge->driver_private;
+
+       mutex_lock(&mic_mutex);
+       drm_display_mode_to_videomode(mode, &mic->vm);
+       mutex_unlock(&mic_mutex);
+}
+
 static void mic_pre_enable(struct drm_bridge *bridge)
 {
        struct exynos_mic *mic = bridge->driver_private;
 static const struct drm_bridge_funcs mic_bridge_funcs = {
        .disable = mic_disable,
        .post_disable = mic_post_disable,
+       .mode_set = mic_mode_set,
        .pre_enable = mic_pre_enable,
        .enable = mic_enable,
 };