diff options
author | roger <roger@FreeBSD.org> | 1999-11-13 14:54:00 +0000 |
---|---|---|
committer | roger <roger@FreeBSD.org> | 1999-11-13 14:54:00 +0000 |
commit | f34c3c16c93820c250856d4f2c833fc12a51e146 (patch) | |
tree | 4f1220cfab4557a5c3b0733e0a05cd055ddddd88 /sys/dev | |
parent | 6d6289a5a6f16783626158871ea7fdaae1f99401 (diff) | |
download | FreeBSD-src-f34c3c16c93820c250856d4f2c833fc12a51e146.zip FreeBSD-src-f34c3c16c93820c250856d4f2c833fc12a51e146.tar.gz |
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
Diffstat (limited to 'sys/dev')
-rwxr-xr-x | sys/dev/bktr/CHANGELOG.TXT | 15 | ||||
-rw-r--r-- | sys/dev/bktr/bktr_card.c | 20 | ||||
-rw-r--r-- | sys/dev/bktr/bktr_core.c | 28 | ||||
-rw-r--r-- | sys/dev/bktr/bktr_tuner.c | 4 |
4 files changed, 37 insertions, 30 deletions
diff --git a/sys/dev/bktr/CHANGELOG.TXT b/sys/dev/bktr/CHANGELOG.TXT index 9e64f7a..d220115 100755 --- a/sys/dev/bktr/CHANGELOG.TXT +++ b/sys/dev/bktr/CHANGELOG.TXT @@ -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> + diff --git a/sys/dev/bktr/bktr_card.c b/sys/dev/bktr/bktr_card.c index f9d6967..63659459 100644 --- a/sys/dev/bktr/bktr_card.c +++ b/sys/dev/bktr/bktr_card.c @@ -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: diff --git a/sys/dev/bktr/bktr_core.c b/sys/dev/bktr/bktr_core.c index e55e6f2..a6158c5 100644 --- a/sys/dev/bktr/bktr_core.c +++ b/sys/dev/bktr/bktr_core.c @@ -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; } diff --git a/sys/dev/bktr/bktr_tuner.c b/sys/dev/bktr/bktr_tuner.c index 04db92f..6f67fbb 100644 --- a/sys/dev/bktr/bktr_tuner.c +++ b/sys/dev/bktr/bktr_tuner.c @@ -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' */ |