|
@@ -1,5 +1,5 @@
|
|
/*
|
|
/*
|
|
- $Id: bttv-cards.c,v 1.49 2005/06/10 17:20:24 mchehab Exp $
|
|
|
|
|
|
+ $Id: bttv-cards.c,v 1.53 2005/07/05 17:37:35 nsh Exp $
|
|
|
|
|
|
bttv-cards.c
|
|
bttv-cards.c
|
|
|
|
|
|
@@ -39,9 +39,6 @@
|
|
#include <asm/io.h>
|
|
#include <asm/io.h>
|
|
|
|
|
|
#include "bttvp.h"
|
|
#include "bttvp.h"
|
|
-#if 0 /* not working yet */
|
|
|
|
-#include "bt832.h"
|
|
|
|
-#endif
|
|
|
|
|
|
|
|
/* fwd decl */
|
|
/* fwd decl */
|
|
static void boot_msp34xx(struct bttv *btv, int pin);
|
|
static void boot_msp34xx(struct bttv *btv, int pin);
|
|
@@ -513,13 +510,8 @@ struct tvcard bttv_tvcards[] = {
|
|
.svhs = 2,
|
|
.svhs = 2,
|
|
.gpiomask = 0x01fe00,
|
|
.gpiomask = 0x01fe00,
|
|
.muxsel = { 2, 3, 1, 1},
|
|
.muxsel = { 2, 3, 1, 1},
|
|
-#if 0
|
|
|
|
- // old
|
|
|
|
- .audiomux = { 0x01c000, 0, 0x018000, 0x014000, 0x002000, 0 },
|
|
|
|
-#else
|
|
|
|
// 2003-10-20 by "Anton A. Arapov" <arapov@mail.ru>
|
|
// 2003-10-20 by "Anton A. Arapov" <arapov@mail.ru>
|
|
.audiomux = { 0x001e00, 0, 0x018000, 0x014000, 0x002000, 0 },
|
|
.audiomux = { 0x001e00, 0, 0x018000, 0x014000, 0x002000, 0 },
|
|
-#endif
|
|
|
|
.needs_tvaudio = 1,
|
|
.needs_tvaudio = 1,
|
|
.pll = PLL_28,
|
|
.pll = PLL_28,
|
|
.tuner_type = -1,
|
|
.tuner_type = -1,
|
|
@@ -766,14 +758,9 @@ struct tvcard bttv_tvcards[] = {
|
|
.tuner = 0,
|
|
.tuner = 0,
|
|
.svhs = 2,
|
|
.svhs = 2,
|
|
.muxsel = { 2, 3, 1, 1, 0}, // TV, CVid, SVid, CVid over SVid connector
|
|
.muxsel = { 2, 3, 1, 1, 0}, // TV, CVid, SVid, CVid over SVid connector
|
|
-#if 0
|
|
|
|
- .gpiomask = 0xc33000,
|
|
|
|
- .audiomux = { 0x422000,0x1000,0x0000,0x620000,0x800000 },
|
|
|
|
-#else
|
|
|
|
/* Alexander Varakin <avarakin@hotmail.com> [stereo version] */
|
|
/* Alexander Varakin <avarakin@hotmail.com> [stereo version] */
|
|
.gpiomask = 0xb33000,
|
|
.gpiomask = 0xb33000,
|
|
.audiomux = { 0x122000,0x1000,0x0000,0x620000,0x800000 },
|
|
.audiomux = { 0x122000,0x1000,0x0000,0x620000,0x800000 },
|
|
-#endif
|
|
|
|
/* Audio Routing for "WinFast 2000 XP" (no tv stereo !)
|
|
/* Audio Routing for "WinFast 2000 XP" (no tv stereo !)
|
|
gpio23 -- hef4052:nEnable (0x800000)
|
|
gpio23 -- hef4052:nEnable (0x800000)
|
|
gpio12 -- hef4052:A1
|
|
gpio12 -- hef4052:A1
|
|
@@ -1603,20 +1590,11 @@ struct tvcard bttv_tvcards[] = {
|
|
.video_inputs = 4,
|
|
.video_inputs = 4,
|
|
.audio_inputs = 1,
|
|
.audio_inputs = 1,
|
|
.tuner = -1,
|
|
.tuner = -1,
|
|
-#if 0 /* TODO ... */
|
|
|
|
- .svhs = OSPREY540_SVID_ANALOG,
|
|
|
|
- .muxsel = { [OSPREY540_COMP_ANALOG] = 2,
|
|
|
|
- [OSPREY540_SVID_ANALOG] = 3, },
|
|
|
|
-#endif
|
|
|
|
.pll = PLL_28,
|
|
.pll = PLL_28,
|
|
.tuner_type = -1,
|
|
.tuner_type = -1,
|
|
.no_msp34xx = 1,
|
|
.no_msp34xx = 1,
|
|
.no_tda9875 = 1,
|
|
.no_tda9875 = 1,
|
|
.no_tda7432 = 1,
|
|
.no_tda7432 = 1,
|
|
-#if 0 /* TODO ... */
|
|
|
|
- .muxsel_hook = osprey_540_muxsel,
|
|
|
|
- .picture_hook = osprey_540_set_picture,
|
|
|
|
-#endif
|
|
|
|
},{
|
|
},{
|
|
|
|
|
|
/* ---- card 0x5C ---------------------------------- */
|
|
/* ---- card 0x5C ---------------------------------- */
|
|
@@ -2546,21 +2524,12 @@ static void eagle_muxsel(struct bttv *btv, unsigned int input)
|
|
btaor((2)<<5, ~(3<<5), BT848_IFORM);
|
|
btaor((2)<<5, ~(3<<5), BT848_IFORM);
|
|
gpio_bits(3,bttv_tvcards[btv->c.type].muxsel[input&7]);
|
|
gpio_bits(3,bttv_tvcards[btv->c.type].muxsel[input&7]);
|
|
|
|
|
|
-#if 0
|
|
|
|
- /* svhs */
|
|
|
|
- /* wake chroma ADC */
|
|
|
|
- btand(~BT848_ADC_C_SLEEP, BT848_ADC);
|
|
|
|
- /* set to YC video */
|
|
|
|
- btor(BT848_CONTROL_COMP, BT848_E_CONTROL);
|
|
|
|
- btor(BT848_CONTROL_COMP, BT848_O_CONTROL);
|
|
|
|
-#else
|
|
|
|
/* composite */
|
|
/* composite */
|
|
/* set chroma ADC to sleep */
|
|
/* set chroma ADC to sleep */
|
|
btor(BT848_ADC_C_SLEEP, BT848_ADC);
|
|
btor(BT848_ADC_C_SLEEP, BT848_ADC);
|
|
/* set to composite video */
|
|
/* set to composite video */
|
|
btand(~BT848_CONTROL_COMP, BT848_E_CONTROL);
|
|
btand(~BT848_CONTROL_COMP, BT848_E_CONTROL);
|
|
btand(~BT848_CONTROL_COMP, BT848_O_CONTROL);
|
|
btand(~BT848_CONTROL_COMP, BT848_O_CONTROL);
|
|
-#endif
|
|
|
|
|
|
|
|
/* switch sync drive off */
|
|
/* switch sync drive off */
|
|
gpio_bits(LM1882_SYNC_DRIVE,LM1882_SYNC_DRIVE);
|
|
gpio_bits(LM1882_SYNC_DRIVE,LM1882_SYNC_DRIVE);
|
|
@@ -2813,10 +2782,18 @@ void __devinit bttv_init_card2(struct bttv *btv)
|
|
btv->tuner_type = tuner[btv->c.nr];
|
|
btv->tuner_type = tuner[btv->c.nr];
|
|
printk("bttv%d: using tuner=%d\n",btv->c.nr,btv->tuner_type);
|
|
printk("bttv%d: using tuner=%d\n",btv->c.nr,btv->tuner_type);
|
|
if (btv->pinnacle_id != UNSET)
|
|
if (btv->pinnacle_id != UNSET)
|
|
- bttv_call_i2c_clients(btv,AUDC_CONFIG_PINNACLE,
|
|
|
|
|
|
+ bttv_call_i2c_clients(btv, AUDC_CONFIG_PINNACLE,
|
|
&btv->pinnacle_id);
|
|
&btv->pinnacle_id);
|
|
- if (btv->tuner_type != UNSET)
|
|
|
|
- bttv_call_i2c_clients(btv,TUNER_SET_TYPE,&btv->tuner_type);
|
|
|
|
|
|
+ if (btv->tuner_type != UNSET) {
|
|
|
|
+ struct tuner_setup tun_setup;
|
|
|
|
+
|
|
|
|
+ tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV;
|
|
|
|
+ tun_setup.type = btv->tuner_type;
|
|
|
|
+ tun_setup.addr = ADDR_UNSET;
|
|
|
|
+
|
|
|
|
+ bttv_call_i2c_clients(btv, TUNER_SET_TYPE_ADDR, &tun_setup);
|
|
|
|
+ }
|
|
|
|
+
|
|
btv->svhs = bttv_tvcards[btv->c.type].svhs;
|
|
btv->svhs = bttv_tvcards[btv->c.type].svhs;
|
|
if (svhs[btv->c.nr] != UNSET)
|
|
if (svhs[btv->c.nr] != UNSET)
|
|
btv->svhs = svhs[btv->c.nr];
|
|
btv->svhs = svhs[btv->c.nr];
|
|
@@ -3125,14 +3102,6 @@ static int tuner_0_table[] = {
|
|
TUNER_PHILIPS_SECAM, TUNER_PHILIPS_SECAM,
|
|
TUNER_PHILIPS_SECAM, TUNER_PHILIPS_SECAM,
|
|
TUNER_PHILIPS_SECAM, TUNER_PHILIPS_PAL,
|
|
TUNER_PHILIPS_SECAM, TUNER_PHILIPS_PAL,
|
|
TUNER_PHILIPS_FM1216ME_MK3 };
|
|
TUNER_PHILIPS_FM1216ME_MK3 };
|
|
-#if 0
|
|
|
|
-int tuner_0_fm_table[] = {
|
|
|
|
- PHILIPS_FR1236_NTSC, PHILIPS_FR1216_PAL,
|
|
|
|
- PHILIPS_FR1216_PAL, PHILIPS_FR1216_PAL,
|
|
|
|
- PHILIPS_FR1216_PAL, PHILIPS_FR1216_PAL,
|
|
|
|
- PHILIPS_FR1236_SECAM, PHILIPS_FR1236_SECAM,
|
|
|
|
- PHILIPS_FR1236_SECAM, PHILIPS_FR1216_PAL};
|
|
|
|
-#endif
|
|
|
|
|
|
|
|
static int tuner_1_table[] = {
|
|
static int tuner_1_table[] = {
|
|
TUNER_TEMIC_NTSC, TUNER_TEMIC_PAL,
|
|
TUNER_TEMIC_NTSC, TUNER_TEMIC_PAL,
|
|
@@ -3218,36 +3187,6 @@ static void __devinit boot_msp34xx(struct bttv *btv, int pin)
|
|
|
|
|
|
static void __devinit boot_bt832(struct bttv *btv)
|
|
static void __devinit boot_bt832(struct bttv *btv)
|
|
{
|
|
{
|
|
-#if 0 /* not working yet */
|
|
|
|
- int resetbit=0;
|
|
|
|
-
|
|
|
|
- switch (btv->c.type) {
|
|
|
|
- case BTTV_PXELVWPLTVPAK:
|
|
|
|
- resetbit = 0x400000;
|
|
|
|
- break;
|
|
|
|
- case BTTV_MODTEC_205:
|
|
|
|
- resetbit = 1<<9;
|
|
|
|
- break;
|
|
|
|
- default:
|
|
|
|
- BUG();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- request_module("bt832");
|
|
|
|
- bttv_call_i2c_clients(btv, BT832_HEXDUMP, NULL);
|
|
|
|
-
|
|
|
|
- printk("bttv%d: Reset Bt832 [line=0x%x]\n",btv->c.nr,resetbit);
|
|
|
|
- gpio_write(0);
|
|
|
|
- gpio_inout(resetbit, resetbit);
|
|
|
|
- udelay(5);
|
|
|
|
- gpio_bits(resetbit, resetbit);
|
|
|
|
- udelay(5);
|
|
|
|
- gpio_bits(resetbit, 0);
|
|
|
|
- udelay(5);
|
|
|
|
-
|
|
|
|
- // bt832 on pixelview changes from i2c 0x8a to 0x88 after
|
|
|
|
- // being reset as above. So we must follow by this:
|
|
|
|
- bttv_call_i2c_clients(btv, BT832_REATTACH, NULL);
|
|
|
|
-#endif
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/* ----------------------------------------------------------------------- */
|
|
/* ----------------------------------------------------------------------- */
|
|
@@ -3572,11 +3511,6 @@ void tea5757_set_freq(struct bttv *btv, unsigned short freq)
|
|
{
|
|
{
|
|
dprintk("tea5757_set_freq %d\n",freq);
|
|
dprintk("tea5757_set_freq %d\n",freq);
|
|
tea5757_write(btv, 5 * freq + 0x358); /* add 10.7MHz (see docs) */
|
|
tea5757_write(btv, 5 * freq + 0x358); /* add 10.7MHz (see docs) */
|
|
-#if 0
|
|
|
|
- /* breaks Miro PCTV */
|
|
|
|
- value = tea5757_read(btv);
|
|
|
|
- dprintk("bttv%d: tea5757 readback=0x%x\n",btv->c.nr,value);
|
|
|
|
-#endif
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -3656,13 +3590,8 @@ gvbctv5pci_audio(struct bttv *btv, struct video_audio *v, int set)
|
|
{
|
|
{
|
|
unsigned int val, con;
|
|
unsigned int val, con;
|
|
|
|
|
|
-#if BTTV_VERSION_CODE > KERNEL_VERSION(0,8,0)
|
|
|
|
if (btv->radio_user)
|
|
if (btv->radio_user)
|
|
return;
|
|
return;
|
|
-#else
|
|
|
|
- if (btv->radio)
|
|
|
|
- return;
|
|
|
|
-#endif
|
|
|
|
|
|
|
|
val = gpio_read();
|
|
val = gpio_read();
|
|
if (set) {
|
|
if (set) {
|
|
@@ -3851,13 +3780,8 @@ pvbt878p9b_audio(struct bttv *btv, struct video_audio *v, int set)
|
|
{
|
|
{
|
|
unsigned int val = 0;
|
|
unsigned int val = 0;
|
|
|
|
|
|
-#if BTTV_VERSION_CODE > KERNEL_VERSION(0,8,0)
|
|
|
|
if (btv->radio_user)
|
|
if (btv->radio_user)
|
|
return;
|
|
return;
|
|
-#else
|
|
|
|
- if (btv->radio)
|
|
|
|
- return;
|
|
|
|
-#endif
|
|
|
|
|
|
|
|
if (set) {
|
|
if (set) {
|
|
if (v->mode & VIDEO_SOUND_MONO) {
|
|
if (v->mode & VIDEO_SOUND_MONO) {
|
|
@@ -3888,13 +3812,8 @@ fv2000s_audio(struct bttv *btv, struct video_audio *v, int set)
|
|
{
|
|
{
|
|
unsigned int val = 0xffff;
|
|
unsigned int val = 0xffff;
|
|
|
|
|
|
-#if BTTV_VERSION_CODE > KERNEL_VERSION(0,8,0)
|
|
|
|
if (btv->radio_user)
|
|
if (btv->radio_user)
|
|
return;
|
|
return;
|
|
-#else
|
|
|
|
- if (btv->radio)
|
|
|
|
- return;
|
|
|
|
-#endif
|
|
|
|
if (set) {
|
|
if (set) {
|
|
if (v->mode & VIDEO_SOUND_MONO) {
|
|
if (v->mode & VIDEO_SOUND_MONO) {
|
|
val = 0x0000;
|
|
val = 0x0000;
|
|
@@ -4371,11 +4290,6 @@ void __devinit bttv_check_chipset(void)
|
|
latency = 0x0A;
|
|
latency = 0x0A;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
-#if 0
|
|
|
|
- /* print which chipset we have */
|
|
|
|
- while ((dev = pci_find_class(PCI_CLASS_BRIDGE_HOST << 8,dev)))
|
|
|
|
- printk(KERN_INFO "bttv: Host bridge is %s\n",pci_name(dev));
|
|
|
|
-#endif
|
|
|
|
|
|
|
|
/* print warnings about any quirks found */
|
|
/* print warnings about any quirks found */
|
|
if (triton1)
|
|
if (triton1)
|