devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Abhinav Kumar <quic_abhinavk@quicinc.com>
To: Rob Clark <robdclark@gmail.com>,
	Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	Sean Paul <sean@poorly.run>,
	Marijn Suijten <marijn.suijten@somainline.org>,
	David Airlie <airlied@gmail.com>,
	"Simona Vetter" <simona@ffwll.ch>,
	Stephen Boyd <swboyd@chromium.org>,
	"Chandan Uddaraju" <chandanu@codeaurora.org>,
	Guenter Roeck <groeck@chromium.org>,
	Kuogee Hsieh <quic_khsieh@quicinc.com>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konradybcio@kernel.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>
Cc: Vara Reddy <quic_varar@quicinc.com>,
	Rob Clark <robdclark@chromium.org>,
	Tanmay Shah <tanmay@codeaurora.org>,
	<linux-arm-msm@vger.kernel.org>,
	<dri-devel@lists.freedesktop.org>,
	<freedreno@lists.freedesktop.org>, <linux-kernel@vger.kernel.org>,
	<devicetree@vger.kernel.org>,
	Jessica Zhang <quic_jesszhan@quicinc.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Abhinav Kumar <quic_abhinavk@quicinc.com>
Subject: [PATCH 07/45] drm/msm/dp: break up dp_display_enable into two parts
Date: Thu, 5 Dec 2024 20:31:38 -0800	[thread overview]
Message-ID: <20241205-dp_mst-v1-7-f8618d42a99a@quicinc.com> (raw)
In-Reply-To: <20241205-dp_mst-v1-0-f8618d42a99a@quicinc.com>

dp_display_enable() currently re-trains the link if needed
and then enables the pixel clock, programs the controller to
start sending the pixel stream. Break up these two parts into
separate APIs to distinguish these two parts better.

Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
---
 drivers/gpu/drm/msm/dp/dp_ctrl.c    | 57 ++++++++++++++--------
 drivers/gpu/drm/msm/dp/dp_ctrl.h    |  3 +-
 drivers/gpu/drm/msm/dp/dp_display.c | 97 ++++++++++++++++++++++++++++---------
 drivers/gpu/drm/msm/dp/dp_display.h |  1 +
 4 files changed, 112 insertions(+), 46 deletions(-)

diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_ctrl.c
index 9c463ae2f8fae916661fef1c7e225f55c1026478..763bd58c24d29d49caafb76eab32b493e1618e7b 100644
--- a/drivers/gpu/drm/msm/dp/dp_ctrl.c
+++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c
@@ -1941,40 +1941,61 @@ static int msm_dp_ctrl_link_retrain(struct msm_dp_ctrl_private *ctrl)
 	return msm_dp_ctrl_setup_main_link(ctrl, &training_step);
 }
 
-int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl, bool force_link_train)
+int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl *msm_dp_ctrl, bool force_link_train)
 {
 	int ret = 0;
-	bool mainlink_ready = false;
 	struct msm_dp_ctrl_private *ctrl;
-	unsigned long pixel_rate;
-	unsigned long pixel_rate_orig;
 
 	if (!msm_dp_ctrl)
 		return -EINVAL;
 
 	ctrl = container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctrl);
 
