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

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

?? tuner.c

?? 電腦主機的PCI電視卡的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
	buf[2]=0x86; // LOGC	buf[3]=0x0f; //reserved	buf[4]=0x1f;	buf[5]=(lo2n-1) | (lo2a<<5); 	if(rfin >400*1000*1000)                buf[6]=0xe4;        else                buf[6]=0xf4; // set PKEN per rev 1.2 	buf[7]=8+xogc;	buf[8]=0xc3; //reserved	buf[9]=0x4e; //reserved	buf[10]=0xec; //reserved	buf[11]=(lo2num&0xff);	buf[12]=(lo2num>>8) |0x80; // Lo2RST	return 0;}static int mt2032_check_lo_lock(struct i2c_client *c){	int try,lock=0;	unsigned char buf[2];	for(try=0;try<10;try++) {		buf[0]=0x0e;		i2c_master_send(c,buf,1);		i2c_master_recv(c,buf,1);		dprintk("mt2032 Reg.E=0x%02x\n",buf[0]);		lock=buf[0] &0x06;				if (lock==6)			break;				dprintk("mt2032: pll wait 1ms for lock (0x%2x)\n",buf[0]);		udelay(1000);	}        return lock;}static int mt2032_optimize_vco(struct i2c_client *c,int sel,int lock){	unsigned char buf[2];	int tad1;	buf[0]=0x0f;	i2c_master_send(c,buf,1);	i2c_master_recv(c,buf,1);	dprintk("mt2032 Reg.F=0x%02x\n",buf[0]);	tad1=buf[0]&0x07;	if(tad1 ==0) return lock;	if(tad1 ==1) return lock;	if(tad1==2) {		if(sel==0) 			return lock;		else sel--;	}	else {		if(sel<4)			sel++;		else			return lock;	}	dprintk("mt2032 optimize_vco: sel=%d\n",sel);	buf[0]=0x0f;	buf[1]=sel;        i2c_master_send(c,buf,2);	lock=mt2032_check_lo_lock(c);	return lock;}static void mt2032_set_if_freq(struct i2c_client *c, unsigned int rfin,			       unsigned int if1, unsigned int if2,			       unsigned int from, unsigned int to){	unsigned char buf[21];	int lint_try,ret,sel,lock=0;	struct tuner *t = i2c_get_clientdata(c);	dprintk("mt2032_set_if_freq rfin=%d if1=%d if2=%d from=%d to=%d\n",rfin,if1,if2,from,to);        buf[0]=0;        ret=i2c_master_send(c,buf,1);        i2c_master_recv(c,buf,21);	buf[0]=0;	ret=mt2032_compute_freq(rfin,if1,if2,from,to,&buf[1],&sel,t->xogc);	if (ret<0)		return;        // send only the relevant registers per Rev. 1.2        buf[0]=0;        ret=i2c_master_send(c,buf,4);        buf[5]=5;        ret=i2c_master_send(c,buf+5,4);        buf[11]=11;        ret=i2c_master_send(c,buf+11,3);        if(ret!=3)                printk("mt2032_set_if_freq failed with %d\n",ret);	// wait for PLLs to lock (per manual), retry LINT if not.	for(lint_try=0; lint_try<2; lint_try++) {		lock=mt2032_check_lo_lock(c);				if(optimize_vco)			lock=mt2032_optimize_vco(c,sel,lock);		if(lock==6) break;				printk("mt2032: re-init PLLs by LINT\n"); 		buf[0]=7; 		buf[1]=0x80 +8+t->xogc; // set LINT to re-init PLLs		i2c_master_send(c,buf,2);		mdelay(10);		buf[1]=8+t->xogc;		i2c_master_send(c,buf,2);        }	if (lock!=6)		printk("MT2032 Fatal Error: PLLs didn't lock.\n");	buf[0]=2;	buf[1]=0x20; // LOGC for optimal phase noise	ret=i2c_master_send(c,buf,2);	if (ret!=2)		printk("mt2032_set_if_freq2 failed with %d\n",ret);}static void mt2032_set_tv_freq(struct i2c_client *c, unsigned int freq){	struct tuner *t = i2c_get_clientdata(c);	int if2,from,to;	// signal bandwidth and picture carrier	if (t->mode == VIDEO_MODE_NTSC) {		from=40750*1000;		to=46750*1000;		if2=45750*1000; 	} else {		// Pal 		from=32900*1000;		to=39900*1000;		if2=38900*1000;	}        mt2032_set_if_freq(c, freq*62500 /* freq*1000*1000/16 */,			   1090*1000*1000, if2, from, to);}static void mt2032_set_radio_freq(struct i2c_client *c, unsigned int freq){	struct tuner *t = i2c_get_clientdata(c);	int if2 = t->radio_if2;	// per Manual for FM tuning: first if center freq. 1085 MHz        mt2032_set_if_freq(c, freq*62500 /* freq*1000*1000/16 */,			   1085*1000*1000,if2,if2,if2);}// Initalization as described in "MT203x Programming Procedures", Rev 1.2, Feb.2001static int mt2032_init(struct i2c_client *c){	struct tuner *t = i2c_get_clientdata(c);        unsigned char buf[21];        int ret,xogc,xok=0;	// Initialize Registers per spec.        buf[1]=2; // Index to register 2        buf[2]=0xff;        buf[3]=0x0f;        buf[4]=0x1f;        ret=i2c_master_send(c,buf+1,4);        buf[5]=6; // Index register 6        buf[6]=0xe4;        buf[7]=0x8f;        buf[8]=0xc3;        buf[9]=0x4e;        buf[10]=0xec;        ret=i2c_master_send(c,buf+5,6);        buf[12]=13;  // Index register 13        buf[13]=0x32;        ret=i2c_master_send(c,buf+12,2);        // Adjust XOGC (register 7), wait for XOK        xogc=7;        do {		dprintk("mt2032: xogc = 0x%02x\n",xogc&0x07);                mdelay(10);                buf[0]=0x0e;                i2c_master_send(c,buf,1);                i2c_master_recv(c,buf,1);                xok=buf[0]&0x01;                dprintk("mt2032: xok = 0x%02x\n",xok);                if (xok == 1) break;                xogc--;                dprintk("mt2032: xogc = 0x%02x\n",xogc&0x07);                if (xogc == 3) {                        xogc=4; // min. 4 per spec                        break;                }                buf[0]=0x07;                buf[1]=0x88 + xogc;                ret=i2c_master_send(c,buf,2);                if (ret!=2)                        printk("mt2032_init failed with %d\n",ret);        } while (xok != 1 );	t->xogc=xogc;	t->tv_freq    = mt2032_set_tv_freq;	t->radio_freq = mt2032_set_radio_freq;        return(1);}static void mt2050_set_if_freq(struct i2c_client *c,unsigned int freq, unsigned int if2){	unsigned int if1=1218*1000*1000;	unsigned int f_lo1,f_lo2,lo1,lo2,f_lo1_modulo,f_lo2_modulo,num1,num2,div1a,div1b,div2a,div2b;	int ret;	unsigned char buf[6];		dprintk("mt2050_set_if_freq freq=%d\n",freq);		f_lo1=freq+if1;	f_lo1=(f_lo1/1000000)*1000000;		f_lo2=f_lo1-freq-if2;	f_lo2=(f_lo2/50000)*50000;		lo1=f_lo1/4000000;	lo2=f_lo2/4000000;		f_lo1_modulo= f_lo1-(lo1*4000000);	f_lo2_modulo= f_lo2-(lo2*4000000);		num1=4*f_lo1_modulo/4000000;	num2=4096*(f_lo2_modulo/1000)/4000;		// todo spurchecks		div1a=(lo1/12)-1;	div1b=lo1-(div1a+1)*12;		div2a=(lo2/8)-1;	div2b=lo2-(div2a+1)*8;		dprintk("lo1 lo2 = %d %d\n", lo1, lo2);        dprintk("num1 num2 div1a div1b div2a div2b= %x %x %x %x %x %x\n",num1,num2,div1a,div1b,div2a,div2b);			buf[0]=1;	buf[1]= 4*div1b + num1;	if(freq<275*1000*1000) buf[1] = buf[1]|0x80;		buf[2]=div1a;	buf[3]=32*div2b + num2/256;	buf[4]=num2-(num2/256)*256;	buf[5]=div2a;	if(num2!=0) buf[5]=buf[5]|0x40;		if(debug) {		int i;		printk("bufs is: ");		for(i=0;i<6;i++)			printk("%x ",buf[i]);		printk("\n");	}		ret=i2c_master_send(c,buf,6);        if (ret!=6)                printk("mt2050_set_if_freq failed with %d\n",ret);}static void mt2050_set_tv_freq(struct i2c_client *c, unsigned int freq){	struct tuner *t = i2c_get_clientdata(c);	unsigned int if2;		if (t->mode == VIDEO_MODE_NTSC) {                if2=45750*1000;        } else {                // Pal                if2=38900*1000;        }	mt2050_set_if_freq(c,freq*62500,if2);}static int mt2050_init(struct i2c_client *c){	struct tuner *t = i2c_get_clientdata(c);	unsigned char buf[1];	int ret;		buf[0]=6;	buf[1]=0x10;	ret=i2c_master_send(c,buf,2); //  power		buf[0]=0x0f;	buf[1]=0x0f;	ret=i2c_master_send(c,buf,2); // m1lo		buf[0]=0x0d;	ret=i2c_master_send(c,buf,1);	i2c_master_recv(c,buf,1);		dprintk("mt2050: sro is %x\n",buf[0]);	t->tv_freq = mt2050_set_tv_freq;	return 0;}static int microtune_init(struct i2c_client *c){	struct tuner *t = i2c_get_clientdata(c);	char *name;        unsigned char buf[21];	int company_code;	        buf[0] = 0;	t->tv_freq = NULL;	t->radio_freq = NULL;	name = "unknown";        i2c_master_send(c,buf,1);        i2c_master_recv(c,buf,21);        if(debug) {                int i;                printk(KERN_DEBUG "tuner: MT2032 hexdump:\n");                for(i=0;i<21;i++) {                        printk(" %02x",buf[i]);                        if(((i+1)%8)==0) printk(" ");                        if(((i+1)%16)==0) printk("\n ");                }                printk("\n ");        }	company_code = buf[0x11] << 8 | buf[0x12];        printk("tuner: microtune: companycode=%04x part=%02x rev=%02x\n",	       company_code,buf[0x13],buf[0x14]);        if (company_code != 0x4d54) {		printk("tuner: microtune: unknown companycode\n");		return 0;	}	if (buf[0x13] < ARRAY_SIZE(microtune_part) &&	    NULL != microtune_part[buf[0x13]])		name = microtune_part[buf[0x13]];	switch (buf[0x13]) {	case MT2032:		mt2032_init(c);		break;	case MT2050:		mt2050_init(c);		break;	default:		printk("tuner: microtune %s found, not (yet?) supported, sorry :-/\n",		       name);                return 0;        }	printk("tuner: microtune %s found, OK\n",name);	return 0;}/* ---------------------------------------------------------------------- */static void default_set_tv_freq(struct i2c_client *c, unsigned int freq){	struct tuner *t = i2c_get_clientdata(c);	u8 config;	u16 div;	struct tunertype *tun;        unsigned char buffer[4];	int rc;	tun=&tuners[t->type];	if (freq < tun->thresh1) 		config = tun->VHF_L;	else if (freq < tun->thresh2) 		config = tun->VHF_H;	else		config = tun->UHF;	/* tv norm specific stuff for multi-norm tuners */	switch (t->type) {	case TUNER_PHILIPS_SECAM: // FI1216MF		/* 0x01 -> ??? no change ??? */		/* 0x02 -> PAL BDGHI / SECAM L */		/* 0x04 -> ??? PAL others / SECAM others ??? */		config &= ~0x02;		if (t->mode == VIDEO_MODE_SECAM)			config |= 0x02;		break;	case TUNER_TEMIC_4046FM5:		config &= ~0x0f;		switch (pal[0]) {		case 'i':		case 'I':			config |= TEMIC_SET_PAL_I;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
