Update to driver 2.05

Make tuner on French SECAM Hauppauge cards work
Submitted by:	Cyrille Lefevre <clefevre@citeweb.net>

Fix clipping bugs ready for Xv support in XFree86 4.0
Submitted by:	Thomas Mueller <tmueller@thmu.de>

Fix the 'feature' where /dev/vbi needed to be opened before /dev/bktr
when using Teletext with Alevt and FXTV.

Requested by:	Randall Hopper
This commit is contained in:
Roger Hardiman 1999-11-13 14:54:00 +00:00
parent 020024f3d2
commit 753d64dfbb
4 changed files with 37 additions and 30 deletions

View file

@ -254,7 +254,7 @@
and MSP34xx Audio chip. Fixed i2c read error.
Hauppauge supplied details of new Tuner Types.
Danny Braniss <danny@cs.huji.ac.il> submitted Bt878
AverMedia detection with PCI subsystem vendor id.
AVerMedia detection with PCI subsystem vendor id.
1.57 26 Jan 1999 Roger Hardiman <roger@cs.strath.ac.uk>
Support for MSP3410D / MSP3415D Stereo/Mono audio
@ -418,10 +418,19 @@
Found FM radio bug mute introduced in release 2.00
2.04 20 Oct 1999 Roger Hardiman <roger@freebsd.org>
Updated AverMedia audio sources to support FM and Line In
sources properly. (Based on info supplied by AverMedia)
Updated AVerMedia audio sources to support FM and Line In
sources properly. (Based on info supplied by AVerMedia)
Make PLL mode the default for Bt878 chips. This means PAL
Bt878 users no longer need the BKTR_USE_PLL kernel option.
Detect and auto-configure Dolby Surround Sound DPL3518A chip
on Hauppauge WinTV Theater. From Frank Nobis <fn@radio-do.de>
2.05 8 Nov 1999 Update tuner control codes for Philips SECAM. Submitted by
Cyrille Lefevre <clefevre@citeweb.net>
Updated clipping code, ready for Xv support in XFree86 4.0,
submitted by Thomas Mueller <tmueller@thmu.de>
Thomas also has information on a LynxOS port of this driver.
Phase out the rgb_prog RISC program and use rgb_vbi_prog as
the default. Now you no longer have to open /dev/vbi
before /dev/bktr. - Roger Hardiman <roger@freebsd.org>

View file

