[PATCH 4/4] drm/dp/mst: Check peer device type before attempting EDID read

ville.syrjala at linux.intel.com ville.syrjala at linux.intel.com
Wed Oct 26 09:05:55 UTC 2016


From: Ville Syrjälä <ville.syrjala at linux.intel.com>

Only certain types of pdts have the DDC bus registered, so check for
that before we attempt the EDID read. Othwewise we risk playing around
with an i2c adapter that doesn't actually exist.

Cc: stable at vger.kernel.org
Cc: Carlos Santa <carlos.santa at intel.com>
Cc: Kirill A. Shutemov <kirill at shutemov.name>
Tested-by: Carlos Santa <carlos.santa at intel.com>
Tested-by: Kirill A. Shutemov <kirill at shutemov.name>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97666
Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
 drivers/gpu/drm/drm_dp_mst_topology.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
index 956babc161e5..690d1b407a90 100644
--- a/drivers/gpu/drm/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
@@ -1162,7 +1162,9 @@ static void drm_dp_add_port(struct drm_dp_mst_branch *mstb,
 			drm_dp_put_port(port);
 			goto out;
 		}
-		if (port->port_num >= DP_MST_LOGICAL_PORT_0) {
+		if ((port->pdt == DP_PEER_DEVICE_DP_LEGACY_CONV ||
+		     port->pdt == DP_PEER_DEVICE_SST_SINK) &&
+		    port->port_num >= DP_MST_LOGICAL_PORT_0) {
 			port->cached_edid = drm_get_edid(port->connector, &port->aux.ddc);
 			drm_mode_connector_set_tile_property(port->connector);
 		}
-- 
2.7.4



More information about the dri-devel mailing list