drm/nouveau: add support for gm204
authorBen Skeggs <bskeggs@redhat.com>
Tue, 19 Aug 2014 00:23:47 +0000 (10:23 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 2 Dec 2014 05:43:50 +0000 (15:43 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_bios.c
drivers/gpu/drm/nouveau/nouveau_display.c
drivers/gpu/drm/nouveau/nv50_display.c

index 2c6b4a00debb3b587124a84280b9e0982368f90a..7df6acc8bb3413ad847db56c5b234764dbd7124e 100644 (file)
@@ -1258,7 +1258,7 @@ olddcb_table(struct drm_device *dev)
                return NULL;
        }
 
-       if (dcb[0] >= 0x41) {
+       if (dcb[0] >= 0x42) {
                NV_WARN(drm, "DCB version 0x%02x unknown\n", dcb[0]);
                return NULL;
        } else
@@ -1481,16 +1481,19 @@ parse_dcb20_entry(struct drm_device *dev, struct dcb_table *dcb,
                        entry->dpconf.link_bw = 540000;
                        break;
                }
-               switch ((conf & 0x0f000000) >> 24) {
-               case 0xf:
-                       entry->dpconf.link_nr = 4;
-                       break;
-               case 0x3:
-                       entry->dpconf.link_nr = 2;
-                       break;
-               default:
-                       entry->dpconf.link_nr = 1;
-                       break;
+               entry->dpconf.link_nr = (conf & 0x0f000000) >> 24;
+               if (dcb->version < 0x41) {
+                       switch (entry->dpconf.link_nr) {
+                       case 0xf:
+                               entry->dpconf.link_nr = 4;
+                               break;
+                       case 0x3:
+                               entry->dpconf.link_nr = 2;
+                               break;
+                       default:
+                               entry->dpconf.link_nr = 1;
+                               break;
+                       }
                }
                link = entry->dpconf.sor.link;
                entry->i2c_index += NV_I2C_AUX(0);
index 2640fcfa5c37010582da6936a072f2454e5a2cb1..a311a3f932f05f91bf02014e8b5720c73b5f946e 100644 (file)
@@ -479,6 +479,7 @@ nouveau_display_create(struct drm_device *dev)
 
        if (nouveau_modeset != 2 && drm->vbios.dcb.entries) {
                static const u16 oclass[] = {
+                       GM204_DISP,
                        GM107_DISP,
                        GK110_DISP,
                        GK104_DISP,
index 76b8c4f980ea0faa245cdebef6d4b9b0d66e3a97..27d5418ea16810b920681ff30af189d14bc736ea 100644 (file)
@@ -266,6 +266,7 @@ nv50_core_create(struct nvif_object *disp, u64 syncbuf, struct nv50_mast *core)
                .pushbuf = 0xb0007d00,
        };
        static const u32 oclass[] = {
+               GM204_DISP_CORE_CHANNEL_DMA,
                GM107_DISP_CORE_CHANNEL_DMA,
                GK110_DISP_CORE_CHANNEL_DMA,
                GK104_DISP_CORE_CHANNEL_DMA,