@ -800,12 +800,12 @@ checkTuner:
1 EXTERNAL
2 OTHER
3 Philips FI1216 BG
4 Philips FI1216MF BGLL'
4 Philips FI1216MF BGLL' PHILIPS_SECAM
5 Philips FI1236 MN PHILIPS_NTSC
6 Philips FI1246 I PHILIPS_PALI
7 Philips FI1256 DK
8 Philips FI1216 MK2 BG PHILIPS_PALI
9 Philips FI1216MF MK2 BGLL'
9 Philips FI1216MF MK2 BGLL' PHILIPS_SECAM
a Philips FI1236 MK2 MN PHILIPS_NTSC
b Philips FI1246 MK2 I PHILIPS_PALI
c Philips FI1256 MK2 DK
@ -813,12 +813,12 @@ checkTuner:
e Temic 4002FH5 BG TEMIC_PAL
f Temic 4062FY5 I TEMIC_PALI
10 Philips FR1216 MK2 BG
11 Philips FR1216MF MK2 BGLL'
11 Philips FR1216MF MK2 BGLL' PHILIPS_FR1236_SECAM
12 Philips FR1236 MK2 MN PHILIPS_FR1236_NTSC
13 Philips FR1246 MK2 I
14 Philips FR1256 MK2 DK
15 Philips FM1216 BG PHILIPS_FR1216_PAL
16 Philips FM1216MF BGLL'
16 Philips FM1216MF BGLL' PHILIPS_FR1236_SECAM
17 Philips FM1236 MN PHILIPS_FR1236_NTSC
18 Philips FM1246 I
19 Philips FM1256 DK
@ -857,10 +857,14 @@ checkTuner:
tuner_code = eeprom[9];
switch (tuner_code) {
case 0x5:
case 0x0a:
case 0x1a:
select_tuner( bktr, PHILIPS_NTSC );
case 0x4:
case 0x9:
select_tuner( bktr, PHILIPS_SECAM );
goto checkDBX;
case 0x11:
case 0x16:
select_tuner( bktr, PHILIPS_FR1236_SECAM );
goto checkDBX;
case 0x12:

View file

@ -702,11 +702,11 @@ common_bktr_intr( void *arg )
/*
* Process the VBI data if it is being captured. We do this once
* Process the VBI data if /dev/vbi is open. We do this after
* both Odd and Even VBI data is captured. Therefore we do this
* in the Even field interrupt handler.
*/
if ((bktr->vbiflags & VBI_CAPTURE)&&(field==EVEN_F)) {
if ((bktr->vbiflags & VBI_OPEN)&&(field==EVEN_F)) {
/* Put VBI data into circular buffer */
vbidecode(bktr);
@ -2527,7 +2527,8 @@ static bool_t split(bktr_reg_t * bktr, volatile u_long **dma_prog, int width ,
flag = OP_SOL | OP_EOL;
} else if (bktr->current_col == 0 ) {
flag = OP_SOL;
} else if (bktr->current_col == cols) {
} else if (bktr->current_col == cols
|| bktr->current_col + width >= cols) {
flag = OP_EOL;
} else flag = 0;
@ -2553,7 +2554,8 @@ static bool_t split(bktr_reg_t * bktr, volatile u_long **dma_prog, int width ,
} else if (bktr->current_col == 0 ) {
flag = OP_SOL;
flag2 = 0;
} else if (bktr->current_col >= cols) {
} else if (bktr->current_col >= cols
|| bktr->current_col + width >= cols) {
flag = 0;
flag2 = OP_EOL;
} else {
@ -2676,7 +2678,7 @@ rgb_vbi_prog( bktr_ptr_t bktr, char i_flag, int cols, int rows, int interlace )
*dma_prog++ = OP_SYNC | BKTR_FM1;
*dma_prog++ = 0; /* NULL WORD */
width = cols;
for (i = 0; i < (rows/interlace); i++) {
for (i = 0; i < rows; i += interlace) {
target = target_buffer;
if ( notclipped(bktr, i, width)) {
split(bktr, (volatile u_long **) &dma_prog,
@ -2733,7 +2735,7 @@ rgb_vbi_prog( bktr_ptr_t bktr, char i_flag, int cols, int rows, int interlace )
*dma_prog++ = OP_SYNC | BKTR_FM1;
*dma_prog++ = 0; /* NULL WORD */
width = cols;
for (i = 0; i < (rows/interlace); i++) {
for (i = 1; i < rows; i += interlace) {
target = target_buffer;
if ( notclipped(bktr, i, width)) {
split(bktr, (volatile u_long **) &dma_prog,
@ -2834,7 +2836,7 @@ rgb_prog( bktr_ptr_t bktr, char i_flag, int cols, int rows, int interlace )
/* sync, mode indicator packed data */
*dma_prog++ = 0; /* NULL WORD */
width = cols;
for (i = 0; i < (rows/interlace); i++) {
for (i = 0; i < rows; i += interlace) {
target = target_buffer;
if ( notclipped(bktr, i, width)) {
split(bktr, (volatile u_long **) &dma_prog,
@ -2900,7 +2902,7 @@ rgb_prog( bktr_ptr_t bktr, char i_flag, int cols, int rows, int interlace )
*dma_prog++ = OP_SYNC | BKTR_RESYNC | BKTR_FM1;
*dma_prog++ = 0; /* NULL WORD */
width = cols;
for (i = 0; i < (rows/interlace); i++) {
for (i = 1; i < rows; i += interlace) {
target = target_buffer;
if ( notclipped(bktr, i, width)) {
split(bktr, (volatile u_long **) &dma_prog,
@ -3448,18 +3450,10 @@ build_dma_prog( bktr_ptr_t bktr, char i_flag )
rows = bktr->rows;
cols = bktr->cols;
bktr->vbiflags &= ~VBI_CAPTURE; /* default - no vbi capture */
/* If /dev/vbi is already open, then use the rgb_vbi RISC program */
if ( (pf_int->public.type == METEOR_PIXTYPE_RGB)
&&(bktr->vbiflags & VBI_OPEN) ) {
if (i_flag==1) bktr->bktr_cap_ctl |= BT848_CAP_CTL_VBI_EVEN;
if (i_flag==2) bktr->bktr_cap_ctl |= BT848_CAP_CTL_VBI_ODD;
if (i_flag==3) bktr->bktr_cap_ctl |=
BT848_CAP_CTL_VBI_EVEN | BT848_CAP_CTL_VBI_ODD;
if (pf_int->public.type == METEOR_PIXTYPE_RGB) {
bktr->bktr_cap_ctl |=
BT848_CAP_CTL_VBI_EVEN | BT848_CAP_CTL_VBI_ODD;
bktr->vbiflags |= VBI_CAPTURE;
rgb_vbi_prog(bktr, i_flag, cols, rows, interlace);
return;
}

View file

@ -186,7 +186,7 @@ static const struct TUNER tuners[] = {
TSA552x_SCONTROL,
0x00 },
{ 0x00, 0x00 }, /* band-switch crosspoints */
{ 0xa0, 0x90, 0x30, 0x00 } }, /* the band-switch values */
{ 0xa7, 0x97, 0x37, 0x00 } }, /* the band-switch values */
/* TEMIC_PAL I */
{ "Temic PAL I", /* the 'name' */
@ -236,7 +236,7 @@ static const struct TUNER tuners[] = {
TSA552x_FCONTROL,
TSA552x_RADIO },
{ 0x00, 0x00 }, /* band-switch crosspoints */
{ 0xa0, 0x90, 0x30, 0xa4 } }, /* the band-switch values */
{ 0xa7, 0x97, 0x37, 0xa4 } }, /* the band-switch values */
/* ALPS TSCH5 NTSC */
{ "ALPS TSCH5 NTSC FM", /* the 'name' */