rpms/xorg-x11-drv-openchrome/devel openchrome-0.2.903-disable_TMDS_by_default.patch, NONE, 1.1 openchrome-0.2.903-fix_cursor_on_secondary.patch, NONE, 1.1 openchrome-0.2.903-pll_rework.patch, NONE, 1.1 openchrome-0.2.903-vx855_support.patch, NONE, 1.1 openchrome-0.2.903-latest_snapshot.patch, 1.6, 1.7 openchrome.xinf, 1.2, 1.3 xorg-x11-drv-openchrome.spec, 1.42, 1.43
Xavier Bachelot
xavierb at fedoraproject.org
Thu Jun 18 22:19:01 UTC 2009
- Previous message (by thread): rpms/libccss/devel import.log, NONE, 1.1 libccss.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2
- Next message (by thread): rpms/healpy/devel healpy-0.9.6-fedoralib.patch, NONE, 1.1 healpy.spec, NONE, 1.1 import.log, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: xavierb
Update of /cvs/pkgs/rpms/xorg-x11-drv-openchrome/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv24974
Modified Files:
openchrome-0.2.903-latest_snapshot.patch openchrome.xinf
xorg-x11-drv-openchrome.spec
Added Files:
openchrome-0.2.903-disable_TMDS_by_default.patch
openchrome-0.2.903-fix_cursor_on_secondary.patch
openchrome-0.2.903-pll_rework.patch
openchrome-0.2.903-vx855_support.patch
Log Message:
0.2.903+svn751 + VX855 support
openchrome-0.2.903-disable_TMDS_by_default.patch:
--- NEW FILE openchrome-0.2.903-disable_TMDS_by_default.patch ---
Index: src/via_mode.c
===================================================================
--- src/via_mode.c (revision 750)
+++ src/via_mode.c (working copy)
@@ -449,9 +449,12 @@
if (pBIOSInfo->CrtPresent)
pBIOSInfo->CrtActive = TRUE;
+#if 0
+ # FIXME : DFP must be activated with the ActiveDevice option
/* DFP */
if (pBIOSInfo->DfpPresent)
pBIOSInfo->DfpActive = TRUE;
+#endif
} else {
if (pVia->ActiveDevice & VIA_DEVICE_LCD) {
openchrome-0.2.903-fix_cursor_on_secondary.patch:
--- NEW FILE openchrome-0.2.903-fix_cursor_on_secondary.patch ---
Index: src/via_cursor.c
===================================================================
--- src/via_cursor.c (wersja 751)
+++ src/via_cursor.c (kopia robocza)
@@ -290,19 +286,36 @@
CARD32 temp;
CARD32 control = pVia->CursorRegControl;
- temp =
- (1 << 30) |
- (1 << 29) |
- (1 << 28) |
- (1 << 26) |
- (1 << 25) |
- (1 << 2) |
- (1 << 0);
+ switch(pVia->Chipset) {
+ case VIA_CX700:
+ case VIA_P4M890:
+ case VIA_P4M900:
+ case VIA_VX800:
+ if (pVia->pBIOSInfo->FirstCRTC->IsActive) {
+ VIASETREG(VIA_REG_HI_CONTROL0, 0x36000005);
+ }
+ if (pVia->pBIOSInfo->SecondCRTC->IsActive) {
+ VIASETREG(VIA_REG_HI_CONTROL1, 0xb6000005);
+ }
+ break;
+
+ default:
+ /* temp = 0x36000005 */
+ temp =
+ (1 << 29) |
+ (1 << 28) |
+ (1 << 26) |
+ (1 << 25) |
+ (1 << 2) |
+ (1 << 0);
- if (pVia->CursorPipe)
- temp |= (1 << 31);
+ temp |= (1 << 30);
- VIASETREG(control, temp);
+ /* Duoview */
+ if (pVia->CursorPipe)
+ temp |= (1 << 31);
+ VIASETREG(control, temp);
+ }
}
void
@@ -313,7 +326,24 @@
CARD32 control = pVia->CursorRegControl;
temp = VIAGETREG(control);
- VIASETREG(control, temp & 0xFFFFFFFE);
+ switch(pVia->Chipset) {
+ case VIA_CX700:
+ case VIA_P4M890:
+ case VIA_P4M900:
+ case VIA_VX800:
+ if (pVia->pBIOSInfo->FirstCRTC->IsActive) {
+ temp = VIAGETREG(VIA_REG_HI_CONTROL0);
+ VIASETREG(VIA_REG_HI_CONTROL0, temp & 0xFFFFFFFA);
+ }
+ if (pVia->pBIOSInfo->SecondCRTC->IsActive) {
+ temp = VIAGETREG(VIA_REG_HI_CONTROL1);
+ VIASETREG(VIA_REG_HI_CONTROL1, temp & 0xFFFFFFFA);
+ }
+ break;
+
+ default:
+ VIASETREG(control, temp & 0xFFFFFFFA);
+ }
}
static void
@@ -340,13 +370,41 @@
yoff = 0;
}
- temp = VIAGETREG(control);
- VIASETREG(control, temp & 0xFFFFFFFE);
+ switch(pVia->Chipset) {
+ case VIA_CX700:
+ case VIA_P4M890:
+ case VIA_P4M900:
+ case VIA_VX800:
+ if (pVia->pBIOSInfo->FirstCRTC->IsActive) {
+ temp = VIAGETREG(VIA_REG_HI_CONTROL0);
+ VIASETREG(VIA_REG_HI_CONTROL0, temp & 0xFFFFFFFE);
+
+ VIASETREG(VIA_REG_HI_POS0, ((x << 16) | (y & 0x07ff)));
+ VIASETREG(VIA_REG_HI_OFFSET0, ((xoff << 16) | (yoff & 0x07ff)));
- VIASETREG(pos, ((x << 16) | (y & 0x07ff)));
- VIASETREG(offset, ((xoff << 16) | (yoff & 0x07ff)));
+ VIASETREG(VIA_REG_HI_CONTROL0, temp);
+ }
+ if (pVia->pBIOSInfo->SecondCRTC->IsActive) {
+ temp = VIAGETREG(VIA_REG_HI_CONTROL1);
+ VIASETREG(VIA_REG_HI_CONTROL1, temp & 0xFFFFFFFE);
- VIASETREG(control, temp);
+ VIASETREG(VIA_REG_HI_POS1, ((x << 16) | (y & 0x07ff)));
+ VIASETREG(VIA_REG_HI_OFFSET1, ((xoff << 16) | (yoff & 0x07ff)));
+
+ VIASETREG(VIA_REG_HI_CONTROL1, temp);
+ }
+ break;
+
+ default:
+ temp = VIAGETREG(control);
+ VIASETREG(control, temp & 0xFFFFFFFE);
+
+ VIASETREG(pos, ((x << 16) | (y & 0x07ff)));
+ VIASETREG(offset, ((xoff << 16) | (yoff & 0x07ff)));
+
+ VIASETREG(control, temp);
+ }
+
}
static Bool
@@ -397,18 +455,34 @@
if (pVia->CursorARGBSupported) {
#define ARGB_PER_CHUNK (8 * sizeof (chunk) / 2)
for (i = 0; i < (pVia->CursorMaxWidth * pVia->CursorMaxHeight / ARGB_PER_CHUNK); i++) {
- chunk = *s++;
- for (j = 0; j < ARGB_PER_CHUNK; j++, chunk >>= 2)
+ chunk = *s++;
+ for (j = 0; j < ARGB_PER_CHUNK; j++, chunk >>= 2)
*dst++ = mono_cursor_color[chunk & 3];
}
pVia->CursorFG = mono_cursor_color[3];
pVia->CursorBG = mono_cursor_color[2];
- } else {
- memcpy(dst, src, pVia->CursorSize);
- }
-
- VIASETREG(control, temp);
+ } else {
+ memcpy(dst, src, pVia->CursorSize);
+ }
+ switch(pVia->Chipset) {
+ case VIA_CX700:
+ case VIA_P4M890:
+ case VIA_P4M900:
+ case VIA_VX800:
+ if (pVia->pBIOSInfo->FirstCRTC->IsActive) {
+ temp = VIAGETREG(VIA_REG_HI_CONTROL0);
+ VIASETREG(VIA_REG_HI_CONTROL0, temp & 0xFFFFFFFE);
+ }
+ if (pVia->pBIOSInfo->SecondCRTC->IsActive) {
+ temp = VIAGETREG(VIA_REG_HI_CONTROL1);
+ VIASETREG(VIA_REG_HI_CONTROL1, temp & 0xFFFFFFFE);
+ }
+ break;
+
+ default:
+ VIASETREG(control, temp);
+ }
}
static void
@@ -441,7 +515,23 @@
pVia->CursorFG = fg;
pVia->CursorBG = bg;
- VIASETREG(control, temp);
+ switch(pVia->Chipset) {
+ case VIA_CX700:
+ case VIA_P4M890:
+ case VIA_P4M900:
+ case VIA_VX800:
+ if (pVia->pBIOSInfo->FirstCRTC->IsActive) {
+ temp = VIAGETREG(VIA_REG_HI_CONTROL0);
+ VIASETREG(VIA_REG_HI_CONTROL0, temp & 0xFFFFFFFE);
+ }
+ if (pVia->pBIOSInfo->SecondCRTC->IsActive) {
+ temp = VIAGETREG(VIA_REG_HI_CONTROL1);
+ VIASETREG(VIA_REG_HI_CONTROL1, temp & 0xFFFFFFFE);
+ }
+ break;
+ default:
+ VIASETREG(control, temp);
+ }
}
static void
@@ -486,5 +576,22 @@
for (x = 0; x < pVia->CursorMaxWidth; x++)
*dst++ = 0;
- VIASETREG(control, temp);
+ switch(pVia->Chipset) {
+ case VIA_CX700:
+ case VIA_P4M890:
+ case VIA_P4M900:
+ case VIA_VX800:
+ if (pVia->pBIOSInfo->FirstCRTC->IsActive) {
+ temp = VIAGETREG(VIA_REG_HI_CONTROL0);
+ VIASETREG(VIA_REG_HI_CONTROL0, temp & 0xFFFFFFFE);
+ }
+ if (pVia->pBIOSInfo->SecondCRTC->IsActive) {
+ temp = VIAGETREG(VIA_REG_HI_CONTROL1);
+ VIASETREG(VIA_REG_HI_CONTROL1, temp & 0xFFFFFFFE);
+ }
+ break;
+
+ default:
+ VIASETREG(control, temp);
+ }
}
openchrome-0.2.903-pll_rework.patch:
--- NEW FILE openchrome-0.2.903-pll_rework.patch ---
--- src/via_mode.c 2009-06-16 23:17:42.000000000 +0200
+++ src/via_mode.c 2009-06-16 22:43:58.000000000 +0200
@@ -974,21 +974,35 @@
*
*/
static void
-ViaSetPrimaryDotclock(ScrnInfoPtr pScrn, CARD32 clock)
+ViaSetDotclock(ScrnInfoPtr pScrn, CARD32 clock, int base, int probase)
{
vgaHWPtr hwp = VGAHWPTR(pScrn);
VIAPtr pVia = VIAPTR(pScrn);
DEBUG(xf86DrvMsg(hwp->pScrn->scrnIndex, X_INFO,
- "ViaSetPrimaryDotclock to 0x%06x\n", (unsigned)clock));
+ "ViaSetDotclock to 0x%06x\n", (unsigned)clock));
if ((pVia->Chipset == VIA_CLE266) || (pVia->Chipset == VIA_KM400)) {
- hwp->writeSeq(hwp, 0x46, clock >> 8);
- hwp->writeSeq(hwp, 0x47, clock & 0xFF);
+ hwp->writeSeq(hwp, base, clock >> 8);
+ hwp->writeSeq(hwp, base+1, clock & 0xFF);
} else { /* unichrome pro */
- hwp->writeSeq(hwp, 0x44, clock >> 16);
- hwp->writeSeq(hwp, 0x45, (clock >> 8) & 0xFF);
- hwp->writeSeq(hwp, 0x46, clock & 0xFF);
+ union pllparams pll;
+ int dtz, dr, dn, dm;
+ pll.packed = clock;
+ dtz = pll.params.dtz;
+ dr = pll.params.dr;
+ dn = pll.params.dn;
+ dm = pll.params.dm;
+
+ /* The VX855 does not modify dm/dn, but earlier chipsets do. */
+ if (pVia->Chipset != VIA_VX855) {
+ dm -= 2;
+ dn -= 2;
+ }
+
+ hwp->writeSeq(hwp, probase, dm & 0xff);
+ hwp->writeSeq(hwp, probase+1, ((dm >> 8) & 0x03) | (dr << 2) | ((dtz & 1) << 7));
+ hwp->writeSeq(hwp, probase+2, (dn & 0x7f) | ((dtz & 2) << 6));
}
ViaSeqMask(hwp, 0x40, 0x02, 0x02);
@@ -999,25 +1013,28 @@
*
*/
static void
-ViaSetSecondaryDotclock(ScrnInfoPtr pScrn, CARD32 clock)
+ViaSetPrimaryDotclock(ScrnInfoPtr pScrn, CARD32 clock)
{
- vgaHWPtr hwp = VGAHWPTR(pScrn);
- VIAPtr pVia = VIAPTR(pScrn);
-
- DEBUG(xf86DrvMsg(hwp->pScrn->scrnIndex, X_INFO,
- "ViaSetSecondaryDotclock to 0x%06x\n", (unsigned)clock));
+ ViaSetDotclock(pScrn, clock, 0x46, 0x44);
+}
- if ((pVia->Chipset == VIA_CLE266) || (pVia->Chipset == VIA_KM400)) {
- hwp->writeSeq(hwp, 0x44, clock >> 8);
- hwp->writeSeq(hwp, 0x45, clock & 0xFF);
- } else { /* unichrome pro */
- hwp->writeSeq(hwp, 0x4A, clock >> 16);
- hwp->writeSeq(hwp, 0x4B, (clock >> 8) & 0xFF);
- hwp->writeSeq(hwp, 0x4C, clock & 0xFF);
- }
+/*
+ *
+ */
+static void
+ViaSetSecondaryDotclock(ScrnInfoPtr pScrn, CARD32 clock)
+{
+ ViaSetDotclock(pScrn, clock, 0x44, 0x4A);
+}
- ViaSeqMask(hwp, 0x40, 0x04, 0x04);
- ViaSeqMask(hwp, 0x40, 0x00, 0x04);
+/*
+ *
+ */
+static void
+ViaSetECKDotclock(ScrnInfoPtr pScrn, CARD32 clock)
+{
+ /* Does the non-pro chip have an ECK clock ? */
+ ViaSetDotclock(pScrn, clock, 0, 0x47);
}
/*
@@ -1287,15 +1304,16 @@
{
double fvco, fout, fref, err, minErr;
CARD32 dr = 0, dn, dm, maxdm, maxdn;
- CARD32 factual, bestClock;
-
+ CARD32 factual;
+ union pllparams bestClock;
+
fref = 14.318e6;
fout = (double)clock * 1.e3;
factual = ~0;
- maxdm = factual / 14318000U - 2;
+ maxdm = factual / 14318000U;
minErr = 1.e10;
- bestClock = 0U;
+ bestClock.packed = 0U;
do {
fvco = fout * (1 << dr);
@@ -1306,30 +1324,31 @@
}
if (clock < 30000)
- maxdn = 6;
+ maxdn = 8;
else if (clock < 45000)
- maxdn = 5;
+ maxdn = 7;
else if (clock < 170000)
- maxdn = 4;
+ maxdn = 6;
else
- maxdn = 3;
+ maxdn = 5;
- for (dn = 0; dn < maxdn; ++dn) {
- for (dm = 0; dm < maxdm; ++dm) {
- factual = 14318000U * (dm + 2);
- factual /= (dn + 2) << dr;
+ for (dn = 2; dn < maxdn; ++dn) {
+ for (dm = 2; dm < maxdm; ++dm) {
+ factual = 14318000U * dm;
+ factual /= dn << dr;
if ((err = fabs((double)factual / fout - 1.)) < 0.005) {
if (err < minErr) {
minErr = err;
- bestClock = ((dm & 0xff) << 16) |
- (((1 << 7) | (dr << 2) | ((dm & 0x300) >> 8)) << 8)
- | (dn & 0x7f);
+ bestClock.params.dtz = 1;
+ bestClock.params.dr = dr;
+ bestClock.params.dn = dn;
+ bestClock.params.dm = dm;
}
}
}
}
- return bestClock;
+ return bestClock.packed;
}
/*
@@ -1356,15 +1375,10 @@
"ViaComputeDotClock %d : %04x : %04x\n",
mode->Clock, best1, best2));
return best2;
- } else if (pVia->Chipset == VIA_VX855) {
- for (i = 0; ViaDotClocks[i].DotClock; i++)
- if (ViaDotClocks[i].DotClock == mode->Clock &&
- ViaDotClocks[i].Chrome9HCM)
- return ViaDotClocks[i].Chrome9HCM;
} else {
for (i = 0; ViaDotClocks[i].DotClock; i++)
if (ViaDotClocks[i].DotClock == mode->Clock)
- return ViaDotClocks[i].UniChromePro;
+ return ViaDotClocks[i].UniChromePro.packed;
return ViaComputeProDotClock(mode->Clock);
}
--- src/via_mode.h 2009-06-16 23:08:20.000000000 +0200
+++ src/via_mode.h 2009-06-16 22:43:58.000000000 +0200
@@ -35,7 +35,16 @@
#define VIA_BW_DDR400 498000000 /* > 1920x1080 at 60Hz@32bpp */
#define VIA_BW_DDR667 922000000
-
+union pllparams {
+ struct {
+ CARD32 dtz : 2;
+ CARD32 dr : 3;
+ CARD32 dn : 7;
+ CARD32 dm :10;
+ } params;
+ CARD32 packed;
+};
+
/*
* simple lookup table for dotclocks
*
@@ -43,57 +52,51 @@
static struct ViaDotClock {
int DotClock;
CARD16 UniChrome;
- CARD32 UniChromePro;
- CARD32 Chrome9HCM;
+ union pllparams UniChromePro;
} ViaDotClocks[] = {
- { 25200, 0x513C, 0xa79004 },
- { 25312, 0xC763, 0xc49005 },
- { 26591, 0x471A, 0xce9005 },
- { 31500, 0xC558, 0xae9003, 0xb01005 },
- { 31704, 0x471F, 0xaf9002 },
- { 32663, 0xC449, 0x479000 },
- { 33750, 0x4721, 0x959002, 0x921004 },
- { 35500, 0x5877, 0x759001 },
- { 36000, 0x5879, 0x9f9002, 0xa11004 },
- { 39822, 0xC459, 0x578c02 },
- { 40000, 0x515F, 0x848c04, 0x700c05 },
- { 41164, 0x4417, 0x2c8c00 },
- { 46981, 0x5069, 0x678c02, 0x690c04 },
- { 49500, 0xC353, 0xa48c04, 0x530c03 },
- { 50000, 0xC354, 0x368c00 },
- { 56300, 0x4F76, 0x3d8c00, 0x9d0c05 },
- { 57284, 0x4E70, 0x3e8c00 },
- { 64995, 0x0D3B, 0x6b8c01, 0x6d0c03 },
- { 65000, 0x0D3B, 0x6b8c01, 0x6d0c03 }, /* Slightly unstable on PM800 */
- { 65028, 0x866D, 0x6b8c01 },
- { 74480, 0x156E, 0x288800, 0xd10c05 },
- { 75000, 0x156E, 0x288800 },
- { 78800, 0x442C, 0x2a8800, 0x6e0805 },
- { 81135, 0x0622, 0x428801 },
- { 81613, 0x4539, 0x708803, 0x720805 },
- { 94500, 0x4542, 0x4d8801, 0x840805 },
- { 108000, 0x0B53, 0x778802, 0x970805 },
- { 108280, 0x4879, 0x778802 },
- { 122000, 0x0D6F, 0x428800 },
- { 122726, 0x073C, 0x878802, 0xac0805 },
- { 135000, 0x0742, 0x6f8801, 0xbd0805},
- { 148500, 0x0853, 0x518800, 0xd00805},
- { 155800, 0x0857, 0x558402 },
- { 157500, 0x422C, 0x2a8400, 0x6e0405 },
- { 161793, 0x4571, 0x6f8403 },
- { 162000, 0x0A71, 0x6f8403, 0x710405 },
- { 175500, 0x4231, 0x2f8400 },
- { 189000, 0x0542, 0x4d8401 },
- { 202500, 0x0763, 0x6F8402, 0x8e0405 },
- { 204800, 0x0764, 0x548401 },
- { 218300, 0x043D, 0x3b8400, 0x990405 },
- { 229500, 0x0660, 0x3e8400, 0xa10405 }, /* Not tested on Pro */
- { 234000, 0, 0xa20403, 0xa40405 },
- { 267250, 0, 0xb90403, 0xbb0405 },
- { 297500, 0, 0xce0403, 0xd00405 },
- { 339500, 0, 0x5d0002, 0x770005 },
- { 340772, 0, 0x750003, 0x770005 },
- { 0, 0, 0 }
+ { 25200, 0x513C, /* 0xa79004 */ { 1, 4, 6, 169 } },
+ { 25312, 0xC763, /* 0xc49005 */ { 1, 4, 7, 198 } },
+ { 26591, 0x471A, /* 0xce9005 */ { 1, 4, 7, 208 } },
+ { 31500, 0xC558, /* 0xae9003 */ { 1, 4, 5, 176 } },
+ { 31704, 0x471F, /* 0xaf9002 */ { 1, 4, 4, 177 } },
+ { 32663, 0xC449, /* 0x479000 */ { 1, 4, 2, 73 } },
+ { 33750, 0x4721, /* 0x959002 */ { 1, 4, 4, 151 } },
+ { 35500, 0x5877, /* 0x759001 */ { 1, 4, 3, 119 } },
+ { 36000, 0x5879, /* 0x9f9002 */ { 1, 4, 4, 161 } },
+ { 39822, 0xC459, /* 0x578c02 */ { 1, 3, 4, 89 } },
+ { 40000, 0x515F, /* 0x848c04 */ { 1, 3, 6, 134 } },
+ { 41164, 0x4417, /* 0x2c8c00 */ { 1, 3, 2, 46 } },
+ { 46981, 0x5069, /* 0x678c02 */ { 1, 3, 4, 105 } },
+ { 49500, 0xC353, /* 0xa48c04 */ { 3, 3, 5, 138 } },
+ { 50000, 0xC354, /* 0x368c00 */ { 1, 3, 2, 56 } },
+ { 56300, 0x4F76, /* 0x3d8c00 */ { 1, 3, 2, 63 } },
+ { 57284, 0x4E70, /* 0x3e8c00 */ { 1, 3, 2, 64 } },
+ { 64995, 0x0D3B, /* 0x6b8c01 */ { 1, 3, 3, 109 } },
+ { 65000, 0x0D3B, /* 0x6b8c01 */ { 1, 3, 3, 109 } }, /* Slightly unstable on PM800 */
+ { 65028, 0x866D, /* 0x6b8c01 */ { 1, 3, 3, 109 } },
+ { 74480, 0x156E, /* 0x288800 */ { 1, 2, 2, 42 } },
+ { 75000, 0x156E, /* 0x288800 */ { 1, 2, 2, 42 } },
+ { 78800, 0x442C, /* 0x2a8800 */ { 1, 2, 2, 44 } },
+ { 81135, 0x0622, /* 0x428801 */ { 1, 2, 3, 68 } },
+ { 81613, 0x4539, /* 0x708803 */ { 1, 2, 5, 114 } },
+ { 94500, 0x4542, /* 0x4d8801 */ { 1, 2, 3, 79 } },
+ { 108000, 0x0B53, /* 0x778802 */ { 1, 2, 4, 121 } },
+ { 108280, 0x4879, /* 0x778802 */ { 1, 2, 4, 121 } },
+ { 122000, 0x0D6F, /* 0x428800 */ { 1, 2, 2, 68 } },
+ { 122726, 0x073C, /* 0x878802 */ { 1, 2, 4, 137 } },
+ { 135000, 0x0742, /* 0x6f8801 */ { 1, 2, 3, 113 } },
+ { 148500, 0x0853, /* 0x518800 */ { 1, 2, 2, 83 } },
+ { 155800, 0x0857, /* 0x558402 */ { 1, 1, 4, 87 } },
+ { 157500, 0x422C, /* 0x2a8400 */ { 1, 1, 2, 44 } },
+ { 161793, 0x4571, /* 0x6f8403 */ { 1, 1, 5, 113 } },
+ { 162000, 0x0A71, /* 0x6f8403 */ { 1, 1, 5, 113 } },
+ { 175500, 0x4231, /* 0x2f8400 */ { 1, 1, 2, 49 } },
+ { 189000, 0x0542, /* 0x4d8401 */ { 1, 1, 3, 79 } },
+ { 202500, 0x0763, /* 0x6F8402 */ { 1, 1, 4, 113 } },
+ { 204800, 0x0764, /* 0x548401 */ { 1, 1, 3, 86 } },
+ { 218300, 0x043D, /* 0x3b8400 */ { 1, 1, 2, 61 } },
+ { 229500, 0x0660, /* 0x3e8400 */ { 1, 1, 2, 64 } }, /* Not tested on Pro } */
+ { 0, 0, { 0, 0, 0, 0 } }
};
/*
openchrome-0.2.903-vx855_support.patch:
--- NEW FILE openchrome-0.2.903-vx855_support.patch ---
Index: src/via_id.h
===================================================================
--- src/via_id.h (revision 751)
+++ src/via_id.h (working copy)
@@ -38,6 +38,7 @@
VIA_CX700,
VIA_P4M890,
VIA_VX800,
+ VIA_VX855,
VIA_LAST
};
@@ -54,6 +55,7 @@
#define PCI_CHIP_VT3324 0x3157 /* CX700 */
#define PCI_CHIP_VT3327 0x3343 /* P4M890 */
#define PCI_CHIP_VT3353 0x1122 /* VX800 */
+#define PCI_CHIP_VT3409 0x5122 /* VX855/VX875 */
/* There is some conflicting information about the two major revisions of
* the CLE266, often labelled Ax and Cx. The dividing line seems to be
Index: src/via_video.c
===================================================================
--- src/via_video.c (revision 751)
+++ src/via_video.c (working copy)
@@ -277,6 +277,7 @@
pVia->ChipId != PCI_CHIP_VT3314 &&
pVia->ChipId != PCI_CHIP_VT3327 &&
pVia->ChipId != PCI_CHIP_VT3336 &&
+ pVia->ChipId != PCI_CHIP_VT3409 &&
pVia->ChipId != PCI_CHIP_VT3364 &&
pVia->ChipId != PCI_CHIP_VT3324 &&
pVia->ChipId != PCI_CHIP_VT3353) {
Index: src/via_mode.c
===================================================================
--- src/via_mode.c (revision 751)
+++ src/via_mode.c (working copy)
@@ -371,17 +371,20 @@
}
}
- if ((pVia->Chipset == VIA_CX700) || (pVia->Chipset == VIA_VX800)) {
-
- if (ViaDFPDetect(pScrn)) {
- pBIOSInfo->DfpPresent = TRUE;
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "DFP is connected.\n");
- } else {
- pBIOSInfo->DfpPresent = FALSE;
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "DFP is disconnected.\n");
- }
+ switch (pVia->Chipset) {
+ case VIA_CX700:
+ case VIA_VX800:
+ case VIA_VX855:
+ if (ViaDFPDetect(pScrn)) {
+ pBIOSInfo->DfpPresent = TRUE;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "DFP is connected.\n");
+ } else {
+ pBIOSInfo->DfpPresent = FALSE;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "DFP is disconnected.\n");
+ }
+ break;
}
}
@@ -496,8 +499,14 @@
pBIOSInfo->FirstCRTC->IsActive = TRUE ;
if (pBIOSInfo->Panel->IsActive) {
pVia->pBIOSInfo->SecondCRTC->IsActive = TRUE ;
- if (pVia->Chipset == VIA_P4M900 || pVia->Chipset == VIA_CX700 || pVia->Chipset == VIA_VX800 )
- pVia->pBIOSInfo->Lvds->IsActive = TRUE ;
+ switch (pVia->Chipset) {
+ case VIA_P4M900:
+ case VIA_CX700:
+ case VIA_VX800:
+ case VIA_VX855:
+ pVia->pBIOSInfo->Lvds->IsActive = TRUE ;
+ break;
+ }
}
}
@@ -1347,6 +1356,11 @@
"ViaComputeDotClock %d : %04x : %04x\n",
mode->Clock, best1, best2));
return best2;
+ } else if (pVia->Chipset == VIA_VX855) {
+ for (i = 0; ViaDotClocks[i].DotClock; i++)
+ if (ViaDotClocks[i].DotClock == mode->Clock &&
+ ViaDotClocks[i].Chrome9HCM)
+ return ViaDotClocks[i].Chrome9HCM;
} else {
for (i = 0; ViaDotClocks[i].DotClock; i++)
if (ViaDotClocks[i].DotClock == mode->Clock)
Index: src/via_mode.h
===================================================================
--- src/via_mode.h (revision 751)
+++ src/via_mode.h (working copy)
@@ -44,49 +44,55 @@
int DotClock;
CARD16 UniChrome;
CARD32 UniChromePro;
+ CARD32 Chrome9HCM;
} ViaDotClocks[] = {
{ 25200, 0x513C, 0xa79004 },
{ 25312, 0xC763, 0xc49005 },
{ 26591, 0x471A, 0xce9005 },
- { 31500, 0xC558, 0xae9003 },
+ { 31500, 0xC558, 0xae9003, 0xb01005 },
{ 31704, 0x471F, 0xaf9002 },
{ 32663, 0xC449, 0x479000 },
- { 33750, 0x4721, 0x959002 },
+ { 33750, 0x4721, 0x959002, 0x921004 },
{ 35500, 0x5877, 0x759001 },
- { 36000, 0x5879, 0x9f9002 },
+ { 36000, 0x5879, 0x9f9002, 0xa11004 },
{ 39822, 0xC459, 0x578c02 },
- { 40000, 0x515F, 0x848c04 },
+ { 40000, 0x515F, 0x848c04, 0x700c05 },
{ 41164, 0x4417, 0x2c8c00 },
- { 46981, 0x5069, 0x678c02 },
- { 49500, 0xC353, 0xa48c04 },
+ { 46981, 0x5069, 0x678c02, 0x690c04 },
+ { 49500, 0xC353, 0xa48c04, 0x530c03 },
{ 50000, 0xC354, 0x368c00 },
- { 56300, 0x4F76, 0x3d8c00 },
+ { 56300, 0x4F76, 0x3d8c00, 0x9d0c05 },
{ 57284, 0x4E70, 0x3e8c00 },
- { 64995, 0x0D3B, 0x6b8c01 },
- { 65000, 0x0D3B, 0x6b8c01 }, /* Slightly unstable on PM800 */
+ { 64995, 0x0D3B, 0x6b8c01, 0x6d0c03 },
+ { 65000, 0x0D3B, 0x6b8c01, 0x6d0c03 }, /* Slightly unstable on PM800 */
{ 65028, 0x866D, 0x6b8c01 },
- { 74480, 0x156E, 0x288800 },
+ { 74480, 0x156E, 0x288800, 0xd10c05 },
{ 75000, 0x156E, 0x288800 },
- { 78800, 0x442C, 0x2a8800 },
+ { 78800, 0x442C, 0x2a8800, 0x6e0805 },
{ 81135, 0x0622, 0x428801 },
- { 81613, 0x4539, 0x708803 },
- { 94500, 0x4542, 0x4d8801 },
- { 108000, 0x0B53, 0x778802 },
+ { 81613, 0x4539, 0x708803, 0x720805 },
+ { 94500, 0x4542, 0x4d8801, 0x840805 },
+ { 108000, 0x0B53, 0x778802, 0x970805 },
{ 108280, 0x4879, 0x778802 },
{ 122000, 0x0D6F, 0x428800 },
- { 122726, 0x073C, 0x878802 },
- { 135000, 0x0742, 0x6f8801 },
- { 148500, 0x0853, 0x518800 },
+ { 122726, 0x073C, 0x878802, 0xac0805 },
+ { 135000, 0x0742, 0x6f8801, 0xbd0805},
+ { 148500, 0x0853, 0x518800, 0xd00805},
{ 155800, 0x0857, 0x558402 },
- { 157500, 0x422C, 0x2a8400 },
+ { 157500, 0x422C, 0x2a8400, 0x6e0405 },
{ 161793, 0x4571, 0x6f8403 },
- { 162000, 0x0A71, 0x6f8403 },
+ { 162000, 0x0A71, 0x6f8403, 0x710405 },
{ 175500, 0x4231, 0x2f8400 },
{ 189000, 0x0542, 0x4d8401 },
- { 202500, 0x0763, 0x6F8402 },
+ { 202500, 0x0763, 0x6F8402, 0x8e0405 },
{ 204800, 0x0764, 0x548401 },
- { 218300, 0x043D, 0x3b8400 },
- { 229500, 0x0660, 0x3e8400 }, /* Not tested on Pro */
+ { 218300, 0x043D, 0x3b8400, 0x990405 },
+ { 229500, 0x0660, 0x3e8400, 0xa10405 }, /* Not tested on Pro */
+ { 234000, 0, 0xa20403, 0xa40405 },
+ { 267250, 0, 0xb90403, 0xbb0405 },
+ { 297500, 0, 0xce0403, 0xd00405 },
+ { 339500, 0, 0x5d0002, 0x770005 },
+ { 340772, 0, 0x750003, 0x770005 },
{ 0, 0, 0 }
};
Index: src/via_driver.c
===================================================================
--- src/via_driver.c (revision 751)
+++ src/via_driver.c (working copy)
@@ -128,6 +128,7 @@
VIA_DEVICE_MATCH (PCI_CHIP_VT3324, 0 ),
VIA_DEVICE_MATCH (PCI_CHIP_VT3327, 0 ),
VIA_DEVICE_MATCH (PCI_CHIP_VT3353, 0 ),
+ VIA_DEVICE_MATCH (PCI_CHIP_VT3409, 0 ),
{ 0, 0, 0 },
};
@@ -164,6 +165,7 @@
{VIA_CX700, "CX700/VX700"},
{VIA_P4M890, "P4M890"},
{VIA_VX800, "VX800"},
+ {VIA_VX855, "VX855"},
{-1, NULL }
};
@@ -179,6 +181,7 @@
{VIA_CX700, PCI_CHIP_VT3324, RES_SHARED_VGA},
{VIA_P4M890, PCI_CHIP_VT3327, RES_SHARED_VGA},
{VIA_VX800, PCI_CHIP_VT3353, RES_SHARED_VGA},
+ {VIA_VX855, PCI_CHIP_VT3409, RES_SHARED_VGA},
{-1, -1, RES_UNDEFINED}
};
@@ -908,6 +911,7 @@
pVia->UseLegacyModeSwitch = FALSE;
break;
case VIA_VX800:
+ case VIA_VX855:
pVia->VideoEngine = VIDEO_ENGINE_CME;
/* pVia->agpEnable = FALSE;
pVia->dmaXV = FALSE;*/
@@ -1180,6 +1184,7 @@
case VIA_P4M900:
case VIA_CX700:
case VIA_VX800:
+ case VIA_VX855:
#ifdef XSERVER_LIBPCIACCESS
pci_device_cfg_read_u8(vgaDevice, &videoRam, 0xA1);
#else
@@ -1926,8 +1931,16 @@
viaAccelSync(pScrn);
/* A soft reset helps to avoid a 3D hang on VT switch. */
- if (pVia->Chipset != VIA_K8M890 && pVia->Chipset != VIA_P4M900 && pVia->Chipset != VIA_VX800)
- hwp->writeSeq(hwp, 0x1A, pVia->SavedReg.SR1A | 0x40);
+ switch (pVia->Chipset) {
+ case VIA_K8M890:
+ case VIA_P4M900:
+ case VIA_VX800:
+ case VIA_VX855:
+ break;
+ default:
+ hwp->writeSeq(hwp, 0x1A, pVia->SavedReg.SR1A | 0x40);
+ break;
+ }
#ifdef XF86DRI
if (pVia->directRenderingEnabled) {
@@ -2103,8 +2116,13 @@
}
/* Save TMDS status */
- if ((pVia->Chipset == VIA_CX700) || (pVia->Chipset == VIA_VX800))
- Regs->CRD2 = hwp->readCrtc(hwp, 0xD2);
+ switch (pVia->Chipset) {
+ case VIA_CX700:
+ case VIA_VX800:
+ case VIA_VX855:
+ Regs->CRD2 = hwp->readCrtc(hwp, 0xD2);
+ break;
+ }
vgaHWProtect(pScrn, FALSE);
}
@@ -2219,8 +2237,13 @@
}
/* Restore TMDS status */
- if ((pVia->Chipset == VIA_CX700) || (pVia->Chipset == VIA_VX800))
- hwp->writeCrtc(hwp, 0xD2, Regs->CRD2);
+ switch (pVia->Chipset) {
+ case VIA_CX700:
+ case VIA_VX800:
+ case VIA_VX855:
+ hwp->writeCrtc(hwp, 0xD2, Regs->CRD2);
+ break;
+ }
if (pBIOSInfo->Panel->IsActive)
ViaLCDPower(pScrn, TRUE);
@@ -2245,6 +2268,7 @@
case VIA_CX700:
case VIA_P4M900:
case VIA_VX800:
+ case VIA_VX855:
ViaSeqMask(hwp, 0x1A, 0x08, 0x08);
break;
default:
@@ -2267,6 +2291,7 @@
case VIA_CX700:
case VIA_P4M900:
case VIA_VX800:
+ case VIA_VX855:
ViaSeqMask(hwp, 0x1A, 0x00, 0x08);
break;
default:
@@ -2956,13 +2981,19 @@
* to detect when the display is using the secondary head.
* TODO: This should be enabled for other chipsets as well.
*/
- if ((pVia->Chipset == VIA_P4M900 || pVia->Chipset == VIA_VX800) && pVia->pBIOSInfo->Panel->IsActive) {
- /*
- * Since we are using virtual, we need to adjust
- * the offset to match the framebuffer alignment.
- */
- if (pScrn->displayWidth != mode->CrtcHDisplay)
- ViaSecondCRTCHorizontalOffset(pScrn);
+ if (pVia->pBIOSInfo->Panel->IsActive) {
+ switch (pVia->Chipset) {
+ case VIA_P4M900:
+ case VIA_VX800:
+ case VIA_VX855:
+ /*
+ * Since we are using virtual, we need to adjust
+ * the offset to match the framebuffer alignment.
+ */
+ if (pScrn->displayWidth != mode->CrtcHDisplay)
+ ViaSecondCRTCHorizontalOffset(pScrn);
+ break;
+ }
}
}
@@ -2996,9 +3027,16 @@
viaAccelSync(pScrn);
/* A soft reset avoids a 3D hang after X restart. */
- if (pVia->Chipset != VIA_K8M890 && pVia->Chipset != VIA_P4M900 &&
- pVia->Chipset != VIA_VX800)
- hwp->writeSeq(hwp, 0x1A, pVia->SavedReg.SR1A | 0x40);
+ switch (pVia->Chipset) {
+ case VIA_K8M890:
+ case VIA_P4M900:
+ case VIA_VX800:
+ case VIA_VX855:
+ break;
+ default :
+ hwp->writeSeq(hwp, 0x1A, pVia->SavedReg.SR1A | 0x40);
+ break;
+ }
if (!pVia->IsSecondary) {
/* Turn off all video activities. */
Index: src/via_crtc.c
===================================================================
--- src/via_crtc.c (revision 751)
+++ src/via_crtc.c (working copy)
@@ -173,6 +173,7 @@
case VIA_CX700:
case VIA_P4M900:
case VIA_VX800:
+ case VIA_VX855:
break;
default:
ViaSeqMask(hwp, 0x16, 0x08, 0xBF);
@@ -276,6 +277,7 @@
case VIA_CX700:
case VIA_P4M900:
case VIA_VX800:
+ case VIA_VX855:
break;
default:
/* some leftovers */
@@ -310,6 +312,7 @@
case VIA_CX700:
case VIA_P4M900:
case VIA_VX800:
+ case VIA_VX855:
break;
default:
/* some leftovers */
@@ -429,6 +432,7 @@
case VIA_CX700:
case VIA_P4M900:
case VIA_VX800:
+ case VIA_VX855:
break;
default:
ViaSeqMask(hwp, 0x16, 0x08, 0xBF);
@@ -512,6 +516,7 @@
case VIA_CX700:
case VIA_P4M900:
case VIA_VX800:
+ case VIA_VX855:
break;
default:
/* some leftovers */
Index: src/via_swov.c
===================================================================
--- src/via_swov.c (revision 751)
+++ src/via_swov.c (working copy)
@@ -282,6 +282,7 @@
HWDiff->dwNeedV1Prefetch = VID_HWDIFF_FALSE;
break;
case VIA_VX800:
+ case VIA_VX855:
HWDiff->dwThreeHQVBuffer = VID_HWDIFF_TRUE;
HWDiff->dwHQVFetchByteUnit = VID_HWDIFF_TRUE;
HWDiff->dwSupportTwoColorKey = VID_HWDIFF_TRUE;
@@ -784,6 +785,7 @@
case PCI_CHIP_VT3324:
case PCI_CHIP_VT3327:
case PCI_CHIP_VT3353:
+ case PCI_CHIP_VT3409:
model = 0;
break;
case PCI_CHIP_CLE3122:
@@ -922,6 +924,7 @@
case PCI_CHIP_VT3324:
case PCI_CHIP_VT3364:
case PCI_CHIP_VT3353:
+ case PCI_CHIP_VT3409:
case PCI_CHIP_CLE3122:
VIDOutD(V1_ColorSpaceReg_2, col2);
VIDOutD(V1_ColorSpaceReg_1, col1);
@@ -951,6 +954,7 @@
case PCI_CHIP_VT3324:
case PCI_CHIP_VT3364:
case PCI_CHIP_VT3353:
+ case PCI_CHIP_VT3409:
return (VIDEO_HQV_INUSE | SW_USE_HQV | VIDEO_1_INUSE
| VIDEO_ACTIVE | VIDEO_SHOW);
case PCI_CHIP_CLE3122:
@@ -990,6 +994,8 @@
case PCI_CHIP_VT3364:
case PCI_CHIP_VT3353:
return V3_ENABLE | VIDEO_EXPIRE_NUM_VT3336;
+ case PCI_CHIP_VT3409:
+ return V3_ENABLE | VIDEO_EXPIRE_NUM_VT3409;
case PCI_CHIP_CLE3122:
if (CLE266_REV_IS_CX(pVia->ChipRev))
return V3_ENABLE | V3_EXPIRE_NUM_F;
@@ -1269,24 +1275,28 @@
static void
SetFIFO_V3(VIAPtr pVia, CARD8 depth, CARD8 prethreshold, CARD8 threshold)
{
- if ((pVia->ChipId == PCI_CHIP_VT3314)
- || (pVia->ChipId == PCI_CHIP_VT3324)
- || (pVia->ChipId == PCI_CHIP_VT3327
- || (pVia->ChipId == PCI_CHIP_VT3353))) {
- SaveVideoRegister(pVia, ALPHA_V3_FIFO_CONTROL,
- (VIDInD(ALPHA_V3_FIFO_CONTROL) & ALPHA_FIFO_MASK)
- | ((depth - 1) & 0xff) | ((threshold & 0xff) << 8));
- SaveVideoRegister(pVia, ALPHA_V3_PREFIFO_CONTROL,
- (VIDInD(ALPHA_V3_PREFIFO_CONTROL)
- & ~V3_FIFO_MASK_3314) | (prethreshold & 0xff));
- } else {
- SaveVideoRegister(pVia, ALPHA_V3_FIFO_CONTROL,
- (VIDInD(ALPHA_V3_FIFO_CONTROL) & ALPHA_FIFO_MASK)
- | ((depth - 1) & 0xff) | ((threshold & 0xff) << 8));
- SaveVideoRegister(pVia, ALPHA_V3_PREFIFO_CONTROL,
- (VIDInD(ALPHA_V3_PREFIFO_CONTROL) & ~V3_FIFO_MASK)
- | (prethreshold & 0x7f));
- }
+ switch (pVia->ChipId) {
+ case PCI_CHIP_VT3314:
+ case PCI_CHIP_VT3324:
+ case PCI_CHIP_VT3327:
+ case PCI_CHIP_VT3353:
+ case PCI_CHIP_VT3409:
+ SaveVideoRegister(pVia, ALPHA_V3_FIFO_CONTROL,
+ (VIDInD(ALPHA_V3_FIFO_CONTROL) & ALPHA_FIFO_MASK)
+ | ((depth - 1) & 0xff) | ((threshold & 0xff) << 8));
+ SaveVideoRegister(pVia, ALPHA_V3_PREFIFO_CONTROL,
+ (VIDInD(ALPHA_V3_PREFIFO_CONTROL)
+ & ~V3_FIFO_MASK_3314) | (prethreshold & 0xff));
+ break;
+ default :
+ SaveVideoRegister(pVia, ALPHA_V3_FIFO_CONTROL,
+ (VIDInD(ALPHA_V3_FIFO_CONTROL) & ALPHA_FIFO_MASK)
+ | ((depth - 1) & 0xff) | ((threshold & 0xff) << 8));
+ SaveVideoRegister(pVia, ALPHA_V3_PREFIFO_CONTROL,
+ (VIDInD(ALPHA_V3_PREFIFO_CONTROL) & ~V3_FIFO_MASK)
+ | (prethreshold & 0x7f));
+ break;
+ }
}
static void
@@ -1335,6 +1345,7 @@
case PCI_CHIP_VT3324:
case PCI_CHIP_VT3364:
case PCI_CHIP_VT3353:
+ case PCI_CHIP_VT3409:
SetFIFO_V3(pVia, 225, 200, 250);
break;
case PCI_CHIP_VT3204:
@@ -1367,6 +1378,7 @@
case PCI_CHIP_VT3324:
case PCI_CHIP_VT3364:
case PCI_CHIP_VT3353:
+ case PCI_CHIP_VT3409:
SetFIFO_V3(pVia, 225, 200, 250);
break;
case PCI_CHIP_VT3204:
@@ -2011,7 +2023,7 @@
if (pVia->VideoEngine == VIDEO_ENGINE_CME) {
VIDOutD(HQV_SRC_DATA_OFFSET_CONTROL1,0);
VIDOutD(HQV_SRC_DATA_OFFSET_CONTROL3,((pUpdate->SrcRight - 1 ) << 16) | (pUpdate->SrcBottom - 1));
- if (pVia->Chipset == VIA_VX800) {
+ if (pVia->Chipset == VIA_VX800 || pVia->Chipset == VIA_VX855) {
VIDOutD(HQV_SRC_DATA_OFFSET_CONTROL2,0);
VIDOutD(HQV_SRC_DATA_OFFSET_CONTROL4,((pUpdate->SrcRight - 1 ) << 16) | (pUpdate->SrcBottom - 1));
}
Index: src/via_bandwidth.c
===================================================================
--- src/via_bandwidth.c (revision 751)
+++ src/via_bandwidth.c (working copy)
@@ -244,6 +244,11 @@
hwp->writeSeq(hwp, 0x18, 0x26); /* 152/4 = 38 */
hwp->writeSeq(hwp, 0x22, 0x10); /* 64/4 = 16 */
break;
+ case VIA_VX855:
+ hwp->writeSeq(hwp, 0x16, 0x50); /* 320/4 = 80 */
+ hwp->writeSeq(hwp, 0x17, 0xC7); /* 400/2-1 = 199 */
+ hwp->writeSeq(hwp, 0x18, 0x50); /* 320/4 = 80 */
+ hwp->writeSeq(hwp, 0x22, 0x28); /* 160/4 = 40 */
default:
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "ViaSetPrimaryFIFO: "
"Chipset %d not implemented\n", pVia->Chipset);
@@ -412,6 +417,8 @@
else
ViaCrtcMask(hwp, 0x94, 0x20, 0x7F);
break;
+ case VIA_VX855:
+ break;
default:
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "ViaSetSecondaryFIFO: "
"Chipset %d not implemented\n", pVia->Chipset);
Index: src/via_accel.c
===================================================================
--- src/via_accel.c (revision 751)
+++ src/via_accel.c (working copy)
@@ -195,6 +195,7 @@
*/
switch (pVia->Chipset) {
case VIA_VX800:
+ case VIA_VX855:
while ((VIAGETREG(VIA_REG_STATUS) &
(VIA_CMD_RGTR_BUSY_H5 | VIA_2D_ENG_BUSY_H5))
&& (loop++ < MAXLOOP)) ;
@@ -471,7 +472,7 @@
VIASETREG(i, 0x0);
}
- if (pVia->Chipset == VIA_VX800) {
+ if (pVia->Chipset == VIA_VX800 || pVia->Chipset == VIA_VX855) {
for (i = 0x44; i < 0x5c; i += 4) {
VIASETREG(i, 0x0);
}
@@ -480,6 +481,7 @@
/* Make the VIA_REG() macro magic work */
switch (pVia->Chipset) {
case VIA_VX800:
+ case VIA_VX855:
pVia->TwodRegs = via_2d_regs_m1;
break;
default:
@@ -527,6 +529,7 @@
switch (pVia->Chipset) {
case VIA_VX800:
+ case VIA_VX855:
while ((VIAGETREG(VIA_REG_STATUS) &
(VIA_CMD_RGTR_BUSY_H5 | VIA_2D_ENG_BUSY_H5 | VIA_3D_ENG_BUSY_H5))
&& (loop++ < MAXLOOP)) ;
@@ -587,7 +590,7 @@
unsigned val = (dstPitch >> 3) << 16 | (srcPitch >> 3);
RING_VARS;
- if (pVia->Chipset != VIA_VX800) {
+ if (pVia->Chipset != VIA_VX800 && pVia->Chipset != VIA_VX855) {
val |= VIA_PITCH_ENABLE;
}
OUT_RING_H1(VIA_REG(pVia, PITCH), val);
@@ -1289,17 +1292,23 @@
* test with x11perf -shmput500!
*/
- if (pVia->Chipset != VIA_K8M800 &&
- pVia->Chipset != VIA_K8M890 &&
- pVia->Chipset != VIA_P4M900 &&
- pVia->Chipset != VIA_VX800)
- xaaptr->ImageWriteFlags |= NO_GXCOPY;
+ switch (pVia->Chipset) {
+ case VIA_K8M800:
+ case VIA_K8M890:
+ case VIA_P4M900:
+ case VIA_VX800:
+ case VIA_VX855:
+ break;
+ default:
+ xaaptr->ImageWriteFlags |= NO_GXCOPY;
+ break;
+ }
xaaptr->SetupForImageWrite = viaSetupForImageWrite;
xaaptr->SubsequentImageWriteRect = viaSubsequentImageWriteRect;
xaaptr->ImageWriteBase = pVia->BltBase;
- if (pVia->Chipset == VIA_VX800)
+ if (pVia->Chipset == VIA_VX800 || pVia->Chipset == VIA_VX855)
xaaptr->ImageWriteRange = VIA_MMIO_BLTSIZE;
else
xaaptr->ImageWriteRange = (64 * 1024);
Index: src/via_cursor.c
===================================================================
--- src/via_cursor.c (revision 751)
+++ src/via_cursor.c (working copy)
@@ -97,6 +97,7 @@
case VIA_P4M890:
case VIA_P4M900:
case VIA_VX800:
+ case VIA_VX855:
if (pVia->pBIOSInfo->FirstCRTC->IsActive) {
pVia->CursorRegControl = VIA_REG_HI_CONTROL0;
pVia->CursorRegBase = VIA_REG_HI_BASE0;
@@ -164,6 +165,7 @@
case VIA_P4M890:
case VIA_P4M900:
case VIA_VX800:
+ case VIA_VX855:
if (pVia->pBIOSInfo->FirstCRTC->IsActive) {
VIASETREG(VIA_REG_PRIM_HI_INVTCOLOR, 0x00FFFFFF);
VIASETREG(VIA_REG_V327_HI_INVTCOLOR, 0x00FFFFFF);
@@ -222,6 +224,7 @@
case VIA_P4M890:
case VIA_P4M900:
case VIA_VX800:
+ case VIA_VX855:
if (pVia->pBIOSInfo->FirstCRTC->IsActive) {
pVia->CursorPrimHiInvtColor = VIAGETREG(VIA_REG_PRIM_HI_INVTCOLOR);
pVia->CursorV327HiInvtColor = VIAGETREG(VIA_REG_V327_HI_INVTCOLOR);
@@ -261,6 +264,7 @@
case VIA_P4M890:
case VIA_P4M900:
case VIA_VX800:
+ case VIA_VX855:
if (pVia->pBIOSInfo->FirstCRTC->IsActive) {
VIASETREG(VIA_REG_PRIM_HI_INVTCOLOR, pVia->CursorPrimHiInvtColor);
VIASETREG(VIA_REG_V327_HI_INVTCOLOR, pVia->CursorV327HiInvtColor);
Index: src/via_xvmc.c
===================================================================
--- src/via_xvmc.c (revision 751)
+++ src/via_xvmc.c (working copy)
@@ -322,6 +322,7 @@
if ((pVia->Chipset == VIA_KM400) ||
(pVia->Chipset == VIA_CX700) ||
(pVia->Chipset == VIA_VX800) ||
+ (pVia->Chipset == VIA_VX855) ||
(pVia->Chipset == VIA_K8M890) ||
(pVia->Chipset == VIA_P4M900)) {
xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
Index: src/via.h
===================================================================
--- src/via.h (revision 751)
+++ src/via.h (working copy)
@@ -327,6 +327,12 @@
#define VIDEO_FIFO_PRETHRESHOLD_VT3336 250
#define VIDEO_EXPIRE_NUM_VT3336 31
+/* Those values are only valid for IGA1 */
+#define VIDEO_FIFO_DEPTH_VT3409 400
+#define VIDEO_FIFO_THRESHOLD_VT3409 320
+#define VIDEO_FIFO_PRETHRESHOLD_VT3409 230
+#define VIDEO_EXPIRE_NUM_VT3409 160
+
/* ALPHA_V3_FIFO_CONTROL 0x278
* IA2 has 32 level FIFO for packet mode video format
* 32 level FIFO for planar mode video YV12. with extension reg 230 bit 21 enable
Index: src/via_id.c
===================================================================
--- src/via_id.c (revision 751)
+++ src/via_id.c (working copy)
@@ -222,6 +222,9 @@
{"Samsung NC20", VIA_VX800, 0x144d, 0xc04e, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
{"Quanta DreamBook Light IL1", VIA_VX800, 0x152d, 0x0771, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ /*** VX855 ***/
+ {"VIA VT8562C", VIA_VX855, 0x1106, 0x5122, VIA_DEVICE_CRT},
+
/* keep this */
{NULL, VIA_UNKNOWN, 0x0000, 0x0000, VIA_DEVICE_NONE}
};
openchrome-0.2.903-latest_snapshot.patch:
Index: openchrome.xinf
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-openchrome/devel/openchrome.xinf,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -p -r1.2 -r1.3
--- openchrome.xinf 8 Nov 2008 00:23:46 -0000 1.2
+++ openchrome.xinf 18 Jun 2009 22:18:59 -0000 1.3
@@ -31,3 +31,6 @@ alias pcivideo:v00001106d00003371sv*sd*b
# 1106:1122 - VX800 (PCI_CHIP_VT3353)
alias pcivideo:v00001106d00001122sv*sd*bc*sc*i* openchrome
+
+# 1106:5122 - VX855 (PCI_CHIP_VT3409)
+alias pcivideo:v00001106d00005122sv*sd*bc*sc*i* openchrome
Index: xorg-x11-drv-openchrome.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-openchrome/devel/xorg-x11-drv-openchrome.spec,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -p -r1.42 -r1.43
--- xorg-x11-drv-openchrome.spec 21 Mar 2009 21:43:31 -0000 1.42
+++ xorg-x11-drv-openchrome.spec 18 Jun 2009 22:18:59 -0000 1.43
@@ -10,7 +10,7 @@
Summary: Xorg X11 openchrome video driver
Name: xorg-x11-drv-openchrome
Version: 0.2.903
-Release: 10%{?dist}
+Release: 11%{?dist}
URL: http://www.openchrome.org
License: MIT
Group: User Interface/X Hardware Support
@@ -20,14 +20,15 @@ Source0: http://www.openchrome.org/relea
Source1: openchrome.xinf
# Patches from upstream trunk :
-#Patch1: openchrome-0.2.903-sync_pciids.patch
-#Patch2: openchrome-0.2.903-fix_bltsize.patch
-#Patch98: openchrome-0.2.903-PreInitCRTC.patch
+# svn diff http://svn.openchrome.org/svn/tags/release_0_2_903 http://svn.openchrome.org/svn/trunk
Patch99: openchrome-0.2.903-latest_snapshot.patch
# Fedora specific patches :
-#Patch100: openchrome-0.2.903-re_enable_AGPDMA.patch
+#Patch100: openchrome-0.2.903-disable_hwcursor.patch
# Experimental patches (branch backport, etc...):
-#Patch200: openchrome-0.2.903-panel.patch
+Patch200: openchrome-0.2.903-vx855_support.patch
+Patch201: openchrome-0.2.903-pll_rework.patch
+Patch202: openchrome-0.2.903-fix_cursor_on_secondary.patch
+Patch203: openchrome-0.2.903-disable_TMDS_by_default.patch
ExclusiveArch: %{ix86} x86_64
@@ -47,9 +48,11 @@ Requires: xorg-x11-server-Xorg
Obsoletes: xorg-x11-drv-via <= 0.2.2-4
Provides: xorg-x11-drv-via = 0.2.2-5
+
%description
X.Org X11 openchrome video driver.
+
%if %{with_xvmc}
%package devel
Summary: Xorg X11 openchrome video driver XvMC development package
@@ -62,14 +65,14 @@ Provides: xorg-x11-drv-via-devel = 0.2.2
X.Org X11 openchrome video driver XvMC development package.
%endif
+
%prep
%setup -q -n %{tarball}-%{version}
-#%patch1 -p0 -b .pciids
-#%patch2 -p0 -b .bltsize
%patch99 -p0 -b .latest
-#%patch98 -p0 -b .PreInitCRTC
-#%patch100 -p0 -b .agpdma
-#%patch200 -p0 -b .panel
+%patch200 -p0
+%patch201 -p0
+%patch202 -p0
+%patch203 -p0
%build
@@ -127,6 +130,15 @@ fi
%changelog
+* Tue May 26 2009 Xavier Bachelot <xavier at bachelot.org> - 0.2.903-11
+- Update to latest snapshot (svn 751) :
+ - Add support for VX800 integrated TMDS encoder.
+ - Make sure Chrome9 chipsets use software rasterizer for 3D.
+ - Various small fixes.
+- Add patch for VX855 support.
+- Add patch to fix cursor on secondary display.
+- Add patch to fix disable TMDS by default.
+
* Sat Mar 21 2009 Xavier Bachelot <xavier at bachelot.org> - 0.2.903-10
- Update to latest snapshot (svn 740) :
- Fix panel resolution detection fallback (RHBZ#491417).
- Previous message (by thread): rpms/libccss/devel import.log, NONE, 1.1 libccss.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2
- Next message (by thread): rpms/healpy/devel healpy-0.9.6-fedoralib.patch, NONE, 1.1 healpy.spec, NONE, 1.1 import.log, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list