Commit 434b2526 authored by Wade Berrier's avatar Wade Berrier Committed by Mauro Carvalho Chehab

V4L/DVB (5785): Revisited: 3dfx Voodoo TV 200 (US)

Fix support for 3dfx Voodoo TV 200 variant
Signed-off-by: default avatarWade Berrier <wberrier@gmail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 096bb77a
...@@ -178,8 +178,8 @@ static struct CARD { ...@@ -178,8 +178,8 @@ static struct CARD {
/* this seems to happen as well ... */ /* this seems to happen as well ... */
{ 0xff1211bd, BTTV_BOARD_PINNACLE, "Pinnacle PCTV" }, { 0xff1211bd, BTTV_BOARD_PINNACLE, "Pinnacle PCTV" },
{ 0x3000121a, BTTV_BOARD_VOODOOTV_FM, "3Dfx VoodooTV FM/ VoodooTV 200" }, { 0x3000121a, BTTV_BOARD_VOODOOTV_200, "3Dfx VoodooTV 200" },
{ 0x263710b4, BTTV_BOARD_VOODOOTV_FM, "3Dfx VoodooTV FM/ VoodooTV 200" }, { 0x263710b4, BTTV_BOARD_VOODOOTV_FM, "3Dfx VoodooTV FM" },
{ 0x3060121a, BTTV_BOARD_STB2, "3Dfx VoodooTV 100/ STB OEM" }, { 0x3060121a, BTTV_BOARD_STB2, "3Dfx VoodooTV 100/ STB OEM" },
{ 0x3000144f, BTTV_BOARD_MAGICTVIEW063, "(Askey Magic/others) TView99 CPH06x" }, { 0x3000144f, BTTV_BOARD_MAGICTVIEW063, "(Askey Magic/others) TView99 CPH06x" },
...@@ -1517,7 +1517,29 @@ struct tvcard bttv_tvcards[] = { ...@@ -1517,7 +1517,29 @@ struct tvcard bttv_tvcards[] = {
/* ---- card 0x44 ---------------------------------- */ /* ---- card 0x44 ---------------------------------- */
[BTTV_BOARD_VOODOOTV_FM] = { [BTTV_BOARD_VOODOOTV_FM] = {
.name = "3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA)", .name = "3Dfx VoodooTV FM (Euro)",
/* try "insmod msp3400 simple=0" if you have
* sound problems with this card. */
.video_inputs = 4,
.audio_inputs = 1,
.tuner = 0,
.svhs = -1,
.gpiomask = 0x4f8a00,
/* 0x100000: 1=MSP enabled (0=disable again)
* 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
.gpiomux = {0x947fff, 0x987fff,0x947fff,0x947fff },
.gpiomute = 0x947fff,
/* tvtuner, radio, external,internal, mute, stereo
* tuner, Composit, SVid, Composit-on-Svid-adapter */
.muxsel = { 2, 3 ,0 ,1 },
.tuner_type = TUNER_MT2032,
.tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET,
.pll = PLL_28,
.has_radio = 1,
},
[BTTV_BOARD_VOODOOTV_200] = {
.name = "VoodooTV 200 (USA)",
/* try "insmod msp3400 simple=0" if you have /* try "insmod msp3400 simple=0" if you have
* sound problems with this card. */ * sound problems with this card. */
.video_inputs = 4, .video_inputs = 4,
...@@ -3302,6 +3324,7 @@ void __devinit bttv_init_card1(struct bttv *btv) ...@@ -3302,6 +3324,7 @@ void __devinit bttv_init_card1(struct bttv *btv)
case BTTV_BOARD_HAUPPAUGE878: case BTTV_BOARD_HAUPPAUGE878:
boot_msp34xx(btv,5); boot_msp34xx(btv,5);
break; break;
case BTTV_BOARD_VOODOOTV_200:
case BTTV_BOARD_VOODOOTV_FM: case BTTV_BOARD_VOODOOTV_FM:
boot_msp34xx(btv,20); boot_msp34xx(btv,20);
break; break;
...@@ -3865,11 +3888,15 @@ void bttv_tda9880_setnorm(struct bttv *btv, int norm) ...@@ -3865,11 +3888,15 @@ void bttv_tda9880_setnorm(struct bttv *btv, int norm)
if(norm==VIDEO_MODE_NTSC) { if(norm==VIDEO_MODE_NTSC) {
bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x957fff; bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x957fff;
bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x957fff; bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x957fff;
bttv_tvcards[BTTV_BOARD_VOODOOTV_200].gpiomux[TVAUDIO_INPUT_TUNER]=0x957fff;
bttv_tvcards[BTTV_BOARD_VOODOOTV_200].gpiomute=0x957fff;
dprintk("bttv_tda9880_setnorm to NTSC\n"); dprintk("bttv_tda9880_setnorm to NTSC\n");
} }
else { else {
bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x947fff; bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x947fff;
bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x947fff; bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x947fff;
bttv_tvcards[BTTV_BOARD_VOODOOTV_200].gpiomux[TVAUDIO_INPUT_TUNER]=0x947fff;
bttv_tvcards[BTTV_BOARD_VOODOOTV_200].gpiomute=0x947fff;
dprintk("bttv_tda9880_setnorm to PAL\n"); dprintk("bttv_tda9880_setnorm to PAL\n");
} }
/* set GPIO according */ /* set GPIO according */
......
...@@ -1218,7 +1218,14 @@ audio_mux(struct bttv *btv, int input, int mute) ...@@ -1218,7 +1218,14 @@ audio_mux(struct bttv *btv, int input, int mute)
break; break;
case TVAUDIO_INPUT_TUNER: case TVAUDIO_INPUT_TUNER:
default: default:
route.input = MSP_INPUT_DEFAULT; /* This is the only card that uses TUNER2, and afaik,
is the only difference between the VOODOOTV_FM
and VOODOOTV_200 */
if (btv->c.type == BTTV_BOARD_VOODOOTV_200)
route.input = MSP_INPUT(MSP_IN_SCART1, MSP_IN_TUNER2, \
MSP_DSP_IN_TUNER, MSP_DSP_IN_TUNER);
else
route.input = MSP_INPUT_DEFAULT;
break; break;
} }
route.output = MSP_OUTPUT_DEFAULT; route.output = MSP_OUTPUT_DEFAULT;
...@@ -1253,7 +1260,7 @@ i2c_vidiocschan(struct bttv *btv) ...@@ -1253,7 +1260,7 @@ i2c_vidiocschan(struct bttv *btv)
v4l2_std_id std = bttv_tvnorms[btv->tvnorm].v4l2_id; v4l2_std_id std = bttv_tvnorms[btv->tvnorm].v4l2_id;
bttv_call_i2c_clients(btv, VIDIOC_S_STD, &std); bttv_call_i2c_clients(btv, VIDIOC_S_STD, &std);
if (btv->c.type == BTTV_BOARD_VOODOOTV_FM) if (btv->c.type == BTTV_BOARD_VOODOOTV_FM || btv->c.type == BTTV_BOARD_VOODOOTV_200)
bttv_tda9880_setnorm(btv,btv->tvnorm); bttv_tda9880_setnorm(btv,btv->tvnorm);
} }
...@@ -1323,6 +1330,7 @@ set_tvnorm(struct bttv *btv, unsigned int norm) ...@@ -1323,6 +1330,7 @@ set_tvnorm(struct bttv *btv, unsigned int norm)
switch (btv->c.type) { switch (btv->c.type) {
case BTTV_BOARD_VOODOOTV_FM: case BTTV_BOARD_VOODOOTV_FM:
case BTTV_BOARD_VOODOOTV_200:
bttv_tda9880_setnorm(btv,norm); bttv_tda9880_setnorm(btv,norm);
break; break;
} }
......
...@@ -170,6 +170,7 @@ ...@@ -170,6 +170,7 @@
#define BTTV_BOARD_MACHTV_MAGICTV 0x90 #define BTTV_BOARD_MACHTV_MAGICTV 0x90
#define BTTV_BOARD_SSAI_SECURITY 0x91 #define BTTV_BOARD_SSAI_SECURITY 0x91
#define BTTV_BOARD_SSAI_ULTRASOUND 0x92 #define BTTV_BOARD_SSAI_ULTRASOUND 0x92
#define BTTV_BOARD_VOODOOTV_200 0x93
/* more card-specific defines */ /* more card-specific defines */
#define PT2254_L_CHANNEL 0x10 #define PT2254_L_CHANNEL 0x10
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment