drm/nouveau: Fix TMDS on some DCB1.5 boards.

The TMDS output of an nv11 was being detected as LVDS, because it uses
DCB type 2 for TMDS instead of type 4.

Reported-by: Bertrand VIEILLE <Vieille.Bertrand@free.fr>
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
Francisco Jerez 2010-08-24 23:02:02 +02:00 committed by Ben Skeggs
parent d31e078d84
commit fba6752834

View File

@ -6166,23 +6166,15 @@ parse_dcb15_entry(struct drm_device *dev, struct dcb_table *dcb,
entry->type = OUTPUT_TV; entry->type = OUTPUT_TV;
break; break;
case 2: case 2:
case 4:
if (conn & 0x10)
entry->type = OUTPUT_LVDS;
else
entry->type = OUTPUT_TMDS;
break;
case 3: case 3:
entry->type = OUTPUT_LVDS; entry->type = OUTPUT_LVDS;
break; break;
case 4:
switch ((conn & 0x000000f0) >> 4) {
case 0:
entry->type = OUTPUT_TMDS;
break;
case 1:
entry->type = OUTPUT_LVDS;
break;
default:
NV_ERROR(dev, "Unknown DCB subtype 4/%d\n",
(conn & 0x000000f0) >> 4);
return false;
}
break;
default: default:
NV_ERROR(dev, "Unknown DCB type %d\n", conn & 0x0000000f); NV_ERROR(dev, "Unknown DCB type %d\n", conn & 0x0000000f);
return false; return false;