Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3bc18cc authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge changes I4ec7c8e6,I18963723 into msm-4.14

* changes:
  ARM: dts: msm: add DisplayPort to connector list on SDM855
  drm/msm/dp: fix MST initialization
parents 1721ffd2 2746a7a2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -508,7 +508,7 @@
};

&mdss_mdp {
	connectors = <&sde_wb>;
	connectors = <&sde_wb &sde_dp>;
};

/* PHY TIMINGS REVISION P */
+2 −1
Original line number Diff line number Diff line
@@ -1118,7 +1118,7 @@ static int dp_init_sub_modules(struct dp_display_private *dp)
	return rc;
}

static void dp_display_post_init(struct dp_display *dp_display)
static int dp_display_post_init(struct dp_display *dp_display)
{
	int rc = 0;
	struct dp_display_private *dp;
@@ -1145,6 +1145,7 @@ static void dp_display_post_init(struct dp_display *dp_display)
	dp_display->post_init = NULL;
end:
	pr_debug("%s\n", rc ? "failed" : "success");
	return rc;
}

static int dp_display_set_mode(struct dp_display *dp_display, void *panel,
+1 −1
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ struct dp_display {
	void (*post_open)(struct dp_display *dp_display);
	int (*config_hdr)(struct dp_display *dp_display, void *panel,
				struct drm_msm_ext_hdr_metadata *hdr_meta);
	void (*post_init)(struct dp_display *dp_display);
	int (*post_init)(struct dp_display *dp_display);
	int (*mst_install)(struct dp_display *dp_display,
			struct dp_mst_drm_install_info *mst_install_info);
	int (*mst_uninstall)(struct dp_display *dp_display);
+6 −3
Original line number Diff line number Diff line
@@ -373,14 +373,17 @@ int dp_connector_post_init(struct drm_connector *connector, void *display)
	dp_display->base_connector = connector;
	dp_display->bridge->connector = connector;

	if (dp_display->post_init)
		dp_display->post_init(dp_display);
	if (dp_display->post_init) {
		rc = dp_display->post_init(dp_display);
		if (rc)
			goto end;
	}

	sde_conn = to_sde_connector(connector);
	dp_display->bridge->dp_panel = sde_conn->drv_panel;

	rc = dp_mst_init(dp_display);

end:
	return rc;
}

+10 −3
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ struct dp_mst_bridge {
};

struct dp_mst_private {
	bool state;
	bool mst_initialized;
	struct dp_mst_caps caps;
	struct drm_dp_mst_topology_mgr mst_mgr;
	struct dp_mst_bridge mst_bridge[MAX_DP_MST_DRM_BRIDGES];
@@ -419,6 +419,11 @@ int dp_mst_drm_bridge_init(void *data, struct drm_encoder *encoder)
	struct dp_mst_private *mst = display->dp_mst_prv_info;
	int i;

	if (!mst || !mst->mst_initialized) {
		pr_err("mst not initialized\n");
		return -ENODEV;
	}

	for (i = 0; i < MAX_DP_MST_DRM_BRIDGES; i++) {
		if (!mst->mst_bridge[i].in_use) {
			bridge = &mst->mst_bridge[i];
@@ -884,7 +889,7 @@ int dp_mst_init(struct dp_display *dp_display)

	memset(dp_mst.mst_bridge, 0, sizeof(dp_mst.mst_bridge));

	dp_mst.state = true;
	dp_mst.mst_initialized = true;

	DP_MST_DEBUG("dp drm mst topology manager init completed\n");

@@ -902,13 +907,15 @@ void dp_mst_deinit(struct dp_display *dp_display)

	mst = dp_display->dp_mst_prv_info;

	if (!mst->state)
	if (!mst->mst_initialized)
		return;

	dp_display->mst_uninstall(dp_display);

	drm_dp_mst_topology_mgr_destroy(&mst->mst_mgr);

	dp_mst.mst_initialized = false;

	DP_MST_DEBUG("dp drm mst topology manager deinit completed\n");
}