linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/dp: Handle zeroed port counts in drm_dp_read_downstream_info()
@ 2021-04-30 22:34 Lyude Paul
  2021-04-30 22:34 ` [PATCH 2/2] drm/dp: Drop open-coded drm_dp_is_branch() " Lyude Paul
  2021-05-03  3:13 ` [PATCH 1/2] drm/dp: Handle zeroed port counts " Ville Syrjälä
  0 siblings, 2 replies; 5+ messages in thread
From: Lyude Paul @ 2021-04-30 22:34 UTC (permalink / raw)
  To: intel-gfx, dri-devel
  Cc: Jérôme de Bretagne, stable, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, David Airlie, Daniel Vetter,
	Sean Paul, Jani Nikula, open list

While the DP specification isn't entirely clear on if this should be
allowed or not, some branch devices report having downstream ports present
while also reporting a downstream port count of 0. So to avoid breaking
those devices, we need to handle this in drm_dp_read_downstream_info().

So, to do this we assume there's no downstream port info when the
downstream port count is 0.

Signed-off-by: Lyude Paul <lyude@redhat.com>
Tested-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
Bugzilla: https://gitlab.freedesktop.org/drm/intel/-/issues/3416
Fixes: 3d3721ccb18a ("drm/i915/dp: Extract drm_dp_read_downstream_info()")
Cc: <stable@vger.kernel.org> # v5.10+
---
 drivers/gpu/drm/drm_dp_helper.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index cb56d74e9d38..27c8c5bdf7d9 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -682,7 +682,14 @@ int drm_dp_read_downstream_info(struct drm_dp_aux *aux,
 	    !(dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DWN_STRM_PORT_PRESENT))
 		return 0;
 
+	/* Some branches advertise having 0 downstream ports, despite also advertising they have a
+	 * downstream port present. The DP spec isn't clear on if this is allowed or not, but since
+	 * some branches do it we need to handle it regardless.
+	 */
 	len = drm_dp_downstream_port_count(dpcd);
+	if (!len)
+		return 0;
+
 	if (dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DETAILED_CAP_INFO_AVAILABLE)
 		len *= 4;
 
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-05-07 21:28 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-30 22:34 [PATCH 1/2] drm/dp: Handle zeroed port counts in drm_dp_read_downstream_info() Lyude Paul
2021-04-30 22:34 ` [PATCH 2/2] drm/dp: Drop open-coded drm_dp_is_branch() " Lyude Paul
2021-05-03  3:06   ` [Intel-gfx] " Ville Syrjälä
2021-05-07 21:28     ` Lyude Paul
2021-05-03  3:13 ` [PATCH 1/2] drm/dp: Handle zeroed port counts " Ville Syrjälä

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).