亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bttv-cards.c

?? 電視卡驅動源碼!適用于FI1256/FI1216ME等PHILIPS高頻頭
?? C
?? 第 1 頁 / 共 5 頁
字號:
	.audiomux       = { 0 },
	.needs_tvaudio  = 0,
	.no_msp34xx     = 1,
	.pll            = PLL_28,
	.tuner_type     = -1,
},{
	/* Hiroshi Takekawa <sian@big.or.jp> */
	/* This card lacks subsystem ID */
	.name           = "AD-TVK503", /* 0x63 */
	.video_inputs   = 4,
	.audio_inputs   = 1,
	.tuner          = 0,
	.svhs           = 2,
	.gpiomask       = 0x001e8007,
	.muxsel         = { 2, 3, 1, 0 },
	/*                  Tuner, Radio, external, internal, off,  on */
	.audiomux       = { 0x08,  0x0f,  0x0a,     0x08,     0x0f, 0x08 },
	.needs_tvaudio  = 0,
	.no_msp34xx     = 1,
	.pll            = PLL_28,
	.tuner_type     = 2,
	.audio_hook	= adtvk503_audio,
},{

	/* ---- card 0x64 ---------------------------------- */
        .name           = "Hercules Smart TV Stereo",
        .video_inputs   = 4,
        .audio_inputs   = 1,
        .tuner          = 0,
        .svhs           = 2,
        .gpiomask       = 0x00,
        .muxsel         = { 2, 3, 1, 1 },
        .needs_tvaudio  = 1,
        .no_msp34xx     = 1,
        .pll            = PLL_28,
        .tuner_type     = 5,
	/* Notes:
	   - card lacks subsystem ID
	   - stereo variant w/ daughter board with tda9874a @0xb0
	   - Audio Routing: 
		always from tda9874 independent of GPIO (?)
		external line in: unknown
	   - Other chips: em78p156elp @ 0x96 (probably IR remote control)
	              hef4053 (instead 4052) for unknown function
	*/
},{
        .name           = "Pace TV & Radio Card",
        .video_inputs   = 4,
        .audio_inputs   = 1,
        .tuner          = 0,
        .svhs           = 2,
        .muxsel         = { 2, 3, 1, 1}, // Tuner, CVid, SVid, CVid over SVid connector
        .gpiomask       = 0,
        .no_tda9875     = 1,
        .no_tda7432     = 1,
        .tuner_type     = 1,
        .has_radio      = 1,
        .pll            = PLL_28,
        /* Bt878, Bt832, FI1246 tuner; no pci subsystem id
           only internal line out: (4pin header) RGGL
           Radio must be decoded by msp3410d (not routed through)*/
        //         .digital_mode   = DIGITAL_MODE_CAMERA, // todo!
},{
        /* Chris Willing <chris@vislab.usyd.edu.au> */
        .name           = "IVC-200",
        .video_inputs   = 1,
        .audio_inputs   = 0,
        .tuner          = -1,
        .tuner_type     = -1,
        .svhs           = -1,
        .gpiomask       = 0xdf,
        .muxsel         = { 2 },
        .pll            = PLL_28,
},{
	.name           = "Grand X-Guard / Trust 814PCI",
	.video_inputs   = 16,
        .audio_inputs   = 0,
        .tuner          = -1,
        .svhs           = -1,
	.tuner_type     = 4,
        .gpiomask2      = 0xff,
	.muxsel         = { 2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0 },
	.muxsel_hook    = xguard_muxsel,
	.no_msp34xx     = 1,
	.no_tda9875     = 1,
        .no_tda7432     = 1,
	.pll            = PLL_28,
},{

	/* ---- card 0x68 ---------------------------------- */
	.name           = "Nebula Electronics DigiTV",
	.svhs           = -1,
	.muxsel         = { 2, 3, 1, 0},
	.no_msp34xx     = 1,
	.no_tda9875     = 1,
	.no_tda7432     = 1,
	.pll            = PLL_28,
	.tuner_type     = -1,
	.has_dvb        = 1,
	.no_gpioirq     = 1,
},{
	/* Jorge Boncompte - DTI2 <jorge@dti2.net> */
	.name           = "ProVideo PV143",
        .video_inputs   = 4,
        .audio_inputs   = 0,
        .tuner          = -1,
        .svhs           = -1,
        .gpiomask       = 0,
        .muxsel         = { 2, 3, 1, 0 },
        .audiomux       = { 0 },
        .needs_tvaudio  = 0,
        .no_msp34xx     = 1,
        .pll            = PLL_28,
        .tuner_type     = -1,
},{
	/* M.Klahr@phytec.de */
	.name           = "PHYTEC VD-009-X1 MiniDIN (bt878)",
	.video_inputs   = 4,
	.audio_inputs   = 0,
	.tuner          = -1, /* card has no tuner */
	.svhs           = 3,
	.gpiomask       = 0x00, 
	.muxsel         = { 2, 3, 1, 0},
	.audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
	.needs_tvaudio  = 1,
	.pll            = PLL_28,
	.tuner_type     = -1,
},{
	.name           = "PHYTEC VD-009-X1 Combi (bt878)",
	.video_inputs   = 4,
	.audio_inputs   = 0,
	.tuner          = -1, /* card has no tuner */
	.svhs           = 3,
	.gpiomask       = 0x00,
	.muxsel         = { 2, 3, 1, 1},
	.audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
	.needs_tvaudio  = 1,
	.pll            = PLL_28,
	.tuner_type     = -1,
},{

	/* ---- card 0x6c ---------------------------------- */
	.name           = "PHYTEC VD-009 MiniDIN (bt878)",
	.video_inputs   = 10,
	.audio_inputs   = 0,
	.tuner          = -1, /* card has no tuner */
	.svhs           = 9,
	.gpiomask       = 0x00,
	.gpiomask2      = 0x03, /* gpiomask2 defines the bits used to switch audio
				   via the upper nibble of muxsel. here: used for
				   xternal video-mux */
	.muxsel         = { 0x02, 0x12, 0x22, 0x32, 0x03, 0x13, 0x23, 0x33, 0x01, 0x00 },
	.audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
	.needs_tvaudio  = 1,
	.pll            = PLL_28,
	.tuner_type     = -1,
},{
	.name           = "PHYTEC VD-009 Combi (bt878)",
	.video_inputs   = 10,
	.audio_inputs   = 0,
	.tuner          = -1, /* card has no tuner */
	.svhs           = 9,
	.gpiomask       = 0x00,
	.gpiomask2      = 0x03, /* gpiomask2 defines the bits used to switch audio
				   via the upper nibble of muxsel. here: used for
				   xternal video-mux */
	.muxsel         = { 0x02, 0x12, 0x22, 0x32, 0x03, 0x13, 0x23, 0x33, 0x01, 0x01 },
	.audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
	.needs_tvaudio  = 1,
	.pll            = PLL_28,
	.tuner_type     = -1,
},{
        .name           = "IVC-100",
        .video_inputs   = 4,
        .audio_inputs   = 0,
        .tuner          = -1,
        .tuner_type     = -1,
        .svhs           = -1,
        .gpiomask       = 0xdf,
        .muxsel         = { 2, 3, 1, 0 },
        .pll            = PLL_28,
},{
	/* IVC-120G - Alan Garfield <alan@fromorbit.com> */
	.name           = "IVC-120G",
	.video_inputs   = 16,
	.audio_inputs   = 0,    /* card has no audio */
	.tuner          = -1,   /* card has no tuner */
	.tuner_type     = -1,
	.svhs           = -1,   /* card has no svhs */
	.needs_tvaudio  = 0,
	.no_msp34xx     = 1,
	.no_tda9875     = 1,
	.no_tda7432     = 1,
	.gpiomask       = 0x00,
	.muxsel         = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 
			    0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 },
	.muxsel_hook    = ivc120_muxsel,
	.pll            = PLL_28,
},{

	/* ---- card 0x70 ---------------------------------- */
	.name           = "pcHDTV HD-2000 TV",
	.video_inputs   = 4,
	.audio_inputs   = 1,
	.tuner          = 0,
	.svhs           = 2,
	.muxsel         = { 2, 3, 1, 0},
	.tuner_type     = TUNER_PHILIPS_ATSC,
},{
	.name           = "Twinhan DST + clones",
	.no_msp34xx     = 1,
	.no_tda9875     = 1,
	.no_tda7432     = 1,
	.tuner_type     = TUNER_ABSENT,
	.no_video       = 1,
	.has_dvb        = 1,
},{
        .name           = "Winfast VC100",
	.video_inputs   = 3,
	.audio_inputs   = 0,
	.svhs           = 1,
	.tuner          = -1, // no tuner
	.muxsel         = { 3, 1, 1, 3}, // Vid In, SVid In, Vid over SVid in connector
        .no_msp34xx     = 1,
        .no_tda9875     = 1,
        .no_tda7432     = 1,
        .tuner_type     = TUNER_ABSENT,
        .no_video       = 1,
	.pll            = PLL_28,
},{
	.name           = "Teppro TEV-560/InterVision IV-560",
	.video_inputs   = 3,
	.audio_inputs   = 1,
	.tuner          = 0,
	.svhs           = 2,
	.gpiomask       = 3,
	.muxsel         = { 2, 3, 1, 1},
	.audiomux       = { 1, 1, 1, 1, 0},
	.needs_tvaudio  = 1,
	.tuner_type     = TUNER_PHILIPS_PAL,
	.pll            = PLL_35,
}};

