drm/nouveau/dp: Probe branch/sink OUIs (v2)
authorAdam Jackson <ajax@redhat.com>
Mon, 14 May 2012 20:05:49 +0000 (16:05 -0400)
committerDave Airlie <airlied@redhat.com>
Tue, 22 May 2012 09:29:02 +0000 (10:29 +0100)
(airlied: v2: fix missing struct - fixes compile)

Signed-off-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/nouveau/nouveau_dp.c

index d996134b1b280a381a58fd3c878c0e21c52edc60..7e289d2ad8e40f75d13b504fadbbc25c99cdeac2 100644 (file)
@@ -510,6 +510,25 @@ nouveau_dp_dpms(struct drm_encoder *encoder, int mode, u32 datarate,
                nouveau_dp_link_train(encoder, datarate, func);
 }
 
+static void
+nouveau_dp_probe_oui(struct drm_device *dev, struct nouveau_i2c_chan *auxch,
+                    u8 *dpcd)
+{
+       u8 buf[3];
+
+       if (!(dpcd[DP_DOWN_STREAM_PORT_COUNT] & DP_OUI_SUPPORT))
+               return;
+
+       if (!auxch_tx(dev, auxch->drive, 9, DP_SINK_OUI, buf, 3))
+               NV_DEBUG_KMS(dev, "Sink OUI: %02hx%02hx%02hx\n",
+                            buf[0], buf[1], buf[2]);
+
+       if (!auxch_tx(dev, auxch->drive, 9, DP_BRANCH_OUI, buf, 3))
+               NV_DEBUG_KMS(dev, "Branch OUI: %02hx%02hx%02hx\n",
+                            buf[0], buf[1], buf[2]);
+
+}
+
 bool
 nouveau_dp_detect(struct drm_encoder *encoder)
 {
@@ -544,6 +563,8 @@ nouveau_dp_detect(struct drm_encoder *encoder)
        NV_DEBUG_KMS(dev, "maximum: %dx%d\n",
                     nv_encoder->dp.link_nr, nv_encoder->dp.link_bw);
 
+       nouveau_dp_probe_oui(dev, auxch, dpcd);
+
        return true;
 }