summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Kosiorek <gang65@poczta.onet.pl>2010-11-02 21:48:18 +0000
committerBartosz Kosiorek <gang65@poczta.onet.pl>2010-11-02 21:48:18 +0000
commit1a8d4cbfe704336edb6e59d9d8b3bfcb964e7744 (patch)
treebea2da1b1ceac4d4313a06ce821eef34dbd658f8
parentb53fd0c2454be44f45e145688290543e05b93115 (diff)
update VX855 FIFO
-rw-r--r--src/via_bandwidth.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/via_bandwidth.c b/src/via_bandwidth.c
index b01974d..82b9bef 100644
--- a/src/via_bandwidth.c
+++ b/src/via_bandwidth.c
@@ -257,9 +257,10 @@ ViaSetPrimaryFIFO(ScrnInfoPtr pScrn, DisplayModePtr mode)
break;
case VIA_VX855:
hwp->writeSeq(hwp, 0x17, 0xC7); /* 400/2-1 = 199 = 0xC7 */
- /* TODO Formula for SR16 is: (0x50 & 0x3F) | ((0x50 & 0x40) << 1) = 0x90 */
- hwp->writeSeq(hwp, 0x16, 0x50); /* 320/4 = 80 = 0x50 */
- hwp->writeSeq(hwp, 0x18, 0x50); /* 320/4 = 80 = 0x50 */
+ /* Formula for {SR16,0,5},{SR16,7,7} is: (0x50 & 0x3F) | ((0x50 & 0x40) << 1) = 0x90 */
+ hwp->writeSeq(hwp, 0x16, 0x90); /* 320/4 = 80 = 0x50 */
+ /* Formula for {SR18,0,5},{SR18,7,7} is: (0x50 & 0x3F) | ((0x50 & 0x40) << 1) = 0x90 */
+ hwp->writeSeq(hwp, 0x18, 0x90); /* 320/4 = 80 = 0x50 */
hwp->writeSeq(hwp, 0x22, 0x28); /* 160/4 = 40 = 0x28 */
break;
default:
@@ -446,8 +447,8 @@ ViaSetSecondaryFIFO(ScrnInfoPtr pScrn, DisplayModePtr mode)
break;
case VIA_VX800:
/* {CR68,4,7},{CR94,7,7},{CR95,7,7} : 96/8-1 = 0x0B */
- ViaCrtcMask(hwp, 0x68, 0xA0, 0xF0);
- ViaCrtcMask(hwp, 0x94, 0x00, 0x80);
+ ViaCrtcMask(hwp, 0x68, 0xB0, 0xF0); /* ((0x0B & 0x0F) << 4)) = 0xB0 */
+ ViaCrtcMask(hwp, 0x94, 0x00, 0x80); /* ((0x0B & 0x10) << 3)) = 0x00 */
ViaCrtcMask(hwp, 0x95, 0x00, 0x80);
/* {CR68,0,3},{CR95,4,6} : 64/4 = 0x10 */
ViaCrtcMask(hwp, 0x68, 0x04, 0x0F);
@@ -462,16 +463,16 @@ ViaSetSecondaryFIFO(ScrnInfoPtr pScrn, DisplayModePtr mode)
ViaCrtcMask(hwp, 0x94, 0x20, 0x7F);
break;
case VIA_VX855:
- /* {CR68,4,7},{CR94,7,7},{CR95,7,7} : 200/8-1 = 0x7c */
- ViaCrtcMask(hwp, 0x68, 0xF0, 0xF0);
- ViaCrtcMask(hwp, 0x94, 0x00, 0x80);
- ViaCrtcMask(hwp, 0x95, 0x00, 0x80);
+ /* {CR68,4,7},{CR94,7,7},{CR95,7,7} : 200/8-1 = 24 = 0x18 */
+ ViaCrtcMask(hwp, 0x68, 0x80, 0xF0); /* ((0x18 & 0x0F) << 4)) = 0x80 */
+ ViaCrtcMask(hwp, 0x94, 0x80, 0x80); /* ((0x18 & 0x10) << 3)) = 0x80 */
+ ViaCrtcMask(hwp, 0x95, 0x00, 0x80); /* ((0x18 & 0x20) << 2)) = 0x00 */
/* {CR68,0,3},{CR95,4,6} : 160/4 = 0x28 */
- ViaCrtcMask(hwp, 0x68, 0x00, 0x0F);
- ViaCrtcMask(hwp, 0x95, 0x10, 0x70);
+ ViaCrtcMask(hwp, 0x68, 0x08, 0x0F); /* (0x28 & 0x0F) = 0x08 */
+ ViaCrtcMask(hwp, 0x95, 0x20, 0x70); /* (0x28 & 0x70) = 0x20 */
/* {CR92,0,3},{CR95,0,2} : 160/4 = 0x28 */
- ViaCrtcMask(hwp, 0x92, 0x00, 0x08);
- ViaCrtcMask(hwp, 0x95, 0x01, 0x07);
+ ViaCrtcMask(hwp, 0x92, 0x08, 0x08); /* (0x28 & 0x0F) = 0x08 */
+ ViaCrtcMask(hwp, 0x95, 0x02, 0x07); /* ((0x28 & 0x70) >> 4)) = 0x02 */
/* {CR94,0,6} : 320/4 = 0x50 */
if ((mode->HDisplay >= 1400) && (pScrn->bitsPerPixel == 32))
ViaCrtcMask(hwp, 0x94, 0x08, 0x7F);