const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards);

/* ----------------------------------------------------------------------- */

static unsigned char eeprom_data[256];

/*
 * identify card
 */
void __devinit bttv_idcard(struct bttv *btv)
{
	unsigned int gpiobits;
	int i,type;
	unsigned short tmp;

	/* read PCI subsystem ID */
	pci_read_config_word(btv->c.pci, PCI_SUBSYSTEM_ID, &tmp);
	btv->cardid = tmp << 16;
	pci_read_config_word(btv->c.pci, PCI_SUBSYSTEM_VENDOR_ID, &tmp);
	btv->cardid |= tmp;

	if (0 != btv->cardid && 0xffffffff != btv->cardid) {
		/* look for the card */
		for (type = -1, i = 0; cards[i].id != 0; i++)
			if (cards[i].id  == btv->cardid)
				type = i;
		
		if (type != -1) {
			/* found it */
			printk(KERN_INFO "bttv%d: detected: %s [card=%d], "
			       "PCI subsystem ID is %04x:%04x\n",
			       btv->c.nr,cards[type].name,cards[type].cardnr,
			       btv->cardid & 0xffff,
			       (btv->cardid >> 16) & 0xffff);
			btv->c.type = cards[type].cardnr;
		} else {
			/* 404 */
			printk(KERN_INFO "bttv%d: subsystem: %04x:%04x (UNKNOWN)\n",
			       btv->c.nr, btv->cardid & 0xffff,
			       (btv->cardid >> 16) & 0xffff);
			printk(KERN_DEBUG "please mail id, board name and "
			       "the correct card= insmod option to kraxel@bytesex.org\n");
		}
	} 

	/* let the user override the autodetected type */
	if (card[btv->c.nr] < bttv_num_tvcards)
		btv->c.type=card[btv->c.nr];
	
	/* print which card config we are using */
	printk(KERN_INFO "bttv%d: using: %s [card=%d,%s]\n",btv->c.nr,
	       bttv_tvcards[btv->c.type].name, btv->c.type,
	       card[btv->c.nr] < bttv_num_tvcards
	       ? "insmod option" : "autodetected");

	/* overwrite gpio stuff ?? */
	if (UNSET == audioall && UNSET == audiomux[0])
		return;

	if (UNSET != audiomux[0]) {
		gpiobits = 0;
		for (i = 0; i < 5; i++) {
			bttv_tvcards[btv->c.type].audiomux[i] = audiomux[i];
			gpiobits |= audiomux[i];
		}
	} else {
		gpiobits = audioall;
		for (i = 0; i < 5; i++) {
			bttv_tvcards[btv->c.type].audiomux[i] = audioall;
		}
	}
	bttv_tvcards[btv->c.type].gpiomask = (UNSET != gpiomask) ? gpiomask : gpiobits;
	printk(KERN_INFO "bttv%d: gpio config override: mask=0x%x, mux=",
	       btv->c.nr,bttv_tvcards[btv->c.type].gpiomask);
	for (i = 0; i < 5; i++) {
		printk("%s0x%x", i ? "," : "", bttv_tvcards[btv->c.type].audiomux[i]);
	}
	printk("\n");
}

/*
 * (most) board specific initialisations goes here
 */

/* Some Modular Technology cards have an eeprom, but no subsystem ID */
void identify_by_eeprom(struct bttv *btv, unsigned char eeprom_data[256])
{
	int type = -1;
	
	if (0 == strncmp(eeprom_data,"GET MM20xPCTV",13))
		type = BTTV_MODTEC_205;
	else if (0 == strncmp(eeprom_data+20,"Picolo",7))
		type = BTTV_EURESYS_PICOLO;
	else if (eeprom_data[0] == 0x84 && eeprom_data[2]== 0)
                type = BTTV_HAUPPAUGE; /* old bt848 */

	if (-1 != type) {
		btv->c.type = type;
		printk("bttv%d: detected by eeprom: %s [card=%d]\n",
		       btv->c.nr, bttv_tvcards[btv->c.type].name, btv->c.type);
	}
}

static void flyvideo_gpio(struct bttv *btv)
{ 
	int gpio,has_remote,has_radio,is_capture_only,is_lr90,has_tda9820_tda9821;
	int tuner=-1,ttype;

	gpio_inout(0xffffff, 0);
	udelay(8);  // without this we would see the 0x1800 mask
	gpio = gpio_read();
	/* FIXME: must restore OUR_EN ??? */

	// all cards provide GPIO info, some have an additional eeprom
	// LR50: GPIO coding can be found lower right CP1 .. CP9
	//       CP9=GPIO23 .. CP1=GPIO15; when OPEN, the corresponding GPIO reads 1.
	//       GPIO14-12: n.c.
	// LR90: GP9=GPIO23 .. GP1=GPIO15 (right above the bt878)
	
	// lowest 3 bytes are remote control codes (no handshake needed)
        // xxxFFF: No remote control chip soldered
        // xxxF00(LR26/LR50), xxxFE0(LR90): Remote control chip (LVA001 or CF45) soldered 
	// Note: Some bits are Audio_Mask !

	ttype=(gpio&0x0f0000)>>16;
	switch(ttype) {
	case 0x0: tuner=2; // NTSC, e.g. TPI8NSR11P
		break;
        case 0x2: tuner=39;// LG NTSC (newer TAPC series) TAPC-H701P
		break;
	case 0x4: tuner=5; // Philips PAL TPI8PSB02P, TPI8PSB12P, TPI8PSB12D or FI1216, FM1216
		break;
	case 0x6: tuner=37; // LG PAL (newer TAPC series) TAPC-G702P
		break;
	case 0xC: tuner=3; // Philips SECAM(+PAL) FQ1216ME or FI1216MF
		break;
	default:
		printk(KERN_INFO "bttv%d: FlyVideo_gpio: unknown tuner type.\n", btv->c.nr);
	}

	has_remote          =   gpio & 0x800000;
	has_radio	    =   gpio & 0x400000;
	//   unknown                   0x200000;
	//   unknown2                  0x100000;
        is_capture_only     = !(gpio & 0x008000); //GPIO15
	has_tda9820_tda9821 = !(gpio & 0x004000);
	is_lr90             = !(gpio & 0x002000); // else LR26/LR50 (LR38/LR51 f. capture only)
        //		        gpio & 0x001000 // output bit for audio routing

	if(is_capture_only) 
		tuner=4; // No tuner present 

	printk(KERN_INFO "bttv%d: FlyVideo Radio=%s RemoteControl=%s Tuner=%d gpio=0x%06x\n", 
	       btv->c.nr, has_radio? "yes":"no ", has_remote? "yes":"no ", tuner, gpio); 
	printk(KERN_INFO "bttv%d: FlyVideo  LR90=%s tda9821/tda9820=%s capture_only=%s\n",
		btv->c.nr, is_lr90?"yes":"no ", has_tda9820_tda9821?"yes":"no ", 
		is_capture_only?"yes":"no ");

	if(tuner!= -1) // only set if known tuner autodetected, else let insmod option through
		btv->tuner_type = tuner;
	btv->has_radio = has_radio;  

	// LR90 Audio Routing is done by 2 hef4052, so Audio_Mask has 4 bits: 0x001c80
        // LR26/LR50 only has 1 hef4052, Audio_Mask 0x000c00
	// Audio options: from tuner, from tda9821/tda9821(mono,stereo,sap), from tda9874, ext., mute
	if(has_tda9820_tda9821) btv->audio_hook = lt9415_audio;
	//todo: if(has_tda9874) btv->audio_hook = fv2000s_audio;
}

