aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorWade Berrier <wberrier@gmail.com>2007-06-25 12:02:16 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-07-18 13:24:19 -0400
commit434b25263a236c9dd980617d69863ba0eff8c744 (patch)
treefcc7e33aeceb3faa6d9a88c9d3d262bf5f93ad07 /drivers
parent096bb77abac4e44c37870f4f8adaec813295eb23 (diff)
V4L/DVB (5785): Revisited: 3dfx Voodoo TV 200 (US)
Fix support for 3dfx Voodoo TV 200 variant Signed-off-by: Wade Berrier <wberrier@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/video/bt8xx/bttv-cards.c33
-rw-r--r--drivers/media/video/bt8xx/bttv-driver.c12
-rw-r--r--drivers/media/video/bt8xx/bttv.h1
3 files changed, 41 insertions, 5 deletions
diff --git a/drivers/media/video/bt8xx/bttv-cards.c b/drivers/media/video/bt8xx/bttv-cards.c
index 6b31e50fb951..a5e02005cdae 100644
--- a/drivers/media/video/bt8xx/bttv-cards.c
+++ b/drivers/media/video/bt8xx/bttv-cards.c
@@ -178,8 +178,8 @@ static struct CARD {
178 /* this seems to happen as well ... */ 178 /* this seems to happen as well ... */
179 { 0xff1211bd, BTTV_BOARD_PINNACLE, "Pinnacle PCTV" }, 179 { 0xff1211bd, BTTV_BOARD_PINNACLE, "Pinnacle PCTV" },
180 180
181 { 0x3000121a, BTTV_BOARD_VOODOOTV_FM, "3Dfx VoodooTV FM/ VoodooTV 200" }, 181 { 0x3000121a, BTTV_BOARD_VOODOOTV_200, "3Dfx VoodooTV 200" },
182 { 0x263710b4, BTTV_BOARD_VOODOOTV_FM, "3Dfx VoodooTV FM/ VoodooTV 200" }, 182 { 0x263710b4, BTTV_BOARD_VOODOOTV_FM, "3Dfx VoodooTV FM" },
183 { 0x3060121a, BTTV_BOARD_STB2, "3Dfx VoodooTV 100/ STB OEM" }, 183 { 0x3060121a, BTTV_BOARD_STB2, "3Dfx VoodooTV 100/ STB OEM" },
184 184
185 { 0x3000144f, BTTV_BOARD_MAGICTVIEW063, "(Askey Magic/others) TView99 CPH06x" }, 185 { 0x3000144f, BTTV_BOARD_MAGICTVIEW063, "(Askey Magic/others) TView99 CPH06x" },
@@ -1517,7 +1517,29 @@ struct tvcard bttv_tvcards[] = {
1517 1517
1518 /* ---- card 0x44 ---------------------------------- */ 1518 /* ---- card 0x44 ---------------------------------- */
1519 [BTTV_BOARD_VOODOOTV_FM] = { 1519 [BTTV_BOARD_VOODOOTV_FM] = {
1520 .name = "3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA)", 1520 .name = "3Dfx VoodooTV FM (Euro)",
1521 /* try "insmod msp3400 simple=0" if you have
1522 * sound problems with this card. */
1523 .video_inputs = 4,
1524 .audio_inputs = 1,
1525 .tuner = 0,
1526 .svhs = -1,
1527 .gpiomask = 0x4f8a00,
1528 /* 0x100000: 1=MSP enabled (0=disable again)
1529 * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
1530 .gpiomux = {0x947fff, 0x987fff,0x947fff,0x947fff },
1531 .gpiomute = 0x947fff,
1532 /* tvtuner, radio, external,internal, mute, stereo
1533 * tuner, Composit, SVid, Composit-on-Svid-adapter */
1534 .muxsel = { 2, 3 ,0 ,1 },
1535 .tuner_type = TUNER_MT2032,
1536 .tuner_addr = ADDR_UNSET,
1537 .radio_addr = ADDR_UNSET,
1538 .pll = PLL_28,
1539 .has_radio = 1,
1540 },
1541 [BTTV_BOARD_VOODOOTV_200] = {
1542 .name = "VoodooTV 200 (USA)",
1521 /* try "insmod msp3400 simple=0" if you have 1543 /* try "insmod msp3400 simple=0" if you have
1522 * sound problems with this card. */ 1544 * sound problems with this card. */
1523 .video_inputs = 4, 1545 .video_inputs = 4,
@@ -3302,6 +3324,7 @@ void __devinit bttv_init_card1(struct bttv *btv)
3302 case BTTV_BOARD_HAUPPAUGE878: 3324 case BTTV_BOARD_HAUPPAUGE878:
3303 boot_msp34xx(btv,5); 3325 boot_msp34xx(btv,5);
3304 break; 3326 break;
3327 case BTTV_BOARD_VOODOOTV_200:
3305 case BTTV_BOARD_VOODOOTV_FM: 3328 case BTTV_BOARD_VOODOOTV_FM:
3306 boot_msp34xx(btv,20); 3329 boot_msp34xx(btv,20);
3307 break; 3330 break;
@@ -3865,11 +3888,15 @@ void bttv_tda9880_setnorm(struct bttv *btv, int norm)
3865 if(norm==VIDEO_MODE_NTSC) { 3888 if(norm==VIDEO_MODE_NTSC) {
3866 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x957fff; 3889 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x957fff;
3867 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x957fff; 3890 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x957fff;
3891 bttv_tvcards[BTTV_BOARD_VOODOOTV_200].gpiomux[TVAUDIO_INPUT_TUNER]=0x957fff;
3892 bttv_tvcards[BTTV_BOARD_VOODOOTV_200].gpiomute=0x957fff;
3868 dprintk("bttv_tda9880_setnorm to NTSC\n"); 3893 dprintk("bttv_tda9880_setnorm to NTSC\n");
3869 } 3894 }
3870 else { 3895 else {
3871 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x947fff; 3896 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x947fff;
3872 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x947fff; 3897 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x947fff;
3898 bttv_tvcards[BTTV_BOARD_VOODOOTV_200].gpiomux[TVAUDIO_INPUT_TUNER]=0x947fff;
3899 bttv_tvcards[BTTV_BOARD_VOODOOTV_200].gpiomute=0x947fff;
3873 dprintk("bttv_tda9880_setnorm to PAL\n"); 3900 dprintk("bttv_tda9880_setnorm to PAL\n");
3874 } 3901 }
3875 /* set GPIO according */ 3902 /* set GPIO according */
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index b1fedb0f6431..284bdf2d2432 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -1218,7 +1218,14 @@ audio_mux(struct bttv *btv, int input, int mute)
1218 break; 1218 break;
1219 case TVAUDIO_INPUT_TUNER: 1219 case TVAUDIO_INPUT_TUNER:
1220 default: 1220 default:
1221 route.input = MSP_INPUT_DEFAULT; 1221 /* This is the only card that uses TUNER2, and afaik,
1222 is the only difference between the VOODOOTV_FM
1223 and VOODOOTV_200 */
1224 if (btv->c.type == BTTV_BOARD_VOODOOTV_200)
1225 route.input = MSP_INPUT(MSP_IN_SCART1, MSP_IN_TUNER2, \
1226 MSP_DSP_IN_TUNER, MSP_DSP_IN_TUNER);
1227 else
1228 route.input = MSP_INPUT_DEFAULT;
1222 break; 1229 break;
1223 } 1230 }
1224 route.output = MSP_OUTPUT_DEFAULT; 1231 route.output = MSP_OUTPUT_DEFAULT;
@@ -1253,7 +1260,7 @@ i2c_vidiocschan(struct bttv *btv)
1253 v4l2_std_id std = bttv_tvnorms[btv->tvnorm].v4l2_id; 1260 v4l2_std_id std = bttv_tvnorms[btv->tvnorm].v4l2_id;
1254 1261
1255 bttv_call_i2c_clients(btv, VIDIOC_S_STD, &std); 1262 bttv_call_i2c_clients(btv, VIDIOC_S_STD, &std);
1256 if (btv->c.type == BTTV_BOARD_VOODOOTV_FM) 1263 if (btv->c.type == BTTV_BOARD_VOODOOTV_FM || btv->c.type == BTTV_BOARD_VOODOOTV_200)
1257 bttv_tda9880_setnorm(btv,btv->tvnorm); 1264 bttv_tda9880_setnorm(btv,btv->tvnorm);
1258} 1265}
1259 1266
@@ -1323,6 +1330,7 @@ set_tvnorm(struct bttv *btv, unsigned int norm)
1323 1330
1324 switch (btv->c.type) { 1331 switch (btv->c.type) {
1325 case BTTV_BOARD_VOODOOTV_FM: 1332 case BTTV_BOARD_VOODOOTV_FM:
1333 case BTTV_BOARD_VOODOOTV_200:
1326 bttv_tda9880_setnorm(btv,norm); 1334 bttv_tda9880_setnorm(btv,norm);
1327 break; 1335 break;
1328 } 1336 }
diff --git a/drivers/media/video/bt8xx/bttv.h b/drivers/media/video/bt8xx/bttv.h
index f821ba69db99..0b4e9f03d0ed 100644
--- a/drivers/media/video/bt8xx/bttv.h
+++ b/drivers/media/video/bt8xx/bttv.h
@@ -170,6 +170,7 @@
170#define BTTV_BOARD_MACHTV_MAGICTV 0x90 170#define BTTV_BOARD_MACHTV_MAGICTV 0x90
171#define BTTV_BOARD_SSAI_SECURITY 0x91 171#define BTTV_BOARD_SSAI_SECURITY 0x91
172#define BTTV_BOARD_SSAI_ULTRASOUND 0x92 172#define BTTV_BOARD_SSAI_ULTRASOUND 0x92
173#define BTTV_BOARD_VOODOOTV_200 0x93
173 174
174/* more card-specific defines */ 175/* more card-specific defines */
175#define PT2254_L_CHANNEL 0x10 176#define PT2254_L_CHANNEL 0x10