-	pixel_rate = pixel_rate_orig = ctrl->panel->msm_dp_mode.drm_mode.clock;
-
-	if (msm_dp_ctrl->wide_bus_en || ctrl->panel->msm_dp_mode.out_fmt_is_yuv_420)
-		pixel_rate >>= 1;
-
-	drm_dbg_dp(ctrl->drm_dev, "rate=%d, num_lanes=%d, pixel_rate=%lu\n",
-		ctrl->link->link_params.rate,
-		ctrl->link->link_params.num_lanes, pixel_rate);
+	drm_dbg_dp(ctrl->drm_dev, "rate=%d, num_lanes=%d\n",
+		   ctrl->link->link_params.rate,
+		   ctrl->link->link_params.num_lanes);
 
 	drm_dbg_dp(ctrl->drm_dev,
-		"core_clk_on=%d link_clk_on=%d stream_clk_on=%d\n",
-		ctrl->core_clks_on, ctrl->link_clks_on, ctrl->stream_clks_on);
+		   "core_clk_on=%d link_clk_on=%d stream_clk_on=%d\n",
+		   ctrl->core_clks_on, ctrl->link_clks_on, ctrl->stream_clks_on);
 
 	if (!ctrl->link_clks_on) { /* link clk is off */
 		ret = msm_dp_ctrl_enable_mainlink_clocks(ctrl);
 		if (ret) {
 			DRM_ERROR("Failed to start link clocks. ret=%d\n", ret);
-			goto end;
+			return ret;
 		}
 	}
 
+	if (force_link_train || !msm_dp_ctrl_channel_eq_ok(ctrl))
+		msm_dp_ctrl_link_retrain(ctrl);
+
+	/* stop txing train pattern to end link training */
+	msm_dp_ctrl_clear_training_pattern(ctrl);
+
+	return ret;
+}
+
+int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl)
+{
+	int ret = 0;
+	bool mainlink_ready = false;
+	struct msm_dp_ctrl_private *ctrl;
+	unsigned long pixel_rate;
+	unsigned long pixel_rate_orig;
+
+	if (!msm_dp_ctrl)
+		return -EINVAL;
+
+	ctrl = container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctrl);
+
+	pixel_rate = pixel_rate_orig = ctrl->panel->msm_dp_mode.drm_mode.clock;
+
+	if (msm_dp_ctrl->wide_bus_en || ctrl->panel->msm_dp_mode.out_fmt_is_yuv_420)
+		pixel_rate >>= 1;
+
+	drm_dbg_dp(ctrl->drm_dev, "pixel_rate=%lu\n", pixel_rate);
+
 	ret = clk_set_rate(ctrl->pixel_clk, pixel_rate * 1000);
 	if (ret) {
 		DRM_ERROR("Failed to set pixel clock rate. ret=%d\n", ret);
@@ -1992,12 +2013,6 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl, bool force_link_train
 		ctrl->stream_clks_on = true;
 	}
 
-	if (force_link_train || !msm_dp_ctrl_channel_eq_ok(ctrl))
-		msm_dp_ctrl_link_retrain(ctrl);
-
-	/* stop txing train pattern to end link training */
-	msm_dp_ctrl_clear_training_pattern(ctrl);
-
 	/*
 	 * Set up transfer unit values and set controller state to send
 	 * video.
diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.h b/drivers/gpu/drm/msm/dp/dp_ctrl.h
index b7abfedbf5749c25877a0b8ba3af3d8ed4b23d67..42745c912adbad7221c78f5cecefa730bfda1e75 100644
--- a/drivers/gpu/drm/msm/dp/dp_ctrl.h
+++ b/drivers/gpu/drm/msm/dp/dp_ctrl.h
@@ -18,7 +18,8 @@ struct msm_dp_ctrl {
 struct phy;
 
 int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ctrl);
-int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl, bool force_link_train);
+int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl);
+int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl *dp_ctrl, bool force_link_train);
 void msm_dp_ctrl_off_link_stream(struct msm_dp_ctrl *msm_dp_ctrl);
 void msm_dp_ctrl_off_link(struct msm_dp_ctrl *msm_dp_ctrl);
 void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl);
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
index 4bd85ae754429333aa423c985368344cd03c7752..434380b442ec84c12c240dab6538ccdf31963cea 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -811,7 +811,37 @@ static int msm_dp_display_set_mode(struct msm_dp *msm_dp_display,
 	return 0;
 }
 
-static int msm_dp_display_enable(struct msm_dp_display_private *dp, bool force_link_train)
+static int msm_dp_display_prepare(struct msm_dp_display_private *dp)
+{
+	int rc = 0;
+	struct msm_dp *msm_dp_display = &dp->msm_dp_display;
+	bool force_link_train = false;
+
+	drm_dbg_dp(dp->drm_dev, "sink_count=%d\n", dp->link->sink_count);
+	if (msm_dp_display->prepared) {
+		drm_dbg_dp(dp->drm_dev, "Link already setup, return\n");
+		return 0;
+	}
+
+	rc = pm_runtime_resume_and_get(&msm_dp_display->pdev->dev);
+	if (rc) {
+		DRM_ERROR("failed to pm_runtime_resume\n");
+		return rc;
+	}
+
+	if (dp->hpd_state == ST_CONNECTED && !msm_dp_display->power_on) {
+		msm_dp_display_host_phy_init(dp);
+		force_link_train = true;
+	}
+
+	rc = msm_dp_ctrl_prepare_stream_on(dp->ctrl, force_link_train);
+	if (!rc)
+		msm_dp_display->prepared = true;
+
+	return rc;
+}
+
+static int msm_dp_display_enable(struct msm_dp_display_private *dp)
 {
 	int rc = 0;
 	struct msm_dp *msm_dp_display = &dp->msm_dp_display;
@@ -822,7 +852,7 @@ static int msm_dp_display_enable(struct msm_dp_display_private *dp, bool force_l
 		return 0;
 	}
 
-	rc = msm_dp_ctrl_on_stream(dp->ctrl, force_link_train);
+	rc = msm_dp_ctrl_on_stream(dp->ctrl);
 	if (!rc)
 		msm_dp_display->power_on = true;
 
@@ -852,13 +882,10 @@ static int msm_dp_display_post_enable(struct msm_dp *msm_dp_display)
 	return 0;
 }
 
-static int msm_dp_display_disable(struct msm_dp_display_private *dp)
+static void msm_dp_display_audio_notify_disable(struct msm_dp_display_private *dp)
 {
 	struct msm_dp *msm_dp_display = &dp->msm_dp_display;
 
-	if (!msm_dp_display->power_on)
-		return 0;
-
 	/* wait only if audio was enabled */
 	if (msm_dp_display->audio_enabled) {
 		/* signal the disconnect event */
@@ -869,6 +896,14 @@ static int msm_dp_display_disable(struct msm_dp_display_private *dp)
 	}
 
 	msm_dp_display->audio_enabled = false;
+}
+
+static int msm_dp_display_disable(struct msm_dp_display_private *dp)
+{
+	struct msm_dp *msm_dp_display = &dp->msm_dp_display;
+
+	if (!msm_dp_display->power_on)
+		return 0;
 
 	if (dp->link->sink_count == 0) {
 		/*
@@ -1498,9 +1533,8 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
 	struct msm_dp_bridge *msm_dp_bridge = to_dp_bridge(drm_bridge);
 	struct msm_dp *dp = msm_dp_bridge->msm_dp_display;
 	int rc = 0;
+
 	struct msm_dp_display_private *msm_dp_display;
-	u32 state;
-	bool force_link_train = false;
 
 	msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display);
 
@@ -1508,25 +1542,23 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
 		msm_dp_hpd_plug_handle(msm_dp_display, 0);
 
 	mutex_lock(&msm_dp_display->event_mutex);
-	if (pm_runtime_resume_and_get(&dp->pdev->dev)) {
-		DRM_ERROR("failed to pm_runtime_resume\n");
+
+	rc = msm_dp_display_prepare(msm_dp_display);
+	if (rc) {
+		DRM_ERROR("DP display prepare failed, rc=%d\n", rc);
 		mutex_unlock(&msm_dp_display->event_mutex);
 		return;
 	}
 
-	state =  msm_dp_display->hpd_state;
-
-	if (state == ST_CONNECTED && !dp->power_on) {
-		msm_dp_display_host_phy_init(msm_dp_display);
-		force_link_train = true;
-	}
-
-	msm_dp_display_enable(msm_dp_display, force_link_train);
-
-	rc = msm_dp_display_post_enable(dp);
-	if (rc) {
-		DRM_ERROR("DP display post enable failed, rc=%d\n", rc);
-		msm_dp_display_disable(msm_dp_display);
+	if (dp->prepared) {
+		rc = msm_dp_display_enable(msm_dp_display);
+		if (rc)
+			DRM_ERROR("DP display enable failed, rc=%d\n", rc);
+		rc = msm_dp_display_post_enable(dp);
+		if (rc) {
+			DRM_ERROR("DP display post enable failed, rc=%d\n", rc);
+			msm_dp_display_disable(msm_dp_display);
+		}
 	}
 
 	/* completed connection */
@@ -1548,6 +1580,20 @@ void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge,
 	msm_dp_ctrl_push_idle(msm_dp_display->ctrl);
 }
 
+static void msm_dp_display_unprepare(struct msm_dp_display_private *dp)
+{
+	struct msm_dp *msm_dp_display = &dp->msm_dp_display;
+
+	if (!msm_dp_display->prepared) {
+		drm_dbg_dp(dp->drm_dev, "Link already setup, return\n");
+		return;
+	}
+
+	pm_runtime_put_sync(&msm_dp_display->pdev->dev);
+
+	msm_dp_display->prepared = false;
+}
+
 void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge,
 				   struct drm_bridge_state *old_bridge_state)
 {
@@ -1568,6 +1614,8 @@ void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge,
 		drm_dbg_dp(dp->drm_dev, "type=%d wrong hpd_state=%d\n",
 			   dp->connector_type, state);
 
+	msm_dp_display_audio_notify_disable(msm_dp_display);
+
 	msm_dp_display_disable(msm_dp_display);
 
 	state =  msm_dp_display->hpd_state;
@@ -1576,9 +1624,10 @@ void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge,
 		msm_dp_display->hpd_state = ST_DISCONNECTED;
 	}
 
+	msm_dp_display_unprepare(msm_dp_display);
+
 	drm_dbg_dp(dp->drm_dev, "type=%d Done\n", dp->connector_type);
 
-	pm_runtime_put_sync(&dp->pdev->dev);
 	mutex_unlock(&msm_dp_display->event_mutex);
 }
 
