summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuc Verhaegen <libv@skynet.be>2009-10-14 18:36:45 +0200
committerLuc Verhaegen <libv@skynet.be>2009-10-14 18:36:45 +0200
commit5e41e298534308939351f93ef288abe3807301fc (patch)
tree69806d997965ba629681b678a39a48a94452897c /src
parent3ed84e6e4aeac8ef496fe42f723a0dbc3b58e153 (diff)
Crtc: VT3371: Add initial modesetting support.
* Add FIFOSet functions. * Use VT3157 PLL routine; it's close enough. * Keep the rest of the CRTC testing as a TODO for now.
Diffstat (limited to 'src')
-rw-r--r--src/via_crtc.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/via_crtc.c b/src/via_crtc.c
index aae4572..b27e137 100644
--- a/src/via_crtc.c
+++ b/src/via_crtc.c
@@ -188,6 +188,8 @@ VT3118PLLGenerate(struct ViaCrtc *Crtc, int Clock)
/*
* VT3157 PLL is very close to VT3343, VT3343 is just slightly steeper,
* therefor the multiplier limit + 2.
+ * VT3371 is slightly less steep than vt3157, and would be better described
+ * as 6 * (div - 9), but close enough.
*/
static CARD32
VT3157PLLGenerate(struct ViaCrtc *Crtc, int Clock)
@@ -807,6 +809,21 @@ VT3343Crtc1FIFOSet(struct ViaCrtc *Crtc, DisplayModePtr Mode)
*
*/
static void
+VT3371Crtc1FIFOSet(struct ViaCrtc *Crtc, DisplayModePtr Mode)
+{
+ VIAFUNC(Crtc);
+
+ VIACrtc1FetchCountSet(Crtc, Mode);
+
+ /* Depth = 96 / 2 - 1; Threshold = 76 / 4;
+ HighThreshold = 76 / 4; Expire = 32 / 4 */
+ VT3108Crtc1FIFOHelper(Crtc, 47, 19, 19, 8);
+}
+
+/*
+ *
+ */
+static void
VT3122Crtc2FIFOHelper(struct ViaCrtc *Crtc, Bool ExtendedEnable, CARD8 Depth,
CARD8 Threshold)
{
@@ -1012,6 +1029,21 @@ VT3343Crtc2FIFOSet(struct ViaCrtc *Crtc, DisplayModePtr Mode)
}
/*
+ *
+ */
+static void
+VT3371Crtc2FIFOSet(struct ViaCrtc *Crtc, DisplayModePtr Mode)
+{
+ VIAFUNC(Crtc);
+
+ VIACrtc2FetchCountSet(Crtc, Mode);
+
+ /* Depth: 96 / 8 - 1; Threshold: 76 / 4;
+ HighThreshold: 76 / 4; Expire: 32 /4 */
+ VT3108Crtc2FIFOHelper(Crtc, 11, 19, 19, 8);
+}
+
+/*
* Check whether our CRTC1 supports this mode.
*/
static ModeStatus
@@ -1891,6 +1923,7 @@ ViaCrtcInit(ScrnInfoPtr pScrn)
case VT3344:
case VT3157:
case VT3343:
+ case VT3371:
break;
default:
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%s: Unsupported chipset\n", __func__);
@@ -1937,6 +1970,9 @@ ViaCrtcInit(ScrnInfoPtr pScrn)
case VT3343:
Crtc->FIFOSet = VT3343Crtc1FIFOSet;
break;
+ case VT3371:
+ Crtc->FIFOSet = VT3371Crtc1FIFOSet;
+ break;
default:
/* should never happen, fix up the check at the top of this function */
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%s: unsupported chipset\n", __func__);
@@ -1958,6 +1994,7 @@ ViaCrtcInit(ScrnInfoPtr pScrn)
break;
case VT3157:
case VT3343:
+ case VT3371:
Crtc->PLLSet = VT3157Crtc1PLLSet;
break;
default:
@@ -1980,6 +2017,7 @@ ViaCrtcInit(ScrnInfoPtr pScrn)
case VT3344:
case VT3157:
case VT3343:
+ case VT3371:
Crtc->GammaEnable = VT3108Crtc1GammaEnable;
break;
default:
@@ -2044,6 +2082,9 @@ ViaCrtcInit(ScrnInfoPtr pScrn)
case VT3343:
Crtc->FIFOSet = VT3343Crtc2FIFOSet;
break;
+ case VT3371:
+ Crtc->FIFOSet = VT3371Crtc2FIFOSet;
+ break;
default:
/* should never happen, fix up the check at the top of this function */
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%s: unsupported chipset\n", __func__);
@@ -2065,6 +2106,7 @@ ViaCrtcInit(ScrnInfoPtr pScrn)
break;
case VT3157:
case VT3343:
+ case VT3371:
Crtc->PLLSet = VT3157Crtc2PLLSet;
break;
default:
@@ -2086,6 +2128,7 @@ ViaCrtcInit(ScrnInfoPtr pScrn)
case VT3344:
case VT3157:
case VT3343:
+ case VT3371:
Crtc->ScaleSet = VT3108Crtc2ScaleSet;
break;
default: