diff options
author | Vladimir Dergachev <volodya@mindspring.com> | 2005-03-31 18:26:05 +0000 |
---|---|---|
committer | Vladimir Dergachev <volodya@mindspring.com> | 2005-03-31 18:26:05 +0000 |
commit | 2e7365ffb767099faf3f191dc65341dbb3ef6247 (patch) | |
tree | b6f9743a6c65d76f3fbca2ed06f1e61e2d9331d9 /src | |
parent | 9a3c1c8e4cba2885b707db0f855e11dc6e640b49 (diff) |
Modified:
programs/Xserver/hw/xfree86/drivers/ati/radeon_video.c
Patch from Antti Ajanki - provide VBI capture support for PAL and SECAM
(You need GATOS km module to actually get at the data, the change
merely configures the hardware to handle it correctly).
Diffstat (limited to 'src')
-rw-r--r-- | src/radeon_video.c | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/radeon_video.c b/src/radeon_video.c index cfc6119..c58f447 100644 --- a/src/radeon_video.c +++ b/src/radeon_video.c @@ -3052,7 +3052,7 @@ RADEONPutVideo( CARD32 id, display_base; int width, height; int mult; - int vbi_line_width; + int vbi_line_width, vbi_start, vbi_end; info->accel->Sync(pScrn); /* @@ -3196,14 +3196,24 @@ RADEONPutVideo( OUTREG(RADEON_CAP0_ONESHOT_BUF_OFFSET, offset1+display_base); if(pPriv->capture_vbi_data){ + if ((pPriv->encoding==2)||(pPriv->encoding==8)) { + /* PAL, SECAM */ + vbi_start = 5; + vbi_end = 21; + } else { + /* NTSC */ + vbi_start = 8; + vbi_end = 20; + } + + vbi_offset0 = ((info->videoLinear->offset+mult*new_size)*bpp+0xf) & (~0xf); vbi_offset1 = vbi_offset0 + dstPitch*20; OUTREG(RADEON_CAP0_VBI0_OFFSET, vbi_offset0+display_base); OUTREG(RADEON_CAP0_VBI1_OFFSET, vbi_offset1+display_base); OUTREG(RADEON_CAP0_VBI2_OFFSET, 0); OUTREG(RADEON_CAP0_VBI3_OFFSET, 0); - OUTREG(RADEON_CAP0_VBI_V_WINDOW, 8 | ((pPriv->v-1)<<16)); - OUTREG(RADEON_CAP0_VBI_V_WINDOW, 8 | ((20)<<16)); + OUTREG(RADEON_CAP0_VBI_V_WINDOW, vbi_start | (vbi_end<<16)); OUTREG(RADEON_CAP0_VBI_H_WINDOW, 0 | (vbi_line_width)<<16); } @@ -3334,9 +3344,17 @@ static void RADEON_RT_SetEncoding(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv) { int width, height; RADEONWaitForIdleMMIO(pScrn); + /* Disable VBI capture for anything but TV tuner */ -if(pPriv->encoding==5)pPriv->capture_vbi_data=1; - else pPriv->capture_vbi_data=0; +switch(pPriv->encoding){ + case 2: + case 5: + case 8: + pPriv->capture_vbi_data=1; + break; + default: + pPriv->capture_vbi_data=0; + } switch(pPriv->encoding){ case 1: |