337p粉嫩大胆色噜噜噜噜亚洲| av中文字幕不卡| 一区视频在线播放| 欧美国产成人精品| 欧美精彩视频一区二区三区| 欧美精品一区二区三区四区| 日韩片之四级片| 久久亚洲春色中文字幕久久久| 精品成人在线观看| 久久久久久久精| 最新欧美精品一区二区三区| 亚洲免费av在线| 午夜不卡在线视频| 久久91精品国产91久久小草| 国产精品原创巨作av| 99精品在线观看视频| 欧美日韩综合不卡| 精品捆绑美女sm三区| 日本一区免费视频| 一区二区三区在线免费视频| 午夜精品视频一区| 精品无人码麻豆乱码1区2区| 成人av免费在线播放| 欧美色图12p| 久久久亚洲国产美女国产盗摄| 国产精品人人做人人爽人人添| 亚洲精品一二三| 免费观看91视频大全| 成人性生交大片免费看中文网站| 97久久久精品综合88久久| 欧美日韩中文精品| 国产三级久久久| 亚洲一区国产视频| 国产风韵犹存在线视精品| 91免费在线看| 久久伊99综合婷婷久久伊| 综合自拍亚洲综合图不卡区| 免费成人在线视频观看| 国产91露脸合集magnet | 亚洲国产精品精华液ab| 国产精品成人午夜| 久久电影网站中文字幕| 91免费国产在线| 久久这里只有精品6| 午夜精品久久久| 不卡av在线网| 久久综合久久99| 午夜精品视频在线观看| 色婷婷综合在线| 国产女主播一区| 日本午夜精品视频在线观看| 99re这里只有精品首页| 久久久综合视频| 五月婷婷欧美视频| 91黄色小视频| 亚洲欧洲国产日韩| 成人午夜视频福利| 337p粉嫩大胆色噜噜噜噜亚洲 | 久久精品欧美一区二区三区不卡| 一区二区三区中文免费| 成人av高清在线| 国产欧美一区二区精品婷婷| 蜜臀av一区二区| 制服丝袜亚洲网站| 亚洲福利一二三区| 欧美性高清videossexo| 亚洲免费电影在线| 91久久一区二区| 亚洲免费在线播放| 91啦中文在线观看| 亚洲日本va在线观看| 不卡的av网站| 亚洲视频一区在线| 91小视频在线观看| 亚洲视频一区二区在线观看| 99精品视频一区二区三区| 国产精品视频第一区| 不卡av免费在线观看| 亚洲乱码国产乱码精品精的特点| 99久久久久久| 一区二区理论电影在线观看| 日本乱人伦aⅴ精品| 亚洲国产欧美在线| 7777精品伊人久久久大香线蕉 | 3d动漫精品啪啪一区二区竹菊| 一区二区三区在线高清| 欧亚洲嫩模精品一区三区| 亚洲精品第一国产综合野| 欧美午夜片在线看| 日本美女一区二区| 久久女同精品一区二区| 成人性生交大片免费看中文| 亚洲人成人一区二区在线观看| 色综合久久综合| 亚洲午夜久久久| 欧美一区二区国产| 国产91对白在线观看九色| 最新国产精品久久精品| 欧美美女一区二区| 国产伦精品一区二区三区免费 | 国产婷婷一区二区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | gogogo免费视频观看亚洲一| 亚洲欧美激情插 | 26uuu精品一区二区| 成人黄页毛片网站| 五月天精品一区二区三区| 久久久噜噜噜久久中文字幕色伊伊 | 在线电影国产精品| 国产一区二区三区在线观看精品 | 久久欧美中文字幕| 色欧美片视频在线观看在线视频| 日韩av网站在线观看| 中文字幕乱码亚洲精品一区| 欧美日韩国产首页在线观看| 国产精品69毛片高清亚洲| 亚洲午夜激情网站| 日本一区二区三区在线观看| 欧美日韩精品福利| 成人精品视频.| 久久精品国产77777蜜臀| 亚洲精品美国一| 久久精品夜色噜噜亚洲aⅴ| 欧美综合色免费| 成人福利视频网站| 久久福利资源站| 污片在线观看一区二区| 亚洲日韩欧美一区二区在线| 欧美videos中文字幕| 在线观看国产91| 成人性视频免费网站| 国产一本一道久久香蕉| 蜜臀国产一区二区三区在线播放 | 欧美成人伊人久久综合网| 欧美三级午夜理伦三级中视频| 成人激情免费电影网址| 国产在线精品不卡| 蜜臀av一区二区| 免费人成在线不卡| 秋霞影院一区二区| 婷婷久久综合九色综合伊人色| 18成人在线观看| 国产精品欧美精品| 国产嫩草影院久久久久| 久久蜜桃香蕉精品一区二区三区| 日韩一级精品视频在线观看| 欧美日韩一区二区三区不卡| 日本道色综合久久| 色综合天天天天做夜夜夜夜做| 成人三级伦理片| www.亚洲在线| 91网站黄www| 色老综合老女人久久久| caoporn国产精品| av成人免费在线| 色哟哟亚洲精品| 91福利国产成人精品照片| 在线观看91精品国产入口| 在线免费观看日本欧美| 欧洲精品中文字幕| 制服丝袜av成人在线看| 91精品免费在线| 日韩欧美卡一卡二| 精品国产乱码久久久久久闺蜜| 精品三级av在线| 国产日韩欧美精品电影三级在线 | 亚洲资源中文字幕| 亚洲综合图片区| 天堂一区二区在线免费观看| 日韩精品一级二级 | 成人国产电影网| 色婷婷综合久久久久中文一区二区 | 成人av电影免费在线播放| av成人免费在线| 欧美日韩国产另类不卡| 日韩欧美精品在线视频| 国产亚洲成av人在线观看导航| 国产精品久久久久毛片软件| 亚洲综合色婷婷| 极品少妇xxxx精品少妇| 成人v精品蜜桃久久一区| 欧美综合一区二区三区| 精品国产麻豆免费人成网站| 国产精品久久久久久久久果冻传媒 | 日韩一二三区视频| 亚洲国产电影在线观看| 亚洲综合清纯丝袜自拍| 激情都市一区二区| 一道本成人在线| 精品国产一区二区在线观看| 欧美激情自拍偷拍| 亚洲另类一区二区| 久久精工是国产品牌吗| 97se亚洲国产综合自在线观| 日韩一区二区三区观看| 一区二区三区视频在线观看| 国产综合色精品一区二区三区| 在线视频中文字幕一区二区| 久久久精品欧美丰满| 午夜国产精品一区|