drm/exynos: mic: Add mode_set callback function
authorHoegeun Kwon <hoegeun.kwon@samsung.com>
Thu, 5 Jan 2017 10:20:06 +0000 (19:20 +0900)
committerInki Dae <inki.dae@samsung.com>
Mon, 30 Jan 2017 23:49:31 +0000 (08:49 +0900)
Before applying the patch, used the of_get_videomode function to
parse the display-timings in the panel which is the child driver
of dsi in the devicetree. this is wrong. So removed the
of_get_videomode and fixed to get videomode struct through
mode_set callback function.

Signed-off-by: Hoegeun Kwon <hoegeun.kwon@samsung.com>
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
drivers/gpu/drm/exynos/exynos_drm_mic.c

index a0def0be6d650de02fad25fc3cf3248d89b8fce0..fed1a940ca5d7604768af1f4256a180de350997a 100644 (file)
@@ -286,13 +286,6 @@ static int parse_dt(struct exynos_mic *mic)
                        }
                        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");
@@ -329,6 +322,17 @@ already_disabled:
        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;
@@ -377,6 +381,7 @@ static void mic_enable(struct drm_bridge *bridge) { }
 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,
 };