Browse Source

disp: msm: sde: fix dsi bridge init

Initialization of DSI external bridge must be done within
the initialization of DSI displays. The current method
has the drm_ext_bridge_init being called outside the
loop of DSI displays, and it will fail as the display,
encoder and connector handle are not present.
This fixes the regresion caused by
commit edef6ae04060 ("disp: msm: dsi: snapshot of dsi from
4.14 to 4.19").

Change-Id: I50d0a303c2c8f4323e46cf14df1b071ebae80ceb
Signed-off-by: Satya Rama Aditya Pinapala <[email protected]>
Satya Rama Aditya Pinapala 6 years ago
parent
commit
7e77b664bb
1 changed files with 8 additions and 7 deletions
  1. 8 7
      msm/sde/sde_kms.c

+ 8 - 7
msm/sde/sde_kms.c

@@ -1296,17 +1296,18 @@ static int _sde_kms_setup_displays(struct drm_device *dev,
 			sde_encoder_destroy(encoder);
 			sde_encoder_destroy(encoder);
 			continue;
 			continue;
 		}
 		}
-	}
 
 
-	rc = dsi_display_drm_ext_bridge_init(display,
+		rc = dsi_display_drm_ext_bridge_init(display,
 					encoder, connector);
 					encoder, connector);
-	if (rc) {
-		SDE_ERROR("dsi %d ext bridge init failed\n", rc);
-		dsi_display_drm_bridge_deinit(display);
-		sde_encoder_destroy(encoder);
-		sde_connector_destroy(connector);
+		if (rc) {
+			SDE_ERROR("dsi %d ext bridge init failed\n", rc);
+			dsi_display_drm_bridge_deinit(display);
+			sde_connector_destroy(connector);
+			sde_encoder_destroy(encoder);
+		}
 	}
 	}
 
 
+
 	/* wb */
 	/* wb */
 	for (i = 0; i < sde_kms->wb_display_count &&
 	for (i = 0; i < sde_kms->wb_display_count &&
 		priv->num_encoders < max_encoders; ++i) {
 		priv->num_encoders < max_encoders; ++i) {