Prechádzať zdrojové kódy

disp: msm: dp: dp detect port

Commit 3f9b3f02dda5 ("drm/dp_mst: Protect drm_dp_mst_port
members with locking") adds locking while detecting mst ports.
This change updates the dp driver to pass in the ctx which
is acquired at that time.

Change-Id: I8e5ba9648494f9b4f8fa3d1654ec22dd2502e0b0
Signed-off-by: Samantha Tran <[email protected]>
Signed-off-by: Nilaan Gunabalachandran <[email protected]>
Samantha Tran 4 rokov pred
rodič
commit
af5aee268a
1 zmenil súbory, kde vykonal 14 pridanie a 8 odobranie
  1. 14 8
      msm/dp/dp_mst_drm.c

+ 14 - 8
msm/dp/dp_mst_drm.c

@@ -64,8 +64,9 @@ struct dp_drm_mst_fw_helper_ops {
 	int (*update_payload_part1)(struct drm_dp_mst_topology_mgr *mgr);
 	int (*check_act_status)(struct drm_dp_mst_topology_mgr *mgr);
 	int (*update_payload_part2)(struct drm_dp_mst_topology_mgr *mgr);
-	enum drm_connector_status (*detect_port)(
+	int (*detect_port_ctx)(
 		struct drm_connector *connector,
+		struct drm_modeset_acquire_ctx *ctx,
 		struct drm_dp_mst_topology_mgr *mgr,
 		struct drm_dp_mst_port *port);
 	struct edid *(*get_edid)(struct drm_connector *connector,
@@ -631,17 +632,18 @@ static void dp_mst_sim_handle_hpd_irq(void *dp_display,
 	}
 }
 
-static enum drm_connector_status dp_mst_detect_port(
+static int dp_mst_detect_port(
 			struct drm_connector *connector,
+			struct drm_modeset_acquire_ctx *ctx,
 			struct drm_dp_mst_topology_mgr *mgr,
 			struct drm_dp_mst_port *port)
 {
 	struct dp_mst_private *mst = container_of(mgr,
 			struct dp_mst_private, mst_mgr);
-	enum drm_connector_status status = connector_status_disconnected;
+	int status = connector_status_disconnected;
 
 	if (mst->mst_session_state)
-		status = drm_dp_mst_detect_port(connector, mgr, port);
+		status = drm_dp_mst_detect_port(connector, ctx, mgr, port);
 
 	DP_MST_DEBUG("mst port status: %d, session state: %d\n",
 		status, mst->mst_session_state);
@@ -707,7 +709,7 @@ static const struct dp_drm_mst_fw_helper_ops drm_dp_mst_fw_helper_ops = {
 	.update_payload_part1      = drm_dp_update_payload_part1,
 	.check_act_status          = drm_dp_check_act_status,
 	.update_payload_part2      = drm_dp_update_payload_part2,
-	.detect_port               = dp_mst_detect_port,
+	.detect_port_ctx           = dp_mst_detect_port,
 	.get_edid                  = drm_dp_mst_get_edid,
 	.topology_mgr_set_mst      = drm_dp_mst_topology_mgr_set_mst,
 	.get_vcpi_info             = _dp_mst_get_vcpi_info,
@@ -724,7 +726,7 @@ static const struct dp_drm_mst_fw_helper_ops drm_dp_sim_mst_fw_helper_ops = {
 	.update_payload_part1      = dp_mst_sim_update_payload_part1,
 	.check_act_status          = dp_mst_sim_no_action,
 	.update_payload_part2      = dp_mst_sim_update_payload_part2,
-	.detect_port               = dp_mst_detect_port,
+	.detect_port_ctx           = dp_mst_detect_port,
 	.get_edid                  = dp_mst_sim_get_edid,
 	.topology_mgr_set_mst      = dp_mst_sim_topology_mgr_set_mst,
 	.get_vcpi_info             = _dp_mst_get_vcpi_info,
@@ -1356,12 +1358,15 @@ dp_mst_connector_detect(struct drm_connector *connector, bool force,
 	struct dp_mst_private *mst = dp_display->dp_mst_prv_info;
 	enum drm_connector_status status;
 	struct dp_mst_connector mst_conn;
+	struct drm_modeset_acquire_ctx ctx;
 
 	DP_MST_DEBUG("enter:\n");
 	SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_ENTRY);
 
-	status = mst->mst_fw_cbs->detect_port(connector,
-			&mst->mst_mgr,
+	drm_modeset_acquire_init(&ctx, 0);
+
+	status = mst->mst_fw_cbs->detect_port_ctx(connector,
+			&ctx, &mst->mst_mgr,
 			c_conn->mst_port);
 
 	memset(&mst_conn, 0, sizeof(mst_conn));
@@ -1374,6 +1379,7 @@ dp_mst_connector_detect(struct drm_connector *connector, bool force,
 	DP_MST_INFO("conn:%d status:%d\n", connector->base.id, status);
 	SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, connector->base.id, status);
 
+	drm_modeset_acquire_fini(&ctx);
 	return status;
 }