mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Update to driver 2.13.
This merges in changes from NetBSD which ensure bktr0 (actually bktr%d) is printed at the start of any output lines. Submitted by: Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>
This commit is contained in:
parent
1bce768912
commit
4dcedbebe2
9 changed files with 306 additions and 240 deletions
|
|
@ -481,6 +481,9 @@
|
|||
Thomas Klausner <wiz@netbsd.org>
|
||||
Fix typo in the new interrupt code.
|
||||
|
||||
2.12 20 May 2000 Merge in NetBSD changes from Thomas Klausner <wiz@netbsd.org>
|
||||
following the import of driver 2.12 into NetBSD
|
||||
|
||||
|
||||
2.13 26 Jun 2000 Merge in more changes from Thomas Klausner <wiz@netbsd.org>
|
||||
syncing this driver with the NetBSD source at 25th June.
|
||||
|
||||
|
|
|
|||
|
|
@ -50,35 +50,35 @@
|
|||
#include <sys/systm.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/vnode.h>
|
||||
#ifdef __NetBSD__
|
||||
#include <sys/proc.h>
|
||||
static int bootverbose = 1;
|
||||
#endif
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
#include <machine/clock.h> /* for DELAY */
|
||||
#include <pci/pcivar.h>
|
||||
#endif
|
||||
|
||||
#if (__FreeBSD_version >=300000)
|
||||
#include <machine/bus_memio.h> /* for bus space */
|
||||
#include <machine/bus.h>
|
||||
#include <sys/bus.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __NetBSD__
|
||||
#include <dev/ic/ioctl_meteor.h> /* NetBSD location of .h files */
|
||||
#include <dev/ic/ioctl_bt848.h>
|
||||
#include <sys/proc.h>
|
||||
#include <dev/ic/bt8xx.h> /* NetBSD location of .h files */
|
||||
#include <dev/pci/bktr/bktr_reg.h>
|
||||
#include <dev/pci/bktr/bktr_core.h>
|
||||
#include <dev/pci/bktr/bktr_tuner.h>
|
||||
#include <dev/pci/bktr/bktr_card.h>
|
||||
#include <dev/pci/bktr/bktr_audio.h>
|
||||
#else
|
||||
#include <machine/ioctl_meteor.h> /* Traditional location of .h files */
|
||||
#include <machine/ioctl_bt848.h> /* extensions to ioctl_meteor.h */
|
||||
#endif
|
||||
#include <dev/bktr/bktr_reg.h>
|
||||
#include <dev/bktr/bktr_core.h>
|
||||
#include <dev/bktr/bktr_tuner.h>
|
||||
#include <dev/bktr/bktr_card.h>
|
||||
#include <dev/bktr/bktr_audio.h>
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Prototypes for the GV_BCTV specific functions.
|
||||
|
|
@ -157,7 +157,8 @@ set_audio( bktr_ptr_t bktr, int cmd )
|
|||
bktr->audio_mute_state = FALSE; /* clear mute */
|
||||
break;
|
||||
default:
|
||||
printf("bktr: audio cmd error %02x\n", cmd);
|
||||
printf("%s: audio cmd error %02x\n", bktr_name(bktr),
|
||||
cmd);
|
||||
return( -1 );
|
||||
}
|
||||
|
||||
|
|
@ -200,7 +201,8 @@ set_audio( bktr_ptr_t bktr, int cmd )
|
|||
temp = INL(bktr, BKTR_GPIO_DATA) & ~bktr->card.gpio_mux_bits;
|
||||
#if defined( AUDIOMUX_DISCOVER )
|
||||
OUTL(bktr, BKTR_GPIO_DATA, temp | (cmd & 0xff));
|
||||
printf("cmd: %d audio mux %x temp %x \n", cmd,bktr->card.audiomuxs[ idx ], temp );
|
||||
printf("%s: cmd: %d audio mux %x temp %x \n", bktr_name(bktr),
|
||||
cmd, bktr->card.audiomuxs[ idx ], temp );
|
||||
#else
|
||||
OUTL(bktr, BKTR_GPIO_DATA, temp | bktr->card.audiomuxs[ idx ]);
|
||||
#endif /* AUDIOMUX_DISCOVER */
|
||||
|
|
@ -447,7 +449,6 @@ void msp_autodetect( bktr_ptr_t bktr ) {
|
|||
/* FAST sound scheme */
|
||||
if ( (strncmp("3430G", bktr->msp_version_string, 5) != 0)
|
||||
&& (bktr->slow_msp_audio == 0) ){
|
||||
if(bootverbose)printf("inside fast MSP autodetect code\n");
|
||||
msp_dpl_write(bktr, bktr->msp_addr, 0x12, 0x0000,0x7300);/* Set volume to 0db gain */
|
||||
msp_dpl_write(bktr, bktr->msp_addr, 0x10, 0x0020,0x0001);/* Enable Auto format detection */
|
||||
msp_dpl_write(bktr, bktr->msp_addr, 0x10, 0x0021,0x0001);/* Auto selection of NICAM/MONO mode */
|
||||
|
|
@ -458,7 +459,6 @@ void msp_autodetect( bktr_ptr_t bktr ) {
|
|||
/* SLOW sound scheme */
|
||||
if ( (strncmp("3430G", bktr->msp_version_string, 5) != 0)
|
||||
&& (bktr->slow_msp_audio == 1) ){
|
||||
if (bootverbose)printf("inside slow MSP autodetect code\n");
|
||||
msp_dpl_write(bktr, bktr->msp_addr, 0x12, 0x0000,0x7300);/* Set volume to 0db gain */
|
||||
msp_dpl_write(bktr, bktr->msp_addr, 0x10, 0x0020,0x0001);/* Enable Auto format detection */
|
||||
|
||||
|
|
@ -469,7 +469,8 @@ void msp_autodetect( bktr_ptr_t bktr ) {
|
|||
auto_detect = msp_dpl_read(bktr, bktr->msp_addr, 0x10, 0x007e);
|
||||
loops++;
|
||||
} while (auto_detect > 0xff && loops < 50);
|
||||
if (bootverbose)printf ("Result of autodetect after %dms: %d\n", loops*10, auto_detect);
|
||||
if (bootverbose)printf ("%s: Result of autodetect after %dms: %d\n",
|
||||
bktr_name(bktr), loops*10, auto_detect);
|
||||
|
||||
/* Now set the audio baseband processing */
|
||||
switch (auto_detect) {
|
||||
|
|
@ -481,13 +482,16 @@ void msp_autodetect( bktr_ptr_t bktr ) {
|
|||
/* Read the stereo detection value from DSP reg 0x0018 */
|
||||
DELAY(20000);
|
||||
stereo = msp_dpl_read(bktr, bktr->msp_addr, 0x12, 0x0018);
|
||||
if (bootverbose)printf ("Stereo reg 0x18 a: %d\n", stereo);
|
||||
if (bootverbose)printf ("%s: Stereo reg 0x18 a: %d\n",
|
||||
bktr_name(bktr), stereo);
|
||||
DELAY(20000);
|
||||
stereo = msp_dpl_read(bktr, bktr->msp_addr, 0x12, 0x0018);
|
||||
if (bootverbose)printf ("Stereo reg 0x18 b: %d\n", stereo);
|
||||
if (bootverbose)printf ("%s: Stereo reg 0x18 b: %d\n",
|
||||
bktr_name(bktr), stereo);
|
||||
DELAY(20000);
|
||||
stereo = msp_dpl_read(bktr, bktr->msp_addr, 0x12, 0x0018);
|
||||
if (bootverbose)printf ("Stereo reg 0x18 c: %d\n", stereo);
|
||||
if (bootverbose)printf ("%s: Stereo reg 0x18 c: %d\n",
|
||||
bktr_name(bktr), stereo);
|
||||
if (stereo > 0x0100 && stereo < 0x8000) { /* Seems to be stereo */
|
||||
msp_dpl_write(bktr, bktr->msp_addr, 0x12, 0x0008,0x0020);/* Loudspeaker set stereo*/
|
||||
/*
|
||||
|
|
@ -496,7 +500,8 @@ void msp_autodetect( bktr_ptr_t bktr ) {
|
|||
*/
|
||||
msp_dpl_write(bktr, bktr->msp_addr, 0x12, 0x0005,0x3f28);
|
||||
} else if (stereo > 0x8000) { /* bilingual mode */
|
||||
if (bootverbose) printf ("Bilingual mode detected\n");
|
||||
if (bootverbose) printf ("%s: Bilingual mode detected\n",
|
||||
bktr_name(bktr));
|
||||
msp_dpl_write(bktr, bktr->msp_addr, 0x12, 0x0008,0x0000);/* Loudspeaker */
|
||||
msp_dpl_write(bktr, bktr->msp_addr, 0x12, 0x0005,0x0000);/* all spatial effects off */
|
||||
} else { /* must be mono */
|
||||
|
|
@ -527,7 +532,8 @@ void msp_autodetect( bktr_ptr_t bktr ) {
|
|||
case 10: /* i-FM NICAM */
|
||||
break;
|
||||
default:
|
||||
if (bootverbose) printf ("Unkown autodetection result value: %d\n", auto_detect);
|
||||
if (bootverbose) printf ("%s: Unknown autodetection result value: %d\n",
|
||||
bktr_name(bktr), auto_detect);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,29 +56,29 @@
|
|||
#ifdef __FreeBSD__
|
||||
#include <machine/clock.h> /* for DELAY */
|
||||
#include <pci/pcivar.h>
|
||||
#endif
|
||||
|
||||
#if (__FreeBSD_version >=300000)
|
||||
#include <machine/bus_memio.h> /* for bus space */
|
||||
#include <machine/bus.h>
|
||||
#include <sys/bus.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __NetBSD__
|
||||
#include <dev/ic/ioctl_meteor.h> /* NetBSD location for .h files */
|
||||
#include <dev/ic/ioctl_bt848.h>
|
||||
#include <dev/ic/bt8xx.h> /* NetBSD location for .h files */
|
||||
#include <dev/pci/bktr/bktr_reg.h>
|
||||
#include <dev/pci/bktr/bktr_core.h>
|
||||
#include <dev/pci/bktr/bktr_tuner.h>
|
||||
#include <dev/pci/bktr/bktr_card.h>
|
||||
#include <dev/pci/bktr/bktr_audio.h>
|
||||
#else
|
||||
#include <machine/ioctl_meteor.h> /* Traditional location for .h files */
|
||||
#include <machine/ioctl_bt848.h> /* extensions to ioctl_meteor.h */
|
||||
#endif
|
||||
#include <dev/bktr/bktr_reg.h>
|
||||
#include <dev/bktr/bktr_core.h>
|
||||
#include <dev/bktr/bktr_tuner.h>
|
||||
#include <dev/bktr/bktr_card.h>
|
||||
#include <dev/bktr/bktr_audio.h>
|
||||
|
||||
#ifdef __NetBSD__
|
||||
static int bootverbose = 1;
|
||||
#endif
|
||||
|
||||
/* Various defines */
|
||||
|
|
@ -110,7 +110,7 @@ static int bootverbose = 1;
|
|||
#define PFC8582_WADDR 0xa0
|
||||
#define PFC8582_RADDR 0xa1
|
||||
|
||||
#if BROOKTREE_SYSTEM_DEFAULT == BROOKTREE_PAL
|
||||
#if BKTR_SYSTEM_DEFAULT == BROOKTREE_PAL
|
||||
#define DEFAULT_TUNER PHILIPS_PALI
|
||||
#else
|
||||
#define DEFAULT_TUNER PHILIPS_NTSC
|
||||
|
|
@ -474,9 +474,9 @@ static int locate_eeprom_address( bktr_ptr_t bktr) {
|
|||
|
||||
/*
|
||||
* determine the card brand/model
|
||||
* OVERRIDE_CARD, OVERRIDE_TUNER, OVERRIDE_DBX and OVERRIDE_MSP
|
||||
* can be used to select a specific device, regardless of the
|
||||
* autodetection and i2c device checks.
|
||||
* BKTR_OVERRIDE_CARD, BKTR_OVERRIDE_TUNER, BKTR_OVERRIDE_DBX and
|
||||
* BKTR_OVERRIDE_MSP can be used to select a specific device,
|
||||
* regardless of the autodetection and i2c device checks.
|
||||
*
|
||||
* The scheme used for probing cards faces these problems:
|
||||
* It is impossible to work out which type of tuner is actually fitted,
|
||||
|
|
@ -541,7 +541,8 @@ probeCard( bktr_ptr_t bktr, int verbose, int unit )
|
|||
/* Select all GPIO bits as inputs */
|
||||
OUTL(bktr, BKTR_GPIO_OUT_EN, 0);
|
||||
if (bootverbose)
|
||||
printf("bktr: GPIO is 0x%08x\n", INL(bktr, BKTR_GPIO_DATA));
|
||||
printf("%s: GPIO is 0x%08x\n", bktr_name(bktr),
|
||||
INL(bktr, BKTR_GPIO_DATA));
|
||||
|
||||
#ifdef HAUPPAUGE_MSP_RESET
|
||||
/* Reset the MSP34xx audio chip. This resolves bootup card
|
||||
|
|
@ -562,8 +563,8 @@ probeCard( bktr_ptr_t bktr, int verbose, int unit )
|
|||
|
||||
|
||||
/* Check for a user specified override on the card selection */
|
||||
#if defined( OVERRIDE_CARD )
|
||||
bktr->card = cards[ (card = OVERRIDE_CARD) ];
|
||||
#if defined( BKTR_OVERRIDE_CARD )
|
||||
bktr->card = cards[ (card = BKTR_OVERRIDE_CARD) ];
|
||||
goto checkEEPROM;
|
||||
#endif
|
||||
if (bktr->bt848_card != -1 ) {
|
||||
|
|
@ -605,7 +606,7 @@ probeCard( bktr_ptr_t bktr, int verbose, int unit )
|
|||
subsystem_vendor_id = (byte_254 << 8) | byte_255;
|
||||
|
||||
if ( bootverbose )
|
||||
printf("subsystem 0x%04x 0x%04x\n",
|
||||
printf("%s: subsystem 0x%04x 0x%04x\n", bktr_name(bktr),
|
||||
subsystem_vendor_id, subsystem_id);
|
||||
|
||||
if (subsystem_vendor_id == VENDOR_AVER_MEDIA) {
|
||||
|
|
@ -652,11 +653,13 @@ probeCard( bktr_ptr_t bktr, int verbose, int unit )
|
|||
|
||||
/* Vendor is unknown. We will use the standard probe code */
|
||||
/* which may not give best results */
|
||||
printf("Warning - card vendor 0x%04x (model 0x%04x) unknown.\n",subsystem_vendor_id,subsystem_id);
|
||||
printf("%s: Warning - card vendor 0x%04x (model 0x%04x) unknown.\n",
|
||||
bktr_name(bktr), subsystem_vendor_id, subsystem_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Card has no configuration EEPROM. Cannot determine card make.\n");
|
||||
printf("%s: Card has no configuration EEPROM. Cannot determine card make.\n",
|
||||
bktr_name(bktr));
|
||||
}
|
||||
} /* end of bt878/bt879 card detection code */
|
||||
|
||||
|
|
@ -705,8 +708,10 @@ probeCard( bktr_ptr_t bktr, int verbose, int unit )
|
|||
bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
|
||||
goto checkTuner;
|
||||
}
|
||||
printf("Warning: Unknown card type. EEPROM data not recognised\n");
|
||||
printf("%x %x %x %x\n",eeprom[0],eeprom[1],eeprom[2],eeprom[3]);
|
||||
printf("%s: Warning: Unknown card type. EEPROM data not recognised\n",
|
||||
bktr_name(bktr));
|
||||
printf("%s: %x %x %x %x\n", bktr_name(bktr),
|
||||
eeprom[0],eeprom[1],eeprom[2],eeprom[3]);
|
||||
}
|
||||
|
||||
/* look for an STB card */
|
||||
|
|
@ -722,7 +727,7 @@ probeCard( bktr_ptr_t bktr, int verbose, int unit )
|
|||
signCard( bktr, 1, 128, (u_char *) &probe_signature );
|
||||
|
||||
if (bootverbose) {
|
||||
printf("card signature \n");
|
||||
printf("%s: card signature: ", bktr_name(bktr));
|
||||
for (j = 0; j < Bt848_MAX_SIGN; j++) {
|
||||
printf(" %02x ", probe_signature[j]);
|
||||
}
|
||||
|
|
@ -783,8 +788,8 @@ checkTuner:
|
|||
goto checkDBX;
|
||||
}
|
||||
|
||||
#if defined( OVERRIDE_TUNER )
|
||||
select_tuner( bktr, OVERRIDE_TUNER );
|
||||
#if defined( BKTR_OVERRIDE_TUNER )
|
||||
select_tuner( bktr, BKTR_OVERRIDE_TUNER );
|
||||
goto checkDBX;
|
||||
#endif
|
||||
if (bktr->bt848_tuner != -1 ) {
|
||||
|
|
@ -870,13 +875,13 @@ checkTuner:
|
|||
model = (eeprom[12] << 8 | eeprom[11]);
|
||||
revision = (eeprom[15] << 16 | eeprom[14] << 8 | eeprom[13]);
|
||||
if (verbose)
|
||||
printf("bktr%d: Hauppauge Model %d %c%c%c%c\n",
|
||||
unit,
|
||||
model,
|
||||
((revision >> 18) & 0x3f) + 32,
|
||||
((revision >> 12) & 0x3f) + 32,
|
||||
((revision >> 6) & 0x3f) + 32,
|
||||
((revision >> 0) & 0x3f) + 32 );
|
||||
printf("%s: Hauppauge Model %d %c%c%c%c\n",
|
||||
bktr_name(bktr),
|
||||
model,
|
||||
((revision >> 18) & 0x3f) + 32,
|
||||
((revision >> 12) & 0x3f) + 32,
|
||||
((revision >> 6) & 0x3f) + 32,
|
||||
((revision >> 0) & 0x3f) + 32 );
|
||||
|
||||
/* Determine the tuner type from the eeprom */
|
||||
tuner_code = eeprom[9];
|
||||
|
|
@ -927,7 +932,8 @@ checkTuner:
|
|||
goto checkDBX;
|
||||
|
||||
default :
|
||||
printf("Warning - Unknown Hauppauge Tuner 0x%x\n",tuner_code);
|
||||
printf("%s: Warning - Unknown Hauppauge Tuner 0x%x\n",
|
||||
bktr_name(bktr), tuner_code);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -994,13 +1000,13 @@ checkTuner:
|
|||
goto checkDBX;
|
||||
}
|
||||
|
||||
printf("Warning - Unknown AVerMedia Tuner Make %d Format %d\n",
|
||||
tuner_make, tuner_format);
|
||||
printf("%s: Warning - Unknown AVerMedia Tuner Make %d Format %d\n",
|
||||
bktr_name(bktr), tuner_make, tuner_format);
|
||||
}
|
||||
break;
|
||||
|
||||
case CARD_LEADTEK:
|
||||
#if BROOKTREE_SYSTEM_DEFAULT == BROOKTREE_PAL
|
||||
#if BKTR_SYSTEM_DEFAULT == BROOKTREE_PAL
|
||||
select_tuner( bktr, PHILIPS_FR1216_PAL );
|
||||
#else
|
||||
select_tuner( bktr, PHILIPS_FR1236_NTSC );
|
||||
|
|
@ -1035,8 +1041,8 @@ checkTuner:
|
|||
|
||||
|
||||
checkDBX:
|
||||
#if defined( OVERRIDE_DBX )
|
||||
bktr->card.dbx = OVERRIDE_DBX;
|
||||
#if defined( BKTR_OVERRIDE_DBX )
|
||||
bktr->card.dbx = BKTR_OVERRIDE_DBX;
|
||||
goto checkMSP;
|
||||
#endif
|
||||
/* Check for i2c devices */
|
||||
|
|
@ -1073,8 +1079,8 @@ checkMSP:
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined( OVERRIDE_MSP )
|
||||
bktr->card.msp3400c = OVERRIDE_MSP;
|
||||
#if defined( BKTR_OVERRIDE_MSP )
|
||||
bktr->card.msp3400c = BKTR_OVERRIDE_MSP;
|
||||
goto checkMSPEnd;
|
||||
#endif
|
||||
|
||||
|
|
@ -1092,9 +1098,9 @@ checkMSPEnd:
|
|||
if (bktr->card.msp3400c) {
|
||||
bktr->msp_addr = MSP3400C_WADDR;
|
||||
msp_read_id( bktr );
|
||||
printf("bktr%d: Detected a MSP%s at 0x%x\n", unit,
|
||||
bktr->msp_version_string,
|
||||
bktr->msp_addr);
|
||||
printf("%s: Detected a MSP%s at 0x%x\n", bktr_name(bktr),
|
||||
bktr->msp_version_string,
|
||||
bktr->msp_addr);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1106,9 +1112,9 @@ checkMSPEnd:
|
|||
if (bktr->card.dpl3518a) {
|
||||
bktr->dpl_addr = DPL3518A_WADDR;
|
||||
dpl_read_id( bktr );
|
||||
printf("bktr%d: Detected a DPL%s at 0x%x\n", unit,
|
||||
bktr->dpl_version_string,
|
||||
bktr->dpl_addr);
|
||||
printf("%s: Detected a DPL%s at 0x%x\n", bktr_name(bktr),
|
||||
bktr->dpl_version_string,
|
||||
bktr->dpl_addr);
|
||||
}
|
||||
|
||||
/* Start of Check Remote */
|
||||
|
|
@ -1170,7 +1176,7 @@ checkPLLEnd:
|
|||
bktr->card.tuner_pllAddr = tuner_i2c_address;
|
||||
|
||||
if ( verbose ) {
|
||||
printf( "%s", bktr->card.name );
|
||||
printf( "%s: %s", bktr_name(bktr), bktr->card.name );
|
||||
if ( bktr->card.tuner )
|
||||
printf( ", %s tuner", bktr->card.tuner->name );
|
||||
if ( bktr->card.dbx )
|
||||
|
|
|
|||
|
|
@ -50,8 +50,8 @@
|
|||
/*
|
||||
* If probeCard() fails to detect the correct card on boot you can
|
||||
* override it by setting adding the following option to your kernel config
|
||||
* options OVERRIDE_CARD <card type>
|
||||
* eg options OVERRIDE CARD=1
|
||||
* options BKTR_OVERRIDE_CARD <card type>
|
||||
* eg options BKTR_OVERRIDE CARD=1
|
||||
*
|
||||
* or using the sysclt hw.bt848.card
|
||||
* eg sysctl -w hw.bt848.card=1
|
||||
|
|
|
|||
|
|
@ -154,6 +154,12 @@
|
|||
#include "iicbus_if.h"
|
||||
#endif
|
||||
|
||||
const char *
|
||||
bktr_name(bktr_ptr_t bktr)
|
||||
{
|
||||
return bktr->bktr_xname;
|
||||
}
|
||||
|
||||
|
||||
#if (__FreeBSD__ == 2)
|
||||
typedef unsigned int uintptr_t;
|
||||
|
|
@ -174,19 +180,22 @@ typedef unsigned int uintptr_t;
|
|||
#if defined(__NetBSD__) || defined(__OpenBSD__)
|
||||
|
||||
#include <sys/inttypes.h> /* uintptr_t */
|
||||
#include <dev/ic/ioctl_meteor.h>
|
||||
#include <dev/ic/ioctl_bt848.h> /* extensions to ioctl_meteor.h */
|
||||
#include <dev/bktr/bktr_reg.h>
|
||||
#include <dev/bktr/bktr_tuner.h>
|
||||
#include <dev/bktr/bktr_card.h>
|
||||
#include <dev/bktr/bktr_audio.h>
|
||||
#include <dev/bktr/bktr_core.h>
|
||||
#include <dev/bktr/bktr_os.h>
|
||||
|
||||
static int bootverbose = 1;
|
||||
#include <dev/ic/bt8xx.h>
|
||||
#include <dev/pci/bktr/bktr_reg.h>
|
||||
#include <dev/pci/bktr/bktr_tuner.h>
|
||||
#include <dev/pci/bktr/bktr_card.h>
|
||||
#include <dev/pci/bktr/bktr_audio.h>
|
||||
#include <dev/pci/bktr/bktr_core.h>
|
||||
#include <dev/pci/bktr/bktr_os.h>
|
||||
|
||||
static int bt848_format = -1;
|
||||
|
||||
const char *
|
||||
bktr_name(bktr_ptr_t bktr)
|
||||
{
|
||||
return (bktr->bktr_dev.dv_xname);
|
||||
}
|
||||
|
||||
#endif /* __NetBSD__ || __OpenBSD__ */
|
||||
|
||||
|
||||
|
|
@ -443,12 +452,16 @@ common_bktr_attach( bktr_ptr_t bktr, int unit, u_long pci_id, u_int rev )
|
|||
/***************************************/
|
||||
#if defined(__NetBSD__) || defined(__OpenBSD__)
|
||||
/* allocate space for dma program */
|
||||
bktr->dma_prog = get_bktr_mem(bktr, &bktr->dm_prog, DMA_PROG_ALLOC);
|
||||
bktr->odd_dma_prog = get_bktr_mem(bktr, &bktr->dm_oprog, DMA_PROG_ALLOC)
|
||||
;
|
||||
/* allocte space for the VBI buffer */
|
||||
bktr->vbidata = get_bktr_mem(bktr, &bktr->dm_vbidata, VBI_DATA_SIZE);
|
||||
bktr->vbibuffer = get_bktr_mem(bktr, &bktr->dm_vbibuffer, VBI_BUFFER_SIZE);
|
||||
bktr->dma_prog = get_bktr_mem(bktr, &bktr->dm_prog,
|
||||
DMA_PROG_ALLOC);
|
||||
bktr->odd_dma_prog = get_bktr_mem(bktr, &bktr->dm_oprog,
|
||||
DMA_PROG_ALLOC);
|
||||
|
||||
/* allocate space for the VBI buffer */
|
||||
bktr->vbidata = get_bktr_mem(bktr, &bktr->dm_vbidata,
|
||||
VBI_DATA_SIZE);
|
||||
bktr->vbibuffer = get_bktr_mem(bktr, &bktr->dm_vbibuffer,
|
||||
VBI_BUFFER_SIZE);
|
||||
|
||||
/* allocate space for pixel buffer */
|
||||
if ( BROOKTREE_ALLOC )
|
||||
|
|
@ -474,8 +487,8 @@ common_bktr_attach( bktr_ptr_t bktr, int unit, u_long pci_id, u_int rev )
|
|||
#endif
|
||||
|
||||
if ( bootverbose ) {
|
||||
printf("bktr%d: buffer size %d, addr 0x%x\n",
|
||||
unit, BROOKTREE_ALLOC, vtophys(buf));
|
||||
printf("%s: buffer size %d, addr 0x%x\n",
|
||||
bktr_name(bktr), BROOKTREE_ALLOC, vtophys(buf));
|
||||
}
|
||||
|
||||
if ( buf != 0 ) {
|
||||
|
|
@ -633,7 +646,7 @@ common_bktr_intr( void *arg )
|
|||
status_sum |= (bktr_status & ~(BT848_INT_RSV0|BT848_INT_RSV1));
|
||||
status_sum |= ((dstatus & (BT848_DSTATUS_COF|BT848_DSTATUS_LOF)) << 6);
|
||||
#endif /* STATUS_SUM */
|
||||
/* printf( " STATUS %x %x %x \n",
|
||||
/* printf( "%s: STATUS %x %x %x \n", bktr_name(bktr),
|
||||
dstatus, bktr_status, INL(bktr, BKTR_RISC_COUNT) );
|
||||
*/
|
||||
|
||||
|
|
@ -693,7 +706,7 @@ common_bktr_intr( void *arg )
|
|||
return 0;
|
||||
|
||||
/**
|
||||
printf( "intr status %x %x %x\n",
|
||||
printf( "%s: intr status %x %x %x\n", bktr_name(bktr),
|
||||
bktr_status, dstatus, INL(bktr, BKTR_RISC_COUNT) );
|
||||
*/
|
||||
|
||||
|
|
@ -888,7 +901,7 @@ video_open( bktr_ptr_t bktr )
|
|||
|
||||
OUTB(bktr, BKTR_ADC, SYNC_LEVEL);
|
||||
|
||||
#if BROOKTREE_SYSTEM_DEFAULT == BROOKTREE_PAL
|
||||
#if BKTR_SYSTEM_DEFAULT == BROOKTREE_PAL
|
||||
video_format = 0;
|
||||
#else
|
||||
video_format = 1;
|
||||
|
|
@ -1122,7 +1135,8 @@ video_read(bktr_ptr_t bktr, int unit, dev_t dev, struct uio *uio)
|
|||
if (!status) /* successful capture */
|
||||
status = uiomove((caddr_t)bktr->bigbuf, count, uio);
|
||||
else
|
||||
printf ("bktr%d: read: tsleep error %d\n", unit, status);
|
||||
printf ("%s: read: tsleep error %d\n",
|
||||
bktr_name(bktr), status);
|
||||
|
||||
bktr->flags &= ~(METEOR_SINGLE | METEOR_WANT_MASK);
|
||||
|
||||
|
|
@ -1518,8 +1532,9 @@ video_ioctl( bktr_ptr_t bktr, int unit, ioctl_cmd_t cmd, caddr_t arg, struct pro
|
|||
if (error && (error != ERESTART)) {
|
||||
/* Here if we didn't get complete frame */
|
||||
#ifdef DIAGNOSTIC
|
||||
printf( "bktr%d: ioctl: tsleep error %d %x\n",
|
||||
unit, error, INL(bktr, BKTR_RISC_COUNT));
|
||||
printf( "%s: ioctl: tsleep error %d %x\n",
|
||||
bktr_name(bktr), error,
|
||||
INL(bktr, BKTR_RISC_COUNT));
|
||||
#endif
|
||||
|
||||
/* stop dma */
|
||||
|
|
@ -1584,8 +1599,8 @@ video_ioctl( bktr_ptr_t bktr, int unit, ioctl_cmd_t cmd, caddr_t arg, struct pro
|
|||
/* Either even or odd, if even & odd, then these a zero */
|
||||
if ((geo->oformat & METEOR_GEO_ODD_ONLY) &&
|
||||
(geo->oformat & METEOR_GEO_EVEN_ONLY)) {
|
||||
printf( "bktr%d: ioctl: Geometry odd or even only.\n",
|
||||
unit);
|
||||
printf( "%s: ioctl: Geometry odd or even only.\n",
|
||||
bktr_name(bktr));
|
||||
return( EINVAL );
|
||||
}
|
||||
|
||||
|
|
@ -1601,34 +1616,35 @@ video_ioctl( bktr_ptr_t bktr, int unit, ioctl_cmd_t cmd, caddr_t arg, struct pro
|
|||
|
||||
if (geo->columns <= 0) {
|
||||
printf(
|
||||
"bktr%d: ioctl: %d: columns must be greater than zero.\n",
|
||||
unit, geo->columns);
|
||||
"%s: ioctl: %d: columns must be greater than zero.\n",
|
||||
bktr_name(bktr), geo->columns);
|
||||
error = EINVAL;
|
||||
}
|
||||
else if ((geo->columns & 0x3fe) != geo->columns) {
|
||||
printf(
|
||||
"bktr%d: ioctl: %d: columns too large or not even.\n",
|
||||
unit, geo->columns);
|
||||
"%s: ioctl: %d: columns too large or not even.\n",
|
||||
bktr_name(bktr), geo->columns);
|
||||
error = EINVAL;
|
||||
}
|
||||
|
||||
if (geo->rows <= 0) {
|
||||
printf(
|
||||
"bktr%d: ioctl: %d: rows must be greater than zero.\n",
|
||||
unit, geo->rows);
|
||||
"%s: ioctl: %d: rows must be greater than zero.\n",
|
||||
bktr_name(bktr), geo->rows);
|
||||
error = EINVAL;
|
||||
}
|
||||
else if (((geo->rows & 0x7fe) != geo->rows) ||
|
||||
((geo->oformat & METEOR_GEO_FIELD_MASK) &&
|
||||
((geo->rows & 0x3fe) != geo->rows)) ) {
|
||||
printf(
|
||||
"bktr%d: ioctl: %d: rows too large or not even.\n",
|
||||
unit, geo->rows);
|
||||
"%s: ioctl: %d: rows too large or not even.\n",
|
||||
bktr_name(bktr), geo->rows);
|
||||
error = EINVAL;
|
||||
}
|
||||
|
||||
if (geo->frames > 32) {
|
||||
printf("bktr%d: ioctl: too many frames.\n", unit);
|
||||
printf("%s: ioctl: too many frames.\n",
|
||||
bktr_name(bktr));
|
||||
|
||||
error = EINVAL;
|
||||
}
|
||||
|
|
@ -1675,8 +1691,8 @@ video_ioctl( bktr_ptr_t bktr, int unit, ioctl_cmd_t cmd, caddr_t arg, struct pro
|
|||
bktr->alloc_pages = temp;
|
||||
if (bootverbose)
|
||||
printf(
|
||||
"bktr%d: ioctl: Allocating %d bytes\n",
|
||||
unit, temp*PAGE_SIZE);
|
||||
"%s: ioctl: Allocating %d bytes\n",
|
||||
bktr_name(bktr), temp*PAGE_SIZE);
|
||||
}
|
||||
else
|
||||
error = ENOMEM;
|
||||
|
|
@ -2142,14 +2158,15 @@ tuner_ioctl( bktr_ptr_t bktr, int unit, ioctl_cmd_t cmd, caddr_t arg, struct pro
|
|||
temp=(int)*(unsigned long *)arg;
|
||||
|
||||
#ifdef BKTR_RADIO_DEBUG
|
||||
printf("bktr%d: arg=%d temp=%d\n",unit,(int)*(unsigned long *)arg,temp);
|
||||
printf("%s: arg=%d temp=%d\n", bktr_name(bktr),
|
||||
(int)*(unsigned long *)arg, temp);
|
||||
#endif
|
||||
|
||||
#ifndef BKTR_RADIO_NOFREQCHECK
|
||||
/* According to the spec. sheet the band: 87.5MHz-108MHz */
|
||||
/* is supported. */
|
||||
if(temp<8750 || temp>10800) {
|
||||
printf("bktr%d: Radio frequency out of range\n",unit);
|
||||
printf("%s: Radio frequency out of range\n", bktr_name(bktr));
|
||||
return(EINVAL);
|
||||
}
|
||||
#endif
|
||||
|
|
@ -2158,7 +2175,7 @@ tuner_ioctl( bktr_ptr_t bktr, int unit, ioctl_cmd_t cmd, caddr_t arg, struct pro
|
|||
temp_mute( bktr, FALSE );
|
||||
#ifdef BKTR_RADIO_DEBUG
|
||||
if(temp)
|
||||
printf("bktr%d: tv_freq returned: %d\n",unit,temp);
|
||||
printf("%s: tv_freq returned: %d\n", bktr_name(bktr), temp);
|
||||
#endif
|
||||
if ( temp < 0 )
|
||||
return( EINVAL );
|
||||
|
|
@ -2376,16 +2393,20 @@ dump_bt848( bktr_ptr_t bktr )
|
|||
int i;
|
||||
|
||||
for (i = 0; i < 40; i+=4) {
|
||||
printf(" Reg:value : \t%x:%x \t%x:%x \t %x:%x \t %x:%x\n",
|
||||
printf("%s: Reg:value : \t%x:%x \t%x:%x \t %x:%x \t %x:%x\n",
|
||||
bktr_name(bktr),
|
||||
r[i], INL(bktr, r[i]),
|
||||
r[i+1], INL(bktr, r[i+1]),
|
||||
r[i+2], INL(bktr, r[i+2]),
|
||||
r[i+3], INL(bktr, r[i+3]]));
|
||||
}
|
||||
|
||||
printf(" INT STAT %x \n", INL(bktr, BKTR_INT_STAT));
|
||||
printf(" Reg INT_MASK %x \n", INL(bktr, BKTR_INT_MASK));
|
||||
printf(" Reg GPIO_DMA_CTL %x \n", INW(bktr, BKTR_GPIO_DMA_CTL));
|
||||
printf("%s: INT STAT %x \n", bktr_name(bktr),
|
||||
INL(bktr, BKTR_INT_STAT));
|
||||
printf("%s: Reg INT_MASK %x \n", bktr_name(bktr),
|
||||
INL(bktr, BKTR_INT_MASK));
|
||||
printf("%s: Reg GPIO_DMA_CTL %x \n", bktr_name(bktr),
|
||||
INW(bktr, BKTR_GPIO_DMA_CTL));
|
||||
|
||||
return( 0 );
|
||||
}
|
||||
|
|
@ -2665,7 +2686,7 @@ rgb_vbi_prog( bktr_ptr_t bktr, char i_flag, int cols, int rows, int interlace )
|
|||
*dma_prog++ = 0;
|
||||
for(i = 0; i < vbilines; i++) {
|
||||
*dma_prog++ = OP_WRITE | OP_SOL | OP_EOL | vbisamples;
|
||||
*dma_prog++ = (u_long) vtophys(bktr->vbidata +
|
||||
*dma_prog++ = (u_long) vtophys((caddr_t)bktr->vbidata +
|
||||
(i * VBI_LINE_SIZE));
|
||||
}
|
||||
|
||||
|
|
@ -2716,7 +2737,7 @@ rgb_vbi_prog( bktr_ptr_t bktr, char i_flag, int cols, int rows, int interlace )
|
|||
*dma_prog++ = 0;
|
||||
for(i = 0; i < vbilines; i++) {
|
||||
*dma_prog++ = OP_WRITE | OP_SOL | OP_EOL | vbisamples;
|
||||
*dma_prog++ = (u_long) vtophys(bktr->vbidata +
|
||||
*dma_prog++ = (u_long) vtophys((caddr_t)bktr->vbidata +
|
||||
((i+MAX_VBI_LINES) * VBI_LINE_SIZE));
|
||||
}
|
||||
|
||||
|
|
@ -3300,7 +3321,7 @@ build_dma_prog( bktr_ptr_t bktr, char i_flag )
|
|||
temp = ((quad_t ) fp->htotal* (quad_t) fp->scaled_hactive * 4096
|
||||
/ fp->scaled_htotal / bktr->cols) - 4096;
|
||||
|
||||
/* printf("HSCALE value is %d\n",temp); */
|
||||
/* printf("%s: HSCALE value is %d\n", bktr_name(bktr), temp); */
|
||||
OUTB(bktr, BKTR_E_HSCALE_LO, temp & 0xff);
|
||||
OUTB(bktr, BKTR_O_HSCALE_LO, temp & 0xff);
|
||||
OUTB(bktr, BKTR_E_HSCALE_HI, (temp >> 8) & 0xff);
|
||||
|
|
@ -3308,7 +3329,7 @@ build_dma_prog( bktr_ptr_t bktr, char i_flag )
|
|||
|
||||
/* horizontal active */
|
||||
temp = bktr->cols;
|
||||
/* printf("HACTIVE value is %d\n",temp); */
|
||||
/* printf("%s: HACTIVE value is %d\n", bktr_name(bktr), temp); */
|
||||
OUTB(bktr, BKTR_E_HACTIVE_LO, temp & 0xff);
|
||||
OUTB(bktr, BKTR_O_HACTIVE_LO, temp & 0xff);
|
||||
OUTB(bktr, BKTR_E_CROP, INB(bktr, BKTR_E_CROP) & ~0x3);
|
||||
|
|
@ -3325,7 +3346,7 @@ build_dma_prog( bktr_ptr_t bktr, char i_flag )
|
|||
|
||||
temp = temp & 0x3fe;
|
||||
|
||||
/* printf("HDELAY value is %d\n",temp); */
|
||||
/* printf("%s: HDELAY value is %d\n", bktr_name(bktr), temp); */
|
||||
OUTB(bktr, BKTR_E_DELAY_LO, temp & 0xff);
|
||||
OUTB(bktr, BKTR_O_DELAY_LO, temp & 0xff);
|
||||
OUTB(bktr, BKTR_E_CROP, INB(bktr, BKTR_E_CROP) & ~0xc);
|
||||
|
|
@ -3356,7 +3377,7 @@ build_dma_prog( bktr_ptr_t bktr, char i_flag )
|
|||
}
|
||||
|
||||
tmp_int &= 0x1fff;
|
||||
/* printf("VSCALE value is %d\n",tmp_int); */
|
||||
/* printf("%s: VSCALE value is %d\n", bktr_name(bktr), tmp_int); */
|
||||
OUTB(bktr, BKTR_E_VSCALE_LO, tmp_int & 0xff);
|
||||
OUTB(bktr, BKTR_O_VSCALE_LO, tmp_int & 0xff);
|
||||
OUTB(bktr, BKTR_E_VSCALE_HI, INB(bktr, BKTR_E_VSCALE_HI) & ~0x1f);
|
||||
|
|
@ -3370,7 +3391,7 @@ build_dma_prog( bktr_ptr_t bktr, char i_flag )
|
|||
temp = bktr->capture_area_y_size;
|
||||
else
|
||||
temp = fp->vactive;
|
||||
/* printf("VACTIVE is %d\n",temp); */
|
||||
/* printf("%s: VACTIVE is %d\n", bktr_name(bktr), temp); */
|
||||
OUTB(bktr, BKTR_E_CROP, INB(bktr, BKTR_E_CROP) & ~0x30);
|
||||
OUTB(bktr, BKTR_E_CROP, INB(bktr, BKTR_E_CROP) | ((temp >> 4) & 0x30));
|
||||
OUTB(bktr, BKTR_E_VACTIVE_LO, temp & 0xff);
|
||||
|
|
@ -3383,7 +3404,7 @@ build_dma_prog( bktr_ptr_t bktr, char i_flag )
|
|||
temp = fp->vdelay + (bktr->capture_area_y_offset);
|
||||
else
|
||||
temp = fp->vdelay;
|
||||
/* printf("VDELAY is %d\n",temp); */
|
||||
/* printf("%s: VDELAY is %d\n", bktr_name(bktr), temp); */
|
||||
OUTB(bktr, BKTR_E_CROP, INB(bktr, BKTR_E_CROP) & ~0xC0);
|
||||
OUTB(bktr, BKTR_E_CROP, INB(bktr, BKTR_E_CROP) | ((temp >> 2) & 0xC0));
|
||||
OUTB(bktr, BKTR_E_VDELAY_LO, temp & 0xff);
|
||||
|
|
@ -4118,7 +4139,7 @@ i2cProbe( bktr_ptr_t bktr, int addr )
|
|||
DELAY( BITD ); /* release clock */
|
||||
}
|
||||
else {
|
||||
OUTL(bktr, BKTR_I2C_DATA_CTL, 0 ;
|
||||
OUTL(bktr, BKTR_I2C_DATA_CTL, 0);
|
||||
DELAY( BITD ); /* assert LO data */
|
||||
OUTL(bktr, BKTR_I2C_DATA_CTL, 2);
|
||||
DELAY( BITD ); /* strobe clock */
|
||||
|
|
|
|||
|
|
@ -68,6 +68,9 @@ void msp_dpl_write( bktr_ptr_t bktr, int i2c_addr, unsigned char dev,
|
|||
#define VBI_SLEEP ((caddr_t)bktr + 1)
|
||||
|
||||
|
||||
/* device name for printf */
|
||||
const char *bktr_name(bktr_ptr_t bktr);
|
||||
|
||||
/* Prototypes for attatch and interrupt functions */
|
||||
void common_bktr_attach( bktr_ptr_t bktr, int unit,
|
||||
u_long pci_id, u_int rev );
|
||||
|
|
|
|||
|
|
@ -107,18 +107,23 @@
|
|||
#endif
|
||||
|
||||
#ifdef __NetBSD__
|
||||
#include <dev/ic/ioctl_meteor.h> /* NetBSD location for .h files */
|
||||
#include <dev/ic/ioctl_bt848.h>
|
||||
#include <dev/ic/bt8xx.h> /* NetBSD location for .h files */
|
||||
#include <dev/pci/bktr/bktr_reg.h>
|
||||
#include <dev/pci/bktr/bktr_tuner.h>
|
||||
#include <dev/pci/bktr/bktr_card.h>
|
||||
#include <dev/pci/bktr/bktr_audio.h>
|
||||
#include <dev/pci/bktr/bktr_core.h>
|
||||
#include <dev/pci/bktr/bktr_os.h>
|
||||
#else /* Traditional location for .h files */
|
||||
#include <machine/ioctl_meteor.h>
|
||||
#include <machine/ioctl_bt848.h> /* extensions to ioctl_meteor.h */
|
||||
#endif
|
||||
#include <dev/bktr/bktr_reg.h>
|
||||
#include <dev/bktr/bktr_tuner.h>
|
||||
#include <dev/bktr/bktr_card.h>
|
||||
#include <dev/bktr/bktr_audio.h>
|
||||
#include <dev/bktr/bktr_core.h>
|
||||
#include <dev/bktr/bktr_os.h>
|
||||
#endif
|
||||
|
||||
#if defined(__FreeBSD__)
|
||||
#if (NSMBUS > 0)
|
||||
|
|
@ -161,9 +166,6 @@ SYSCTL_INT(_hw_bt848, OID_AUTO, slow_msp_audio, CTLFLAG_RW, &bt848_slow_msp_audi
|
|||
#include <dev/pci/pcireg.h>
|
||||
#include <dev/pci/pcidevs.h>
|
||||
|
||||
static int bootverbose = 1;
|
||||
|
||||
|
||||
#define BKTR_DEBUG
|
||||
#ifdef BKTR_DEBUG
|
||||
int bktr_debug = 0;
|
||||
|
|
@ -283,6 +285,9 @@ bktr_attach( device_t dev )
|
|||
|
||||
unit = device_get_unit(dev);
|
||||
|
||||
/* build the device name for bktr_name() */
|
||||
snprintf(bktr->bktr_xname, sizeof(bktr->bktr_xname), "bktr%d",unit);
|
||||
|
||||
/*
|
||||
* Enable bus mastering and Memory Mapped device
|
||||
*/
|
||||
|
|
@ -845,6 +850,9 @@ bktr_attach( pcici_t tag, int unit )
|
|||
return;
|
||||
}
|
||||
|
||||
/* build the device name for bktr_name() */
|
||||
snprintf(bktr->bktr_xname, sizeof(bktr->bktr_xname), "bktr%d",unit);
|
||||
|
||||
/* Enable Memory Mapping */
|
||||
fun = pci_conf_read(tag, PCI_COMMAND_STATUS_REG);
|
||||
pci_conf_write(tag, PCI_COMMAND_STATUS_REG, fun | 2);
|
||||
|
|
@ -1221,7 +1229,6 @@ int bktr_poll( dev_t dev, int events, struct proc *p)
|
|||
/*****************************/
|
||||
#if defined(__NetBSD__) || defined(__OpenBSD__)
|
||||
|
||||
|
||||
#define IPL_VIDEO IPL_BIO /* XXX */
|
||||
|
||||
static int bktr_intr(void *arg) { return common_bktr_intr(arg); }
|
||||
|
|
@ -1238,12 +1245,12 @@ int bktr_close __P((dev_t, int, int, struct proc *));
|
|||
int bktr_read __P((dev_t, struct uio *, int));
|
||||
int bktr_write __P((dev_t, struct uio *, int));
|
||||
int bktr_ioctl __P((dev_t, ioctl_cmd_t, caddr_t, int, struct proc*));
|
||||
int bktr_mmap __P((dev_t, vm_offset_t, int));
|
||||
int bktr_mmap __P((dev_t, int, int));
|
||||
|
||||
vm_offset_t vm_page_alloc_contig(vm_offset_t, vm_offset_t,
|
||||
vm_offset_t, vm_offset_t);
|
||||
|
||||
#if defined(__BROKEN_INDIRECT_CONFIG) || defined(__OpenBSD__)
|
||||
#if defined(__OpenBSD__)
|
||||
static int bktr_probe __P((struct device *, void *, void *));
|
||||
#else
|
||||
static int bktr_probe __P((struct device *, struct cfdata *, void *));
|
||||
|
|
@ -1262,9 +1269,10 @@ struct cfdriver bktr_cd = {
|
|||
};
|
||||
#endif
|
||||
|
||||
int bktr_probe(parent, match, aux)
|
||||
struct device *parent;
|
||||
#if defined(__BROKEN_INDIRECT_CONFIG) || defined(__OpenBSD__)
|
||||
int
|
||||
bktr_probe(parent, match, aux)
|
||||
struct device *parent;
|
||||
#if defined(__OpenBSD__)
|
||||
void *match;
|
||||
#else
|
||||
struct cfdata *match;
|
||||
|
|
@ -1288,7 +1296,7 @@ int bktr_probe(parent, match, aux)
|
|||
* the attach routine.
|
||||
*/
|
||||
static void
|
||||
bktr_attach __P((struct device *parent, struct device *self, void *aux))
|
||||
bktr_attach(struct device *parent, struct device *self, void *aux)
|
||||
{
|
||||
bktr_ptr_t bktr;
|
||||
u_long latency;
|
||||
|
|
@ -1367,14 +1375,14 @@ bktr_attach __P((struct device *parent, struct device *self, void *aux))
|
|||
* map memory
|
||||
*/
|
||||
retval = pci_mapreg_map(pa, PCI_MAPREG_START,
|
||||
PCI_MAPREG_TYPE_MEM | PCI_MAPREG_MEM_TYPE_32BIT, 0,
|
||||
&bktr->memt, &bktr->memh, &bktr->phys_base,
|
||||
&bktr->obmemsz);
|
||||
DPR(("pci_mapreg_map: memt %x, memh %x, base %x, size %x\n",
|
||||
bktr->memt, (u_int)bktr->memh,
|
||||
(u_int)bktr->phys_base, (u_int)bktr->obmemsz));
|
||||
PCI_MAPREG_TYPE_MEM
|
||||
| PCI_MAPREG_MEM_TYPE_32BIT, 0,
|
||||
&bktr->memt, &bktr->memh, NULL,
|
||||
&bktr->obmemsz);
|
||||
DPR(("pci_mapreg_map: memt %x, memh %x, size %x\n",
|
||||
bktr->memt, (u_int)bktr->memh, (u_int)bktr->obmemsz));
|
||||
if (retval) {
|
||||
printf("%s: couldn't map memory\n", bktr->bktr_dev.dv_xname);
|
||||
printf("%s: couldn't map memory\n", bktr_name(bktr));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1389,7 +1397,8 @@ bktr_attach __P((struct device *parent, struct device *self, void *aux))
|
|||
*/
|
||||
if (pci_intr_map(pa->pa_pc, pa->pa_intrtag, pa->pa_intrpin,
|
||||
pa->pa_intrline, &ih)) {
|
||||
printf("%s: couldn't map interrupt\n", bktr->bktr_dev.dv_xname);
|
||||
printf("%s: couldn't map interrupt\n",
|
||||
bktr_name(bktr));
|
||||
return;
|
||||
}
|
||||
intrstr = pci_intr_string(pa->pa_pc, ih);
|
||||
|
|
@ -1397,14 +1406,14 @@ bktr_attach __P((struct device *parent, struct device *self, void *aux))
|
|||
bktr_intr, bktr);
|
||||
if (bktr->ih == NULL) {
|
||||
printf("%s: couldn't establish interrupt",
|
||||
bktr->bktr_dev.dv_xname);
|
||||
if (intrstr != NULL)
|
||||
printf(" at %s", intrstr);
|
||||
printf("\n");
|
||||
return;
|
||||
bktr_name(bktr));
|
||||
if (intrstr != NULL)
|
||||
printf(" at %s", intrstr);
|
||||
printf("\n");
|
||||
return;
|
||||
}
|
||||
if (intrstr != NULL)
|
||||
printf("%s: interrupting at %s\n", bktr->bktr_dev.dv_xname,
|
||||
printf("%s: interrupting at %s\n", bktr_name(bktr),
|
||||
intrstr);
|
||||
#endif /* __NetBSD__ */
|
||||
|
||||
|
|
@ -1418,11 +1427,10 @@ bktr_attach __P((struct device *parent, struct device *self, void *aux))
|
|||
latency = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_LATENCY_TIMER);
|
||||
latency = (latency >> 8) & 0xff;
|
||||
|
||||
if ( !latency ) {
|
||||
if ( bootverbose ) {
|
||||
if (!latency) {
|
||||
if (bootverbose) {
|
||||
printf("%s: PCI bus latency was 0 changing to %d",
|
||||
bktr->bktr_dev.dv_xname,
|
||||
BROOKTREE_DEF_LATENCY_VALUE);
|
||||
bktr_name(bktr), BROOKTREE_DEF_LATENCY_VALUE);
|
||||
}
|
||||
latency = BROOKTREE_DEF_LATENCY_VALUE;
|
||||
pci_conf_write(pa->pa_pc, pa->pa_tag,
|
||||
|
|
@ -1430,17 +1438,18 @@ bktr_attach __P((struct device *parent, struct device *self, void *aux))
|
|||
}
|
||||
|
||||
|
||||
/* Enabled Bus Master and Memory Mapping */
|
||||
/* Enabled Bus Master
|
||||
XXX: check if all old DMA is stopped first (e.g. after warm
|
||||
boot) */
|
||||
fun = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG);
|
||||
pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG, fun | 2);
|
||||
fun = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG);
|
||||
pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG, fun | 4);
|
||||
pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG,
|
||||
fun | PCI_COMMAND_MASTER_ENABLE);
|
||||
|
||||
/* read the pci id and determine the card type */
|
||||
fun = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_ID_REG);
|
||||
rev = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_CLASS_REG) & 0x000000ff;
|
||||
|
||||
common_bktr_attach( bktr, unit, fun, rev );
|
||||
common_bktr_attach(bktr, unit, fun, rev);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1468,15 +1477,15 @@ get_bktr_mem(bktr, dmapp, size)
|
|||
align = PAGE_SIZE;
|
||||
if (bus_dmamem_alloc(dmat, size, align, 0, &seg, 1,
|
||||
&rseg, BUS_DMA_NOWAIT)) {
|
||||
printf("bktr%d: Unable to dmamem_alloc of %d bytes\n",
|
||||
bktr->bktr_dev.dv_unit, size);
|
||||
printf("%s: Unable to dmamem_alloc of %d bytes\n",
|
||||
bktr_name(bktr), size);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if (bus_dmamem_map(dmat, &seg, rseg, size,
|
||||
&kva, BUS_DMA_NOWAIT|BUS_DMA_COHERENT)) {
|
||||
printf("bktr%d: Unable to dmamem_map of %d bytes\n",
|
||||
bktr->bktr_dev.dv_unit, size);
|
||||
printf("%s: Unable to dmamem_map of %d bytes\n",
|
||||
bktr_name(bktr), size);
|
||||
bus_dmamem_free(dmat, &seg, rseg);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1487,15 +1496,15 @@ get_bktr_mem(bktr, dmapp, size)
|
|||
* Create and locd the DMA map for the DMA area
|
||||
*/
|
||||
if (bus_dmamap_create(dmat, size, 1, size, 0, BUS_DMA_NOWAIT, dmapp)) {
|
||||
printf("bktr%d: Unable to dmamap_create of %d bytes\n",
|
||||
bktr->bktr_dev.dv_unit, size);
|
||||
printf("%s: Unable to dmamap_create of %d bytes\n",
|
||||
bktr_name(bktr), size);
|
||||
bus_dmamem_unmap(dmat, kva, size);
|
||||
bus_dmamem_free(dmat, &seg, rseg);
|
||||
return 0;
|
||||
}
|
||||
if (bus_dmamap_load(dmat, *dmapp, kva, size, NULL, BUS_DMA_NOWAIT)) {
|
||||
printf("bktr%d: Unable to dmamap_load of %d bytes\n",
|
||||
bktr->bktr_dev.dv_unit, size);
|
||||
printf("%s: Unable to dmamap_load of %d bytes\n",
|
||||
bktr_name(bktr), size);
|
||||
bus_dmamem_unmap(dmat, kva, size);
|
||||
bus_dmamem_free(dmat, &seg, rseg);
|
||||
bus_dmamap_destroy(dmat, *dmapp);
|
||||
|
|
@ -1534,40 +1543,39 @@ free_bktr_mem(bktr, dmap, kva)
|
|||
#define TUNER_DEV 0x01
|
||||
#define VBI_DEV 0x02
|
||||
|
||||
#define UNIT(x) ((x) & 0x0f)
|
||||
#define FUNCTION(x) ((x >> 4) & 0x0f)
|
||||
#define UNIT(x) (minor((x) & 0x0f))
|
||||
#define FUNCTION(x) (minor((x >> 4) & 0x0f))
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
int
|
||||
bktr_open( dev_t dev, int flags, int fmt, struct proc *p )
|
||||
bktr_open(dev_t dev, int flags, int fmt, struct proc *p)
|
||||
{
|
||||
bktr_ptr_t bktr;
|
||||
int unit;
|
||||
|
||||
unit = UNIT( minor(dev) );
|
||||
unit = UNIT(dev);
|
||||
|
||||
/* unit out of range */
|
||||
if ((unit > bktr_cd.cd_ndevs) || (bktr_cd.cd_devs[unit] == NULL))
|
||||
return( ENXIO );
|
||||
return(ENXIO);
|
||||
|
||||
bktr = bktr_cd.cd_devs[unit];
|
||||
|
||||
|
||||
if (!(bktr->flags & METEOR_INITALIZED)) /* device not found */
|
||||
return( ENXIO );
|
||||
return(ENXIO);
|
||||
|
||||
switch ( FUNCTION( minor(dev) ) ) {
|
||||
switch (FUNCTION(dev)) {
|
||||
case VIDEO_DEV:
|
||||
return( video_open( bktr ) );
|
||||
return(video_open(bktr));
|
||||
case TUNER_DEV:
|
||||
return( tuner_open( bktr ) );
|
||||
return(tuner_open(bktr));
|
||||
case VBI_DEV:
|
||||
return( vbi_open( bktr ) );
|
||||
return(vbi_open(bktr));
|
||||
}
|
||||
|
||||
return( ENXIO );
|
||||
return(ENXIO);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1575,56 +1583,48 @@ bktr_open( dev_t dev, int flags, int fmt, struct proc *p )
|
|||
*
|
||||
*/
|
||||
int
|
||||
bktr_close( dev_t dev, int flags, int fmt, struct proc *p )
|
||||
bktr_close(dev_t dev, int flags, int fmt, struct proc *p)
|
||||
{
|
||||
bktr_ptr_t bktr;
|
||||
int unit;
|
||||
|
||||
unit = UNIT( minor(dev) );
|
||||
|
||||
/* unit out of range */
|
||||
if ((unit > bktr_cd.cd_ndevs) || (bktr_cd.cd_devs[unit] == NULL))
|
||||
return( ENXIO );
|
||||
unit = UNIT(dev);
|
||||
|
||||
bktr = bktr_cd.cd_devs[unit];
|
||||
|
||||
switch ( FUNCTION( minor(dev) ) ) {
|
||||
switch (FUNCTION(dev)) {
|
||||
case VIDEO_DEV:
|
||||
return( video_close( bktr ) );
|
||||
return(video_close(bktr));
|
||||
case TUNER_DEV:
|
||||
return( tuner_close( bktr ) );
|
||||
return(tuner_close(bktr));
|
||||
case VBI_DEV:
|
||||
return( vbi_close( bktr ) );
|
||||
return(vbi_close(bktr));
|
||||
}
|
||||
|
||||
return( ENXIO );
|
||||
return(ENXIO);
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
int
|
||||
bktr_read( dev_t dev, struct uio *uio, int ioflag )
|
||||
bktr_read(dev_t dev, struct uio *uio, int ioflag)
|
||||
{
|
||||
bktr_ptr_t bktr;
|
||||
int unit;
|
||||
|
||||
unit = UNIT(minor(dev));
|
||||
|
||||
/* unit out of range */
|
||||
if ((unit > bktr_cd.cd_ndevs) || (bktr_cd.cd_devs[unit] == NULL))
|
||||
return( ENXIO );
|
||||
unit = UNIT(dev);
|
||||
|
||||
bktr = bktr_cd.cd_devs[unit];
|
||||
|
||||
switch ( FUNCTION( minor(dev) ) ) {
|
||||
switch (FUNCTION(dev)) {
|
||||
case VIDEO_DEV:
|
||||
return( video_read( bktr, unit, dev, uio ) );
|
||||
return(video_read(bktr, unit, dev, uio));
|
||||
case VBI_DEV:
|
||||
return( vbi_read( bktr, uio, ioflag ) );
|
||||
return(vbi_read(bktr, uio, ioflag));
|
||||
}
|
||||
|
||||
return( ENXIO );
|
||||
return(ENXIO);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1632,72 +1632,65 @@ bktr_read( dev_t dev, struct uio *uio, int ioflag )
|
|||
*
|
||||
*/
|
||||
int
|
||||
bktr_write( dev_t dev, struct uio *uio, int ioflag )
|
||||
bktr_write(dev_t dev, struct uio *uio, int ioflag)
|
||||
{
|
||||
/* operation not supported */
|
||||
return( EOPNOTSUPP );
|
||||
return(EOPNOTSUPP);
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
int
|
||||
bktr_ioctl( dev_t dev, ioctl_cmd_t cmd, caddr_t arg, int flag, struct proc* pr )
|
||||
bktr_ioctl(dev_t dev, ioctl_cmd_t cmd, caddr_t arg, int flag, struct proc* pr)
|
||||
{
|
||||
bktr_ptr_t bktr;
|
||||
int unit;
|
||||
|
||||
unit = UNIT(minor(dev));
|
||||
|
||||
/* unit out of range */
|
||||
if ((unit > bktr_cd.cd_ndevs) || (bktr_cd.cd_devs[unit] == NULL))
|
||||
return( ENXIO );
|
||||
unit = UNIT(dev);
|
||||
|
||||
bktr = bktr_cd.cd_devs[unit];
|
||||
|
||||
if (bktr->bigbuf == 0) /* no frame buffer allocated (ioctl failed) */
|
||||
return( ENOMEM );
|
||||
return(ENOMEM);
|
||||
|
||||
switch ( FUNCTION( minor(dev) ) ) {
|
||||
switch (FUNCTION(dev)) {
|
||||
case VIDEO_DEV:
|
||||
return( video_ioctl( bktr, unit, cmd, arg, pr ) );
|
||||
return(video_ioctl(bktr, unit, cmd, arg, pr));
|
||||
case TUNER_DEV:
|
||||
return( tuner_ioctl( bktr, unit, cmd, arg, pr ) );
|
||||
return(tuner_ioctl(bktr, unit, cmd, arg, pr));
|
||||
}
|
||||
|
||||
return( ENXIO );
|
||||
return(ENXIO);
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
int
|
||||
bktr_mmap( dev_t dev, vm_offset_t offset, int nprot )
|
||||
bktr_mmap(dev_t dev, int offset, int nprot)
|
||||
{
|
||||
int unit;
|
||||
bktr_ptr_t bktr;
|
||||
|
||||
unit = UNIT(minor(dev));
|
||||
unit = UNIT(dev);
|
||||
|
||||
/* unit out of range */
|
||||
if ((unit > bktr_cd.cd_ndevs) || (bktr_cd.cd_devs[unit] == NULL))
|
||||
return( -1 );
|
||||
if (FUNCTION(minor(dev)) > 0)
|
||||
return( -1 );
|
||||
if (FUNCTION(dev) > 0) /* only allow mmap on /dev/bktr[n] */
|
||||
return(-1);
|
||||
|
||||
bktr = bktr_cd.cd_devs[unit];
|
||||
|
||||
if (offset < 0)
|
||||
return( -1 );
|
||||
if ((vaddr_t)offset < 0)
|
||||
return(-1);
|
||||
|
||||
if (offset >= bktr->alloc_pages * PAGE_SIZE)
|
||||
return( -1 );
|
||||
if ((vaddr_t)offset >= bktr->alloc_pages * PAGE_SIZE)
|
||||
return(-1);
|
||||
|
||||
#ifdef __NetBSD__
|
||||
return (bus_dmamem_mmap(bktr->dmat, bktr->dm_mem->dm_segs, 1,
|
||||
offset, nprot, BUS_DMA_WAITOK));
|
||||
(vaddr_t)offset, nprot, BUS_DMA_WAITOK));
|
||||
#else
|
||||
return( i386_btop(vtophys(bktr->bigbuf) + offset) );
|
||||
return(i386_btop(vtophys(bktr->bigbuf) + offset));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,8 +49,42 @@
|
|||
#include <machine/bus.h> /* struct device */
|
||||
#include <sys/device.h>
|
||||
#include <sys/select.h> /* struct selinfo */
|
||||
# ifdef DEBUG
|
||||
# define bootverbose 1
|
||||
# else
|
||||
# define bootverbose 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The kernel options for the driver now all begin with BKTR.
|
||||
* Support the older kernel options on FreeBSD and OpenBSD.
|
||||
*
|
||||
*/
|
||||
#if defined(__FreeBSD__) || defined(__OpenBSD__)
|
||||
#if defined(BROOKTREE_SYSTEM_DEFAULT)
|
||||
#define BKTR_SYSTEM_DEFAULT BROOKTREE_SYSTEM_DEFAULT
|
||||
#endif
|
||||
|
||||
#if defined(OVERRIDE_CARD)
|
||||
#define BKTR_OVERRIDE_CARD OVERRIDE_CARD
|
||||
#endif
|
||||
|
||||
#if defined(OVERRIDE_TUNER)
|
||||
#define BKTR_OVERRIDE_TUNER OVERRIDE_TUNER
|
||||
#endif
|
||||
|
||||
#if defined(OVERRIDE_DBX)
|
||||
#define BKTR_OVERRIDE_DBX OVERRIDE_DBX
|
||||
#endif
|
||||
|
||||
#if defined(OVERRIDE_MSP)
|
||||
#define BKTR_OVERRIDE_MSP OVERRIDE_MSP
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef PCI_LATENCY_TIMER
|
||||
#define PCI_LATENCY_TIMER 0x0c /* pci timer register */
|
||||
#endif
|
||||
|
|
@ -440,7 +474,7 @@ typedef struct bktr_clip bktr_clip_t;
|
|||
* NetBSD >= 1.3H uses vaddr_t instead of vm_offset_t
|
||||
*/
|
||||
#if defined(__NetBSD__) && __NetBSD_Version__ >= 103080000
|
||||
typedef vaddr_t vm_offset_t;
|
||||
typedef void * vm_offset_t;
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
@ -467,11 +501,6 @@ struct bktr_softc {
|
|||
bus_dmamap_t dm_mem;
|
||||
bus_dmamap_t dm_vbidata;
|
||||
bus_dmamap_t dm_vbibuffer;
|
||||
#if __NetBSD_Version__ >= 103080000
|
||||
paddr_t phys_base; /* Bt848 register physical address */
|
||||
#else
|
||||
vm_offset_t phys_base; /* Bt848 register physical address */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__OpenBSD__)
|
||||
|
|
@ -510,6 +539,7 @@ struct bktr_softc {
|
|||
#if (NSMBUS > 0)
|
||||
struct bktr_i2c_softc i2c_sc; /* bt848_i2c device */
|
||||
#endif
|
||||
char bktr_xname[7]; /* device name and unit number */
|
||||
#endif
|
||||
|
||||
/* the following definitions are common over all platforms */
|
||||
|
|
|
|||
|
|
@ -56,25 +56,28 @@
|
|||
#ifdef __FreeBSD__
|
||||
#include <machine/clock.h> /* for DELAY */
|
||||
#include <pci/pcivar.h>
|
||||
#endif
|
||||
|
||||
#if (__FreeBSD_version >=300000)
|
||||
#include <machine/bus_memio.h> /* for bus space */
|
||||
#include <machine/bus.h>
|
||||
#include <sys/bus.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __NetBSD__
|
||||
#include <dev/ic/ioctl_meteor.h> /* NetBSD .h file location */
|
||||
#include <dev/ic/ioctl_bt848.h>
|
||||
#include <dev/ic/bt8xx.h> /* NetBSD .h file location */
|
||||
#include <dev/pci/bktr/bktr_reg.h>
|
||||
#include <dev/pci/bktr/bktr_tuner.h>
|
||||
#include <dev/pci/bktr/bktr_card.h>
|
||||
#include <dev/pci/bktr/bktr_core.h>
|
||||
#else
|
||||
#include <machine/ioctl_meteor.h> /* Traditional .h file location */
|
||||
#include <machine/ioctl_bt848.h> /* extensions to ioctl_meteor.h */
|
||||
#endif
|
||||
#include <dev/bktr/bktr_reg.h>
|
||||
#include <dev/bktr/bktr_tuner.h>
|
||||
#include <dev/bktr/bktr_card.h>
|
||||
#include <dev/bktr/bktr_core.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
|
@ -835,16 +838,17 @@ tv_freq( bktr_ptr_t bktr, int frequency, int type )
|
|||
/* AFC failed, restore requested frequency */
|
||||
N = frequency + TBL_IF;
|
||||
#if defined( TEST_TUNER_AFC )
|
||||
printf("do_afc: failed to lock\n");
|
||||
printf("%s: do_afc: failed to lock\n",
|
||||
bktr_name(bktr));
|
||||
#endif
|
||||
i2cWrite( bktr, addr, (N>>8) & 0x7f, N & 0xff );
|
||||
}
|
||||
else
|
||||
frequency = N - TBL_IF;
|
||||
#if defined( TEST_TUNER_AFC )
|
||||
printf("do_afc: returned freq %d (%d %% %d)\n", frequency, frequency / 16, frequency % 16);
|
||||
printf("%s: do_afc: returned freq %d (%d %% %d)\n", bktr_name(bktr), frequency, frequency / 16, frequency % 16);
|
||||
afcDelta = frequency - oldFrequency;
|
||||
printf("changed by: %d clicks (%d mod %d)\n", afcDelta, afcDelta / 16, afcDelta % 16);
|
||||
printf("%s: changed by: %d clicks (%d mod %d)\n", bktr_name(bktr), afcDelta, afcDelta / 16, afcDelta % 16);
|
||||
#endif
|
||||
}
|
||||
#endif /* TUNER_AFC */
|
||||
|
|
@ -913,14 +917,14 @@ do_afc( bktr_ptr_t bktr, int addr, int frequency )
|
|||
return( -1 );
|
||||
|
||||
#if defined( TEST_TUNER_AFC )
|
||||
printf( "\nOriginal freq: %d, status: 0x%02x\n", frequency, status );
|
||||
printf( "%s: Original freq: %d, status: 0x%02x\n", bktr_name(bktr), frequency, status );
|
||||
#endif
|
||||
for ( step = 0; step < AFC_MAX_STEP; ++step ) {
|
||||
if ( (status = i2cRead( bktr, addr + 1 )) < 0 )
|
||||
goto fubar;
|
||||
if ( !(status & 0x40) ) {
|
||||
#if defined( TEST_TUNER_AFC )
|
||||
printf( "no lock!\n" );
|
||||
printf( "%s: no lock!\n", bktr_name(bktr) );
|
||||
#endif
|
||||
goto fubar;
|
||||
}
|
||||
|
|
@ -928,14 +932,14 @@ do_afc( bktr_ptr_t bktr, int addr, int frequency )
|
|||
switch( status & AFC_BITS ) {
|
||||
case AFC_FREQ_CENTERED:
|
||||
#if defined( TEST_TUNER_AFC )
|
||||
printf( "Centered, freq: %d, status: 0x%02x\n", frequency, status );
|
||||
printf( "%s: Centered, freq: %d, status: 0x%02x\n", bktr_name(bktr), frequency, status );
|
||||
#endif
|
||||
return( frequency );
|
||||
|
||||
case AFC_FREQ_MINUS_125:
|
||||
case AFC_FREQ_MINUS_62:
|
||||
#if defined( TEST_TUNER_AFC )
|
||||
printf( "Low, freq: %d, status: 0x%02x\n", frequency, status );
|
||||
printf( "%s: Low, freq: %d, status: 0x%02x\n", bktr_name(bktr), frequency, status );
|
||||
#endif
|
||||
--frequency;
|
||||
break;
|
||||
|
|
@ -943,7 +947,7 @@ do_afc( bktr_ptr_t bktr, int addr, int frequency )
|
|||
case AFC_FREQ_PLUS_62:
|
||||
case AFC_FREQ_PLUS_125:
|
||||
#if defined( TEST_TUNER_AFC )
|
||||
printf( "Hi, freq: %d, status: 0x%02x\n", frequency, status );
|
||||
printf( "%s: Hi, freq: %d, status: 0x%02x\n", bktr_name(bktr), frequency, status );
|
||||
#endif
|
||||
++frequency;
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in a new issue