drm/i915/dp: Probe branch/sink OUIs
authorAdam Jackson <ajax@redhat.com>
Mon, 14 May 2012 20:05:47 +0000 (16:05 -0400)
committerDave Airlie <airlied@redhat.com>
Tue, 22 May 2012 09:18:47 +0000 (10:18 +0100)
Signed-off-by: Adam Jackson <ajax@redhat.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/i915/intel_dp.c

index a1a5ce71558a5d7d288f288f11c051873957175f..71c7096e386950f5fc8f2fbad253dc80cd764e16 100644 (file)
@@ -1961,6 +1961,23 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp)
        return false;
 }
 
+static void
+intel_dp_probe_oui(struct intel_dp *intel_dp)
+{
+       u8 buf[3];
+
+       if (!(intel_dp->dpcd[DP_DOWN_STREAM_PORT_COUNT] & DP_OUI_SUPPORT))
+               return;
+
+       if (intel_dp_aux_native_read_retry(intel_dp, DP_SINK_OUI, buf, 3))
+               DRM_DEBUG_KMS("Sink OUI: %02hx%02hx%02hx\n",
+                             buf[0], buf[1], buf[2]);
+
+       if (intel_dp_aux_native_read_retry(intel_dp, DP_BRANCH_OUI, buf, 3))
+               DRM_DEBUG_KMS("Branch OUI: %02hx%02hx%02hx\n",
+                             buf[0], buf[1], buf[2]);
+}
+
 static bool
 intel_dp_get_sink_irq(struct intel_dp *intel_dp, u8 *sink_irq_vector)
 {
@@ -2144,6 +2161,8 @@ intel_dp_detect(struct drm_connector *connector, bool force)
        if (status != connector_status_connected)
                return status;
 
+       intel_dp_probe_oui(intel_dp);
+
        if (intel_dp->force_audio != HDMI_AUDIO_AUTO) {
                intel_dp->has_audio = (intel_dp->force_audio == HDMI_AUDIO_ON);
        } else {