aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2014-08-18 20:23:47 -0400
committerBen Skeggs <bskeggs@redhat.com>2014-12-02 00:43:50 -0500
commitdbbd6bcfd42fd977b1615224fc96f09ebb6edb6b (patch)
tree07dc8b7c078e633e4bb3a4b4f30760369400a4f0
parent083dba02947db82f97a6da6dcffd29d15ad94889 (diff)
drm/nouveau: add support for gm204
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_bios.c25
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_display.c1
-rw-r--r--drivers/gpu/drm/nouveau/nv50_display.c1
3 files changed, 16 insertions, 11 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
index 2c6b4a00debb..7df6acc8bb34 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bios.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
@@ -1258,7 +1258,7 @@ olddcb_table(struct drm_device *dev)
1258 return NULL; 1258 return NULL;
1259 } 1259 }
1260 1260
1261 if (dcb[0] >= 0x41) { 1261 if (dcb[0] >= 0x42) {
1262 NV_WARN(drm, "DCB version 0x%02x unknown\n", dcb[0]); 1262 NV_WARN(drm, "DCB version 0x%02x unknown\n", dcb[0]);
1263 return NULL; 1263 return NULL;
1264 } else 1264 } else
@@ -1481,16 +1481,19 @@ parse_dcb20_entry(struct drm_device *dev, struct dcb_table *dcb,
1481 entry->dpconf.link_bw = 540000; 1481 entry->dpconf.link_bw = 540000;
1482 break; 1482 break;
1483 } 1483 }
1484 switch ((conf & 0x0f000000) >> 24) { 1484 entry->dpconf.link_nr = (conf & 0x0f000000) >> 24;
1485 case 0xf: 1485 if (dcb->version < 0x41) {
1486 entry->dpconf.link_nr = 4; 1486 switch (entry->dpconf.link_nr) {
1487 break; 1487 case 0xf:
1488 case 0x3: 1488 entry->dpconf.link_nr = 4;
1489 entry->dpconf.link_nr = 2; 1489 break;
1490 break; 1490 case 0x3:
1491 default: 1491 entry->dpconf.link_nr = 2;
1492 entry->dpconf.link_nr = 1; 1492 break;
1493 break; 1493 default:
1494 entry->dpconf.link_nr = 1;
1495 break;
1496 }
1494 } 1497 }
1495 link = entry->dpconf.sor.link; 1498 link = entry->dpconf.sor.link;
1496 entry->i2c_index += NV_I2C_AUX(0); 1499 entry->i2c_index += NV_I2C_AUX(0);
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
index 2640fcfa5c37..a311a3f932f0 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -479,6 +479,7 @@ nouveau_display_create(struct drm_device *dev)
479 479
480 if (nouveau_modeset != 2 && drm->vbios.dcb.entries) { 480 if (nouveau_modeset != 2 && drm->vbios.dcb.entries) {
481 static const u16 oclass[] = { 481 static const u16 oclass[] = {
482 GM204_DISP,
482 GM107_DISP, 483 GM107_DISP,
483 GK110_DISP, 484 GK110_DISP,
484 GK104_DISP, 485 GK104_DISP,
diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c
index 76b8c4f980ea..27d5418ea168 100644
--- a/drivers/gpu/drm/nouveau/nv50_display.c
+++ b/drivers/gpu/drm/nouveau/nv50_display.c
@@ -266,6 +266,7 @@ nv50_core_create(struct nvif_object *disp, u64 syncbuf, struct nv50_mast *core)
266 .pushbuf = 0xb0007d00, 266 .pushbuf = 0xb0007d00,
267 }; 267 };
268 static const u32 oclass[] = { 268 static const u32 oclass[] = {
269 GM204_DISP_CORE_CHANNEL_DMA,
269 GM107_DISP_CORE_CHANNEL_DMA, 270 GM107_DISP_CORE_CHANNEL_DMA,
270 GK110_DISP_CORE_CHANNEL_DMA, 271 GK110_DISP_CORE_CHANNEL_DMA,
271 GK104_DISP_CORE_CHANNEL_DMA, 272 GK104_DISP_CORE_CHANNEL_DMA,