diff options
author | Luc Verhaegen <libv@skynet.be> | 2009-10-14 18:36:45 +0200 |
---|---|---|
committer | Luc Verhaegen <libv@skynet.be> | 2009-10-14 18:36:45 +0200 |
commit | 5e41e298534308939351f93ef288abe3807301fc (patch) | |
tree | 69806d997965ba629681b678a39a48a94452897c /src | |
parent | 3ed84e6e4aeac8ef496fe42f723a0dbc3b58e153 (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.c | 43 |
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: |