int miro_tunermap[] = { 0,6,2,3,   4,5,6,0,  3,0,4,5,  5,2,16,1,
			14,2,17,1, 4,1,4,3,  1,2,16,1, 4,4,4,4 };
int miro_fmtuner[]  = { 0,0,0,0,   0,0,0,0,  0,0,0,0,  0,0,0,1,
			1,1,1,1,   1,1,1,0,  0,0,0,0,  0,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本福利一区二区| 7777精品伊人久久久大香线蕉 | 午夜精品久久久久影视| 精品噜噜噜噜久久久久久久久试看| 国产成人免费9x9x人网站视频| 亚洲最新在线观看| 欧美激情一区二区三区| 欧美日韩精品一区二区| 成人久久视频在线观看| 日韩av中文在线观看| 国产精品第13页| 精品免费99久久| 色婷婷av一区二区三区软件 | 亚洲综合视频在线| 国产日韩综合av| 欧美一区二区三区思思人| 97se亚洲国产综合自在线观| 韩国女主播一区| 亚洲成av人在线观看| 国产精品国产三级国产三级人妇| 日韩欧美一区二区免费| 精品视频在线看| 99国内精品久久| 成人污视频在线观看| 国产一区二区在线电影| 强制捆绑调教一区二区| 五月激情综合婷婷| 亚洲午夜久久久久久久久电影网| 亚洲欧洲成人精品av97| 2023国产精品| 精品成人a区在线观看| 在线电影一区二区三区| 欧美色图在线观看| 色呦呦一区二区三区| 91色视频在线| 91猫先生在线| 91麻豆国产福利在线观看| www.66久久| www.亚洲色图| 91原创在线视频| 色综合咪咪久久| 91蝌蚪porny| 色噜噜夜夜夜综合网| 91福利社在线观看| 在线亚洲精品福利网址导航| 色欧美乱欧美15图片| 色综合久久久久久久久| 欧美影院一区二区三区| 欧美日韩精品一区二区在线播放| 在线精品视频免费播放| 日本高清无吗v一区| 在线免费观看成人短视频| 在线视频一区二区三| 在线日韩国产精品| 欧美日韩国产大片| 3atv一区二区三区| 欧美成人r级一区二区三区| 日韩西西人体444www| 欧美电视剧在线看免费| 久久在线免费观看| 国产精品成人在线观看 | 韩国精品主播一区二区在线观看 | 日韩毛片精品高清免费| 亚洲综合一区二区精品导航| 午夜国产精品影院在线观看| 日本vs亚洲vs韩国一区三区二区 | 成人性生交大片| www.色综合.com| 欧美性欧美巨大黑白大战| 8x8x8国产精品| 精品福利在线导航| 综合精品久久久| 日本欧美在线看| 成人av网站在线| 欧美在线色视频| 久久嫩草精品久久久精品| 136国产福利精品导航| 午夜精品一区二区三区电影天堂 | 911精品国产一区二区在线| 精品久久久久久最新网址| 亚洲欧洲av一区二区三区久久| 亚洲狠狠爱一区二区三区| 免费看黄色91| 91天堂素人约啪| 欧美一区二区在线视频| 国产精品网曝门| 偷拍亚洲欧洲综合| 国产精品资源网| 欧美日韩激情一区二区三区| 久久蜜桃av一区精品变态类天堂 | 欧美亚洲高清一区| 亚洲精品一区二区三区蜜桃下载 | 97久久精品人人爽人人爽蜜臀| 欧美日韩国产区一| 欧美激情一区三区| 日韩精品电影一区亚洲| 本田岬高潮一区二区三区| 欧美军同video69gay| 国产精品网站在线| 久久黄色级2电影| 欧美怡红院视频| 国产精品无人区| 精品无码三级在线观看视频| 在线亚洲一区二区| 中文一区在线播放| 久久成人综合网| 欧美午夜一区二区三区| 国产精品素人一区二区| 狠狠色狠狠色综合| 欧美一区二区三区小说| 一区二区三区国产| 97精品国产露脸对白| 久久女同性恋中文字幕| 日本va欧美va欧美va精品| 欧美视频一区二| 综合久久久久久久| 成人av综合在线| 精品国产乱码久久久久久夜甘婷婷 | 日韩精品一区二区三区在线观看| 亚洲精品成人精品456| 国产精品乡下勾搭老头1| 欧美一级黄色片| 亚洲成人精品影院| 欧洲精品在线观看| 亚洲色图丝袜美腿| av在线免费不卡| 国产精品色婷婷| 国产福利91精品一区二区三区| 日韩欧美国产午夜精品| 日韩成人精品在线| 9191久久久久久久久久久| 亚洲国产一区在线观看| 色综合婷婷久久| 亚洲人被黑人高潮完整版| 成人动漫中文字幕| 久久精品欧美日韩| 国产精品亚洲人在线观看| 26uuu国产电影一区二区| 青青草国产精品97视觉盛宴| 91精品国产免费久久综合| 午夜国产精品一区| 欧美精品在线观看一区二区| 亚洲成在线观看| 欧美三级电影在线观看| 亚洲一区二区免费视频| 欧美男生操女生| 午夜久久久影院| 日韩欧美美女一区二区三区| 美国三级日本三级久久99| 日韩小视频在线观看专区| 狠狠色丁香婷婷综合久久片| 久久久久久日产精品| 久久电影国产免费久久电影| www一区二区| 国产黄色91视频| 中文字幕一区二区5566日韩| 91同城在线观看| 亚洲18色成人| 欧美刺激午夜性久久久久久久| 国产麻豆成人精品| 亚洲欧洲日产国码二区| 欧美亚洲综合网| 免费成人在线网站| 久久久久久久久久久电影| 成人aaaa免费全部观看| 亚洲欧美成人一区二区三区| 欧美三级电影在线观看| 精品一二三四在线| 欧美国产精品久久| 欧美在线观看视频一区二区 | 欧美美女一区二区| 国模娜娜一区二区三区| 中文字幕一区二区三区不卡| 91福利在线免费观看| 精品一区二区av| 一区二区三区四区不卡视频| 91麻豆精品久久久久蜜臀| 国产mv日韩mv欧美| 亚洲欧美另类久久久精品2019| 欧美日韩视频在线一区二区| 美女www一区二区| 中文字幕日韩欧美一区二区三区| 欧美怡红院视频| 国产精品一区二区久久精品爱涩 | 一级精品视频在线观看宜春院 | 国产xxx精品视频大全| 亚洲美女淫视频| 精品少妇一区二区三区日产乱码| 国产精品一品二品| 亚洲va在线va天堂| 国产清纯白嫩初高生在线观看91| 欧美在线观看一区| 成人综合婷婷国产精品久久免费| 亚洲自拍偷拍九九九| 欧美精品一区二区三区蜜桃| 色综合久久中文综合久久牛| 久久av老司机精品网站导航| 亚洲免费观看在线视频| 精品国产不卡一区二区三区| 欧美中文字幕一区|