drm/nouveau/dp: link rate scripts are selected with a comparison table
authorBen Skeggs <bskeggs@redhat.com>
Fri, 5 Aug 2011 00:28:52 +0000 (10:28 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 20 Sep 2011 06:10:56 +0000 (16:10 +1000)
Not hardcoded as originally thought.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_dp.c

index 89d5c161c8bd9249ade1f4ca8c37ac8852ec2814..55782bd7df0fc6a399450f9b0cb28841e22518df 100644 (file)
@@ -314,11 +314,10 @@ dp_set_link_config(struct drm_device *dev, struct dp_state *dp)
         */
        bios = nouveau_bios_dp_table(dev, dp->dcb, &headerlen);
        if (bios && (bios = ROMPTR(&dev_priv->vbios, bios[10]))) {
-               u16 script = ROM16(bios[2]);
-               if (dp->link_bw != 270000)
-                       script = ROM16(bios[6]);
+               while (dp->link_bw < (ROM16(bios[0]) * 10))
+                       bios += 4;
 
-               nouveau_bios_run_init_table(dev, script, dp->dcb, dp->crtc);
+               nouveau_bios_run_init_table(dev, ROM16(bios[2]), dp->dcb, dp->crtc);
        }
 
        /* configure lane count on the source */