summaryrefslogtreecommitdiffstats
path: root/sys/dev/bktr
diff options
context:
space:
mode:
authorroger <roger@FreeBSD.org>1999-11-13 14:54:00 +0000
committerroger <roger@FreeBSD.org>1999-11-13 14:54:00 +0000
commitf34c3c16c93820c250856d4f2c833fc12a51e146 (patch)
tree4f1220cfab4557a5c3b0733e0a05cd055ddddd88 /sys/dev/bktr
parent6d6289a5a6f16783626158871ea7fdaae1f99401 (diff)
downloadFreeBSD-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/bktr')
-rwxr-xr-xsys/dev/bktr/CHANGELOG.TXT15
-rw-r--r--sys/dev/bktr/bktr_card.c20
-rw-r--r--sys/dev/bktr/bktr_core.c28
-rw-r--r--sys/dev/bktr/bktr_tuner.c4
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' */
OpenPOWER on IntegriCloud