Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+30 −3
Original line number Diff line number Diff line
@@ -178,8 +178,8 @@ static struct CARD {
	/* this seems to happen as well ... */
	{ 0xff1211bd, BTTV_BOARD_PINNACLE,      "Pinnacle PCTV" },

	{ 0x3000121a, BTTV_BOARD_VOODOOTV_FM,   "3Dfx VoodooTV FM/ VoodooTV 200" },
	{ 0x263710b4, 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" },
	{ 0x3060121a, BTTV_BOARD_STB2,	  "3Dfx VoodooTV 100/ STB OEM" },

	{ 0x3000144f, BTTV_BOARD_MAGICTVIEW063, "(Askey Magic/others) TView99 CPH06x" },
@@ -1517,7 +1517,29 @@ struct tvcard bttv_tvcards[] = {

	/* ---- card 0x44 ---------------------------------- */
	[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
		* sound problems with this card. */
		.video_inputs   = 4,
@@ -3302,6 +3324,7 @@ void __devinit bttv_init_card1(struct bttv *btv)
	case BTTV_BOARD_HAUPPAUGE878:
		boot_msp34xx(btv,5);
		break;
	case BTTV_BOARD_VOODOOTV_200:
	case BTTV_BOARD_VOODOOTV_FM:
		boot_msp34xx(btv,20);
		break;
@@ -3865,11 +3888,15 @@ void bttv_tda9880_setnorm(struct bttv *btv, int norm)
	if(norm==VIDEO_MODE_NTSC) {
		bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=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");
	}
	else {
		bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=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");
	}
	/* set GPIO according */
+10 −2
Original line number Diff line number Diff line
@@ -1218,6 +1218,13 @@ audio_mux(struct bttv *btv, int input, int mute)
			break;
		case TVAUDIO_INPUT_TUNER:
		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;
		}
@@ -1253,7 +1260,7 @@ i2c_vidiocschan(struct bttv *btv)
	v4l2_std_id std = bttv_tvnorms[btv->tvnorm].v4l2_id;

	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);
}

@@ -1323,6 +1330,7 @@ set_tvnorm(struct bttv *btv, unsigned int norm)

	switch (btv->c.type) {
	case BTTV_BOARD_VOODOOTV_FM:
	case BTTV_BOARD_VOODOOTV_200:
		bttv_tda9880_setnorm(btv,norm);
		break;
	}
+1 −0
Original line number Diff line number Diff line
@@ -170,6 +170,7 @@
#define BTTV_BOARD_MACHTV_MAGICTV          0x90
#define BTTV_BOARD_SSAI_SECURITY	   0x91
#define BTTV_BOARD_SSAI_ULTRASOUND	   0x92
#define BTTV_BOARD_VOODOOTV_200		   0x93

/* more card-specific defines */
#define PT2254_L_CHANNEL 0x10