drm/nouveau/bios: add support for dcb 4.1
authorBen Skeggs <bskeggs@redhat.com>
Mon, 18 Aug 2014 04:09:00 +0000 (14:09 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 2 Dec 2014 05:43:46 +0000 (15:43 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/subdev/bios/dcb.c

index bd8d348385b38fe1a3231586bdea941be9657558..96099aff8b41a0067a4fb72731e530676f4b8852 100644 (file)
@@ -42,7 +42,7 @@ dcb_table(struct nouveau_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len)
 
        *ver = nv_ro08(bios, dcb);
 
-       if (*ver >= 0x41) {
+       if (*ver >= 0x42) {
                nv_warn(bios, "DCB version 0x%02x unknown\n", *ver);
                return 0x0000;
        } else
@@ -157,17 +157,20 @@ dcb_outp_parse(struct nouveau_bios *bios, u8 idx, u8 *ver, u8 *len,
                                        break;
                                }
 
-                               switch (conf & 0x0f000000) {
-                               case 0x0f000000:
-                                       outp->dpconf.link_nr = 4;
-                                       break;
-                               case 0x03000000:
-                                       outp->dpconf.link_nr = 2;
-                                       break;
-                               case 0x01000000:
-                               default:
-                                       outp->dpconf.link_nr = 1;
-                                       break;
+                               outp->dpconf.link_nr = (conf & 0x0f000000) >> 24;
+                               if (*ver < 0x41) {
+                                       switch (outp->dpconf.link_nr) {
+                                       case 0x0f:
+                                               outp->dpconf.link_nr = 4;
+                                               break;
+                                       case 0x03:
+                                               outp->dpconf.link_nr = 2;
+                                               break;
+                                       case 0x01:
+                                       default:
+                                               outp->dpconf.link_nr = 1;
+                                               break;
+                                       }
                                }
 
                                /* fall-through... */