[PATCH 3/3] DEBUG: print panel vendor

José Roberto de Souza jose.souza at intel.com
Sat Feb 9 01:00:05 UTC 2019


Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index b91b9700755f..d1d287522c83 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4099,11 +4099,24 @@ static void intel_dp_get_dsc_sink_cap(struct intel_dp *intel_dp)
 	}
 }
 
+static struct edid *intel_dp_get_edid(struct intel_dp *intel_dp);
+
+static void edid_vendor(const struct edid *edid, char vendor[3])
+{
+	vendor[0] = ((edid->mfg_id[0] & 0x7c) >> 2) + '@';
+	vendor[1] = (((edid->mfg_id[0] & 0x3) << 3) |
+		     ((edid->mfg_id[1] & 0xe0) >> 5)) + '@';
+	vendor[2] = (edid->mfg_id[1] & 0x1f) + '@';
+}
+
+#define EDID_PRODUCT_ID(e) ((e)->prod_code[0] | ((e)->prod_code[1] << 8))
+
 static bool
 intel_edp_init_dpcd(struct intel_dp *intel_dp)
 {
 	struct drm_i915_private *dev_priv =
 		to_i915(dp_to_dig_port(intel_dp)->base.base.dev);
+	struct edid *edid;
 
 	/* this function is meant to be called only once */
 	WARN_ON(intel_dp->dpcd[DP_DPCD_REV] != 0);
@@ -4114,6 +4127,16 @@ intel_edp_init_dpcd(struct intel_dp *intel_dp)
 	drm_dp_read_desc(&intel_dp->aux, &intel_dp->desc,
 			 drm_dp_is_branch(intel_dp->dpcd));
 
+	edid = intel_dp_get_edid(intel_dp);
+	if (edid) {
+		char vendor[3];
+
+		edid_vendor(edid, vendor);
+		DRM_DEBUG_KMS("eDP panel vendor %s prod %u\n", vendor, EDID_PRODUCT_ID(edid));
+	} else {
+		DRM_DEBUG_KMS("Unable to get EDID of eDP\n");
+	}
+
 	if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11)
 		dev_priv->no_aux_handshake = intel_dp->dpcd[DP_MAX_DOWNSPREAD] &
 			DP_NO_AUX_HANDSHAKE_LINK_TRAINING;
-- 
2.20.1



More information about the Intel-gfx-trybot mailing list