summaryrefslogtreecommitdiff
authorLuc Verhaegen <libv@skynet.be>2008-12-03 21:55:49 (GMT)
committer Luc Verhaegen <libv@skynet.be>2008-12-03 21:55:49 (GMT)
commitc2c3b6cb876600a970f4e7e6d03a2eff8245de92 (patch) (side-by-side diff)
tree681359fdc4484f92064985a140e153bcae89c3ab
parentb25bdec73bc21afc1f7f8ac220673a13e1ec920c (diff)
downloadxf86-video-unichrome-c2c3b6cb.zip
xf86-video-unichrome-c2c3b6cb.tar.gz
CLE266: Bus DFP: only null CR88.6 when using TMDS.
This probably is the difference between 24 or 18 bit panels, not sure yet.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--src/via_output.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/via_output.c b/src/via_output.c
index 3fe30f4..c4cbfa7 100644
--- a/src/via_output.c
+++ b/src/via_output.c
@@ -1189,14 +1189,14 @@ ViaOutputBusPower(struct ViaCrtc *Crtc, int Bus, Bool On)
*
*/
static void
-ViaOutputBusSet(struct ViaCrtc *Crtc, int Bus)
+ViaOutputBusSet(struct ViaCrtc *Crtc, struct ViaOutput *Output)
{
vgaHWPtr hwp = VGAHWPTR(xf86Screens[Crtc->scrnIndex]);
VIAPtr pVia = VIAPTR(xf86Screens[Crtc->scrnIndex]);
VIAFUNC(Crtc->scrnIndex);
- switch (Bus) {
+ switch (Output->Position) {
case OUTPUT_BUS_CRT:
if (Crtc->ID == VIA_CRTC_SECONDARY)
ViaSeqMask(hwp, 0x16, 0x40, 0x40);
@@ -1244,7 +1244,8 @@ ViaOutputBusSet(struct ViaCrtc *Crtc, int Bus)
ViaCrtcMask(hwp, 0x93, 0x80, 0x80); /* Set Source */
else
ViaCrtcMask(hwp, 0x93, 0x00, 0x80);
- ViaCrtcMask(hwp, 0x88, 0x00, 0x40); /* ??? */
+ if (Output->Type == OUTPUT_TMDS)
+ ViaCrtcMask(hwp, 0x88, 0x00, 0x40); /* ??? 18 vs 24bit maybe? */
} else {
if (Crtc->ID == VIA_CRTC_SECONDARY) { /* Set DFP source */
ViaCrtcMask(hwp, 0x97, 0x10, 0x10);
@@ -1260,7 +1261,7 @@ ViaOutputBusSet(struct ViaCrtc *Crtc, int Bus)
break;
default:
xf86DrvMsg(Crtc->scrnIndex, X_ERROR, "%s: unhandled bus: %d\n",
- __func__, Bus);
+ __func__, Output->Position);
return;
}
}
@@ -1335,7 +1336,7 @@ ViaOutputsModeSet(struct ViaCrtc *Crtc, DisplayModeRec *Mode)
for (Output = pVia->Outputs; Output; Output = Output->Next) {
if ((Output->Owner == Crtc->ID) && Output->Active) {
ViaOutputBusPower(Crtc, Output->Position, TRUE);
- ViaOutputBusSet(Crtc, Output->Position);
+ ViaOutputBusSet(Crtc, Output);
if (Crtc->bpp == 8) /* palette, not gamma */
ViaOutputBusGammaEnable(Output, FALSE);