ソースを参照

drm/exynos: remove extra call to exynos_dp_commit()

exynos_dp_commit() was getting called twice by exynos encoder core, once
inside the .enable() call and another time by .commit() itself.

The remove of the second call caused the wake of a bug, the operations
orders inside exynos_dp_commit was wrong and we had to move
exynos_dp_start_video() to be the last operation in there.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Gustavo Padovan 10 年 前
コミット
07fd6e1f99
1 ファイル変更3 行追加4 行削除
  1. 3 4
      drivers/gpu/drm/exynos/exynos_dp_core.c

+ 3 - 4
drivers/gpu/drm/exynos/exynos_dp_core.c

@@ -795,9 +795,6 @@ static int exynos_dp_config_video(struct exynos_dp_device *dp)
 	/* Configure video slave mode */
 	/* Configure video slave mode */
 	exynos_dp_enable_video_master(dp, 0);
 	exynos_dp_enable_video_master(dp, 0);
 
 
-	/* Enable video */
-	exynos_dp_start_video(dp);
-
 	timeout_loop = 0;
 	timeout_loop = 0;
 
 
 	for (;;) {
 	for (;;) {
@@ -938,6 +935,9 @@ static void exynos_dp_commit(struct exynos_drm_encoder *encoder)
 		if (drm_panel_enable(dp->panel))
 		if (drm_panel_enable(dp->panel))
 			DRM_ERROR("failed to enable the panel\n");
 			DRM_ERROR("failed to enable the panel\n");
 	}
 	}
+
+	/* Enable video */
+	exynos_dp_start_video(dp);
 }
 }
 
 
 static enum drm_connector_status exynos_dp_detect(
 static enum drm_connector_status exynos_dp_detect(
@@ -1114,7 +1114,6 @@ static struct exynos_drm_encoder_ops exynos_dp_encoder_ops = {
 	.create_connector = exynos_dp_create_connector,
 	.create_connector = exynos_dp_create_connector,
 	.enable = exynos_dp_enable,
 	.enable = exynos_dp_enable,
 	.disable = exynos_dp_disable,
 	.disable = exynos_dp_disable,
-	.commit = exynos_dp_commit,
 };
 };
 
 
 static struct video_info *exynos_dp_dt_parse_pdata(struct device *dev)
 static struct video_info *exynos_dp_dt_parse_pdata(struct device *dev)