summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2014-08-19 10:23:47 +1000
committerBen Skeggs <bskeggs@redhat.com>2014-11-06 15:15:36 +1000
commit8c5775a42584a5d4a695d488938552b6cf6e8ee8 (patch)
treea7f03cacd9d315a3f6b4739e57145c9de9eb2c5e
parentb706c029d82f7ab75f8a6669af2624fdfcb986e4 (diff)
downloadnouveau-8c5775a42584a5d4a695d488938552b6cf6e8ee8.tar.gz
drm: add support for gm204
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--drm/nouveau_bios.c25
-rw-r--r--drm/nouveau_display.c1
-rw-r--r--drm/nv50_display.c1
3 files changed, 16 insertions, 11 deletions
diff --git a/drm/nouveau_bios.c b/drm/nouveau_bios.c
index 2c6b4a00d..7df6acc8b 100644
--- a/drm/nouveau_bios.c
+++ b/drm/nouveau_bios.c
@@ -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);
diff --git a/drm/nouveau_display.c b/drm/nouveau_display.c
index a88e6927f..ba0adc1c5 100644
--- a/drm/nouveau_display.c
+++ b/drm/nouveau_display.c
@@ -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,
diff --git a/drm/nv50_display.c b/drm/nv50_display.c
index ae873d1a8..7d1ac1822 100644
--- a/drm/nv50_display.c
+++ b/drm/nv50_display.c
@@ -265,6 +265,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,