diff --git a/drivers/gpu/drm/msm/dp/dp_display.h b/drivers/gpu/drm/msm/dp/dp_display.h
index ecbc2d92f546a346ee53adcf1b060933e4f54317..0165a80863e65b6eea6d2d8d1c5c08cd51fed101 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.h
+++ b/drivers/gpu/drm/msm/dp/dp_display.h
@@ -21,6 +21,7 @@ struct msm_dp {
 	bool link_ready;
 	bool audio_enabled;
 	bool power_on;
+	bool prepared;
 	unsigned int connector_type;
 	bool is_edp;
 	bool internal_hpd;

-- 
2.34.1


  parent reply	other threads:[~2024-12-06  4:33 UTC|newest]

Thread overview: 111+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-06  4:31 [PATCH 00/45] drm/msm/dp: Add MST support for MSM chipsets Abhinav Kumar
2024-12-06  4:31 ` [PATCH 01/45] drm/msm/dp: dont call dp_catalog_ctrl_mainlink_ctrl in dp_ctrl_configure_source_params() Abhinav Kumar
2024-12-08 17:50   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 02/45] drm/msm/dp: disable the opp table request even for dp_ctrl_off_link() Abhinav Kumar
2024-12-06  8:38   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 03/45] drm/msm/dp: fix the intf_type of MST interfaces Abhinav Kumar
2024-12-06  8:41   ` Dmitry Baryshkov
2025-01-07  0:55   ` Bjorn Andersson
2025-05-29 10:06     ` Yongxing Mou
2024-12-06  4:31 ` [PATCH 04/45] drm/msm/dp: split msm_dp_panel_read_sink_caps() into two parts Abhinav Kumar
2024-12-06  8:51   ` Dmitry Baryshkov
2025-05-22  9:51     ` Yongxing Mou
2025-05-22 12:38       ` Dmitry Baryshkov
2025-05-26 12:21         ` Yongxing Mou
2024-12-06  4:31 ` [PATCH 05/45] drm/msm/dp: add a helper to read mst caps for dp_panel Abhinav Kumar
2024-12-06  8:52   ` Dmitry Baryshkov
2025-05-26 12:26     ` Yongxing Mou
2025-05-28 16:13       ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 06/45] drm/msm/dp: remove dp_display's dp_mode and use dp_panel's instead Abhinav Kumar
2024-12-06  9:01   ` Dmitry Baryshkov
2024-12-06  4:31 ` Abhinav Kumar [this message]
2024-12-06  9:04   ` [PATCH 07/45] drm/msm/dp: break up dp_display_enable into two parts Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 08/45] drm/msm/dp: re-arrange dp_display_disable() into functional parts Abhinav Kumar
2024-12-08 12:03   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 09/45] drm/msm/dp: allow dp_ctrl stream APIs to use any panel passed to it Abhinav Kumar
2024-12-06  9:09   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 10/45] drm/msm/dp: move the pixel clock control to its own API Abhinav Kumar
2024-12-06  9:11   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 11/45] drm/msm/dp: split dp_ctrl_off() into stream and link parts Abhinav Kumar
2024-12-06  9:14   ` Dmitry Baryshkov
2025-05-26 12:47     ` Yongxing Mou
2025-05-28 16:15       ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 12/45] drm/msm/dp: make bridge helpers use dp_display to allow re-use Abhinav Kumar
2024-12-08 11:07   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 13/45] drm/msm/dp: separate dp_display_prepare() into its own API Abhinav Kumar
2024-12-06 12:12   ` Stephan Gerhold
2024-12-06  4:31 ` [PATCH 14/45] drm/msm/dp: introduce stream_id for each DP panel Abhinav Kumar
2024-12-08 11:22   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 15/45] drm/msm/dp: convert dp_display_set_mode() to use dp_panel argument Abhinav Kumar
2024-12-08 11:39   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 16/45] drm/msm/dp: add support for programming p1 register block Abhinav Kumar
2024-12-06  9:39   ` Dmitry Baryshkov
2024-12-06  9:42   ` Dmitry Baryshkov
2024-12-08  6:22   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 17/45] drm/msm/dp: use stream_id to change offsets in dp_catalog Abhinav Kumar
2024-12-08  5:42   ` Dmitry Baryshkov
2025-05-26 12:57     ` Yongxing Mou
2025-05-28 16:17       ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 18/45] drm/msm/dp: add support to send ACT packets for MST Abhinav Kumar
2024-12-08  5:45   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 19/45] drm/msm/dp: add support to program mst support in mainlink Abhinav Kumar
2024-12-08 11:42   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 20/45] drm/msm/dp: no need to update tu calculation for mst Abhinav Kumar
2024-12-08  5:45   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 21/45] drm/msm/dp: add support for mst channel slot allocation Abhinav Kumar
2024-12-08  6:13   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 22/45] drm/msm/dp: add support to send vcpf packets in dp controller Abhinav Kumar
2024-12-08  6:20   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 23/45] drm/msm/dp: always program MST_FIFO_CONSTANT_FILL for MST Abhinav Kumar
2024-12-08 11:44   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 24/45] drm/msm/dp: abstract out the dp_display stream helpers to accept a panel Abhinav Kumar
2024-12-08 11:46   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 25/45] drm/msm/dp: move link related operations to dp_display_unprepare() Abhinav Kumar
2024-12-08 11:48   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 26/45] drm/msm/dp: replace power_on with active_stream_cnt for dp_display Abhinav Kumar
2024-12-08 11:50   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 27/45] drm/msm/dp: make the SST bridge disconnected when mst is active Abhinav Kumar
2024-12-08 11:51   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 28/45] drm/msm/dp: add an API to initialize MST on sink side Abhinav Kumar
2024-12-08 11:56   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 29/45] drm/msm/dp: skip reading the EDID for MST cases Abhinav Kumar
2024-12-06  9:32   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 30/45] drm/msm/dp: add dp_display_get_panel() to initialize DP panel Abhinav Kumar
2024-12-08  8:51   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 31/45] drm/msm/dp: add dp_mst_drm to manage DP MST bridge operations Abhinav Kumar
2024-12-06 10:12   ` Dmitry Baryshkov
2025-05-27 10:29     ` Yongxing Mou
2025-05-28 18:02       ` Dmitry Baryshkov
2024-12-08  7:19   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 32/45] drm/msm/dp: add connector abstraction for DP MST Abhinav Kumar
2024-12-08  7:24   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 33/45] drm/msm/dp: add irq hpd callback for dp mst Abhinav Kumar
2024-12-08  6:44   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 34/45] drm/msm/dp: add support to re-use and clear the panel edid Abhinav Kumar
2024-12-08  8:53   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 35/45] drm/msm/dp: add a mst session mutex to protect bridge ops Abhinav Kumar
2024-12-08  8:54   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 36/45] drm/msm/dp: propagate hpd state changes to dp mst module Abhinav Kumar
2024-12-08  8:58   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 37/45] drm/msm: add support for non-blocking commits Abhinav Kumar
2024-12-06  9:27   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 38/45] drm/msm: initialize DRM MST encoders for DP controllers Abhinav Kumar
2024-12-08  6:25   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 39/45] drm/msm/dp: initialize dp_mst module for each DP MST controller Abhinav Kumar
2024-12-08  6:31   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 40/45] drm/msm: add a stream to intf map for DP controller Abhinav Kumar
2024-12-06  9:20   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 41/45] drm/msm/dpu: use msm_dp_get_mst_intf_id() to get the intf id Abhinav Kumar
2024-12-06  9:25   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 42/45] drm/msm/dp: mark ST_DISCONNECTED only if all streams are disabled Abhinav Kumar
2024-12-08 11:58   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 43/45] drm/msm/dp: populate the max_streams for sa8775 mst controller Abhinav Kumar
2024-12-08 12:00   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 44/45] arm64: dts: qcom: add mst support for pixel stream clk for DP0 Abhinav Kumar
2024-12-06 12:20   ` Konrad Dybcio
2025-01-07  0:52   ` Bjorn Andersson
2024-12-06  4:32 ` [PATCH 45/45] arm64: dts: qcom: add mst support for pixel 1 stream clk for DP1 Abhinav Kumar
2025-01-07  1:06 ` [PATCH 00/45] drm/msm/dp: Add MST support for MSM chipsets Bjorn Andersson
2025-01-07  1:10   ` Abhinav Kumar
2025-05-10 12:12 ` Jens Glathe
2025-05-22 18:19   ` Abhinav Kumar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241205-dp_mst-v1-7-f8618d42a99a@quicinc.com \
    --to=quic_abhinavk@quicinc.com \
    --cc=airlied@gmail.com \
    --cc=andersson@kernel.org \
    --cc=chandanu@codeaurora.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=groeck@chromium.org \
    --cc=konradybcio@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marijn.suijten@somainline.org \
    --cc=quic_jesszhan@quicinc.com \
    --cc=quic_khsieh@quicinc.com \
    --cc=quic_varar@quicinc.com \
    --cc=robdclark@chromium.org \
    --cc=robdclark@gmail.com \
    --cc=robh@kernel.org \
    --cc=sean@poorly.run \
    --cc=simona@ffwll.ch \
    --cc=swboyd@chromium.org \
    --cc=tanmay@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).