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

Commit 32a24884 authored by Govinda Rajulu Chenna's avatar Govinda Rajulu Chenna Committed by Tatenda Chipeperekwa
Browse files

drm/msm/dp: add vcpi parameter for set_stream_info



Introduce a new parameter for set_stream_info function to pass
virtual channel id, vcpi, information from dp_mst layers to
dp_display and dp_panel modules. dp_display and dp_panel modules
need vcpi information for mst, mst-dsc and mst-hdcp use-cases.

Change-Id: Ic8c21223928e3da234a4e9f59e798a3786a037da
Signed-off-by: default avatarGovinda Rajulu Chenna <gchenna@codeaurora.org>
Signed-off-by: default avatarTatenda Chipeperekwa <tatendac@codeaurora.org>
parent d4a43a70
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1397,7 +1397,7 @@ static int dp_display_prepare(struct dp_display *dp_display, void *panel)

static int dp_display_set_stream_info(struct dp_display *dp_display,
			void *panel, u32 strm_id, u32 start_slot,
			u32 num_slots, u32 pbn)
			u32 num_slots, u32 pbn, int vcpi)
{
	int rc = 0;
	struct dp_panel *dp_panel;
@@ -1430,7 +1430,7 @@ static int dp_display_set_stream_info(struct dp_display *dp_display,
	if (panel) {
		dp_panel = panel;
		dp_panel->set_stream_info(dp_panel, strm_id, start_slot,
				num_slots, pbn);
				num_slots, pbn, vcpi);
	}

	mutex_unlock(&dp->session_lock);
+2 −1
Original line number Diff line number Diff line
@@ -106,7 +106,8 @@ struct dp_display {
	int (*get_mst_caps)(struct dp_display *dp_display,
			struct dp_mst_caps *mst_caps);
	int (*set_stream_info)(struct dp_display *dp_display, void *panel,
			u32 strm_id, u32 start_slot, u32 num_slots, u32 pbn);
			u32 strm_id, u32 start_slot, u32 num_slots, u32 pbn,
			int vcpi);
	void (*convert_to_dp_mode)(struct dp_display *dp_display, void *panel,
			const struct drm_display_mode *drm_mode,
			struct dp_display_mode *dp_mode);
+1 −1
Original line number Diff line number Diff line
@@ -114,7 +114,7 @@ static void dp_bridge_pre_enable(struct drm_bridge *drm_bridge)
	}

	/* for SST force stream id, start slot and total slots to 0 */
	dp->set_stream_info(dp, bridge->dp_panel, 0, 0, 0, 0);
	dp->set_stream_info(dp, bridge->dp_panel, 0, 0, 0, 0, 0);

	rc = dp->enable(dp, bridge->dp_panel);
	if (rc) {
+4 −2
Original line number Diff line number Diff line
@@ -529,7 +529,8 @@ static void _dp_mst_update_timeslots(struct dp_mst_private *mst,

		mst->dp_display->set_stream_info(mst->dp_display,
				dp_bridge->dp_panel,
				dp_bridge->id, start_slot, num_slots, pbn);
				dp_bridge->id, start_slot, num_slots, pbn,
				dp_bridge->vcpi);

		pr_info("bridge:%d vcpi:%d start_slot:%d num_slots:%d, pbn:%d\n",
			dp_bridge->id, dp_bridge->vcpi,
@@ -554,7 +555,8 @@ static void _dp_mst_update_single_timeslot(struct dp_mst_private *mst,

		mst->dp_display->set_stream_info(mst->dp_display,
				mst_bridge->dp_panel,
				mst_bridge->id, start_slot, num_slots, pbn);
				mst_bridge->id, start_slot, num_slots, pbn,
				mst_bridge->vcpi);
	}
}

+3 −2
Original line number Diff line number Diff line
@@ -2305,13 +2305,14 @@ static void dp_panel_edid_deregister(struct dp_panel_private *panel)

static int dp_panel_set_stream_info(struct dp_panel *dp_panel,
		enum dp_stream_id stream_id, u32 ch_start_slot,
			u32 ch_tot_slots, u32 pbn)
			u32 ch_tot_slots, u32 pbn, int vcpi)
{
	if (!dp_panel || stream_id > DP_STREAM_MAX) {
		pr_err("invalid input. stream_id: %d\n", stream_id);
		return -EINVAL;
	}

	dp_panel->vcpi = vcpi;
	dp_panel->stream_id = stream_id;
	dp_panel->channel_start_slot = ch_start_slot;
	dp_panel->channel_total_slots = ch_tot_slots;
@@ -2376,7 +2377,7 @@ static int dp_panel_deinit_panel_info(struct dp_panel *dp_panel, u32 flags)
	if (!panel->custom_edid && dp_panel->edid_ctrl->edid)
		sde_free_edid((void **)&dp_panel->edid_ctrl);

	dp_panel_set_stream_info(dp_panel, DP_STREAM_MAX, 0, 0, 0);
	dp_panel_set_stream_info(dp_panel, DP_STREAM_MAX, 0, 0, 0, 0);
	memset(&dp_panel->pinfo, 0, sizeof(dp_panel->pinfo));
	memset(&hdr->hdr_meta, 0, sizeof(hdr->hdr_meta));
	panel->panel_on = false;
Loading