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

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

?? cx88-dvb.c

?? linux 內核源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * * device driver for Conexant 2388x based TV cards * MPEG Transport Stream (DVB) routines * * (c) 2004, 2005 Chris Pascoe <c.pascoe@itee.uq.edu.au> * (c) 2004 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs] * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include <linux/module.h>#include <linux/init.h>#include <linux/device.h>#include <linux/fs.h>#include <linux/kthread.h>#include <linux/file.h>#include <linux/suspend.h>#include "cx88.h"#include "dvb-pll.h"#include <media/v4l2-common.h>#include "mt352.h"#include "mt352_priv.h"#include "cx88-vp3054-i2c.h"#include "zl10353.h"#include "cx22702.h"#include "or51132.h"#include "lgdt330x.h"#include "nxt200x.h"#include "cx24123.h"#include "isl6421.h"MODULE_DESCRIPTION("driver for cx2388x based DVB cards");MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>");MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");MODULE_LICENSE("GPL");static unsigned int debug = 0;module_param(debug, int, 0644);MODULE_PARM_DESC(debug,"enable debug messages [dvb]");#define dprintk(level,fmt, arg...)	if (debug >= level) \	printk(KERN_DEBUG "%s/2-dvb: " fmt, core->name, ## arg)/* ------------------------------------------------------------------ */static int dvb_buf_setup(struct videobuf_queue *q,			 unsigned int *count, unsigned int *size){	struct cx8802_dev *dev = q->priv_data;	dev->ts_packet_size  = 188 * 4;	dev->ts_packet_count = 32;	*size  = dev->ts_packet_size * dev->ts_packet_count;	*count = 32;	return 0;}static int dvb_buf_prepare(struct videobuf_queue *q,			   struct videobuf_buffer *vb, enum v4l2_field field){	struct cx8802_dev *dev = q->priv_data;	return cx8802_buf_prepare(q, dev, (struct cx88_buffer*)vb,field);}static void dvb_buf_queue(struct videobuf_queue *q, struct videobuf_buffer *vb){	struct cx8802_dev *dev = q->priv_data;	cx8802_buf_queue(dev, (struct cx88_buffer*)vb);}static void dvb_buf_release(struct videobuf_queue *q,			    struct videobuf_buffer *vb){	cx88_free_buffer(q, (struct cx88_buffer*)vb);}static struct videobuf_queue_ops dvb_qops = {	.buf_setup    = dvb_buf_setup,	.buf_prepare  = dvb_buf_prepare,	.buf_queue    = dvb_buf_queue,	.buf_release  = dvb_buf_release,};/* ------------------------------------------------------------------ */static int cx88_dvb_bus_ctrl(struct dvb_frontend* fe, int acquire){	struct cx8802_dev *dev= fe->dvb->priv;	struct cx8802_driver *drv = NULL;	int ret = 0;	drv = cx8802_get_driver(dev, CX88_MPEG_DVB);	if (drv) {		if (acquire)			ret = drv->request_acquire(drv);		else			ret = drv->request_release(drv);	}	return ret;}/* ------------------------------------------------------------------ */static int dvico_fusionhdtv_demod_init(struct dvb_frontend* fe){	static u8 clock_config []  = { CLOCK_CTL,  0x38, 0x39 };	static u8 reset []         = { RESET,      0x80 };	static u8 adc_ctl_1_cfg [] = { ADC_CTL_1,  0x40 };	static u8 agc_cfg []       = { AGC_TARGET, 0x24, 0x20 };	static u8 gpp_ctl_cfg []   = { GPP_CTL,    0x33 };	static u8 capt_range_cfg[] = { CAPT_RANGE, 0x32 };	mt352_write(fe, clock_config,   sizeof(clock_config));	udelay(200);	mt352_write(fe, reset,          sizeof(reset));	mt352_write(fe, adc_ctl_1_cfg,  sizeof(adc_ctl_1_cfg));	mt352_write(fe, agc_cfg,        sizeof(agc_cfg));	mt352_write(fe, gpp_ctl_cfg,    sizeof(gpp_ctl_cfg));	mt352_write(fe, capt_range_cfg, sizeof(capt_range_cfg));	return 0;}static int dvico_dual_demod_init(struct dvb_frontend *fe){	static u8 clock_config []  = { CLOCK_CTL,  0x38, 0x38 };	static u8 reset []         = { RESET,      0x80 };	static u8 adc_ctl_1_cfg [] = { ADC_CTL_1,  0x40 };	static u8 agc_cfg []       = { AGC_TARGET, 0x28, 0x20 };	static u8 gpp_ctl_cfg []   = { GPP_CTL,    0x33 };	static u8 capt_range_cfg[] = { CAPT_RANGE, 0x32 };	mt352_write(fe, clock_config,   sizeof(clock_config));	udelay(200);	mt352_write(fe, reset,          sizeof(reset));	mt352_write(fe, adc_ctl_1_cfg,  sizeof(adc_ctl_1_cfg));	mt352_write(fe, agc_cfg,        sizeof(agc_cfg));	mt352_write(fe, gpp_ctl_cfg,    sizeof(gpp_ctl_cfg));	mt352_write(fe, capt_range_cfg, sizeof(capt_range_cfg));	return 0;}static int dntv_live_dvbt_demod_init(struct dvb_frontend* fe){	static u8 clock_config []  = { 0x89, 0x38, 0x39 };	static u8 reset []         = { 0x50, 0x80 };	static u8 adc_ctl_1_cfg [] = { 0x8E, 0x40 };	static u8 agc_cfg []       = { 0x67, 0x10, 0x23, 0x00, 0xFF, 0xFF,				       0x00, 0xFF, 0x00, 0x40, 0x40 };	static u8 dntv_extra[]     = { 0xB5, 0x7A };	static u8 capt_range_cfg[] = { 0x75, 0x32 };	mt352_write(fe, clock_config,   sizeof(clock_config));	udelay(2000);	mt352_write(fe, reset,          sizeof(reset));	mt352_write(fe, adc_ctl_1_cfg,  sizeof(adc_ctl_1_cfg));	mt352_write(fe, agc_cfg,        sizeof(agc_cfg));	udelay(2000);	mt352_write(fe, dntv_extra,     sizeof(dntv_extra));	mt352_write(fe, capt_range_cfg, sizeof(capt_range_cfg));	return 0;}static struct mt352_config dvico_fusionhdtv = {	.demod_address = 0x0f,	.demod_init    = dvico_fusionhdtv_demod_init,};static struct mt352_config dntv_live_dvbt_config = {	.demod_address = 0x0f,	.demod_init    = dntv_live_dvbt_demod_init,};static struct mt352_config dvico_fusionhdtv_dual = {	.demod_address = 0x0f,	.demod_init    = dvico_dual_demod_init,};#if defined(CONFIG_VIDEO_CX88_VP3054) || (defined(CONFIG_VIDEO_CX88_VP3054_MODULE) && defined(MODULE))static int dntv_live_dvbt_pro_demod_init(struct dvb_frontend* fe){	static u8 clock_config []  = { 0x89, 0x38, 0x38 };	static u8 reset []         = { 0x50, 0x80 };	static u8 adc_ctl_1_cfg [] = { 0x8E, 0x40 };	static u8 agc_cfg []       = { 0x67, 0x10, 0x20, 0x00, 0xFF, 0xFF,				       0x00, 0xFF, 0x00, 0x40, 0x40 };	static u8 dntv_extra[]     = { 0xB5, 0x7A };	static u8 capt_range_cfg[] = { 0x75, 0x32 };	mt352_write(fe, clock_config,   sizeof(clock_config));	udelay(2000);	mt352_write(fe, reset,          sizeof(reset));	mt352_write(fe, adc_ctl_1_cfg,  sizeof(adc_ctl_1_cfg));	mt352_write(fe, agc_cfg,        sizeof(agc_cfg));	udelay(2000);	mt352_write(fe, dntv_extra,     sizeof(dntv_extra));	mt352_write(fe, capt_range_cfg, sizeof(capt_range_cfg));	return 0;}static struct mt352_config dntv_live_dvbt_pro_config = {	.demod_address = 0x0f,	.no_tuner      = 1,	.demod_init    = dntv_live_dvbt_pro_demod_init,};#endifstatic struct zl10353_config dvico_fusionhdtv_hybrid = {	.demod_address = 0x0f,	.no_tuner      = 1,};static struct zl10353_config dvico_fusionhdtv_plus_v1_1 = {	.demod_address = 0x0f,};static struct cx22702_config connexant_refboard_config = {	.demod_address = 0x43,	.output_mode   = CX22702_SERIAL_OUTPUT,};static struct cx22702_config hauppauge_hvr_config = {	.demod_address = 0x63,	.output_mode   = CX22702_SERIAL_OUTPUT,};static int or51132_set_ts_param(struct dvb_frontend* fe, int is_punctured){	struct cx8802_dev *dev= fe->dvb->priv;	dev->ts_gen_cntrl = is_punctured ? 0x04 : 0x00;	return 0;}static struct or51132_config pchdtv_hd3000 = {	.demod_address = 0x15,	.set_ts_params = or51132_set_ts_param,};static int lgdt330x_pll_rf_set(struct dvb_frontend* fe, int index){	struct cx8802_dev *dev= fe->dvb->priv;	struct cx88_core *core = dev->core;	dprintk(1, "%s: index = %d\n", __FUNCTION__, index);	if (index == 0)		cx_clear(MO_GP0_IO, 8);	else		cx_set(MO_GP0_IO, 8);	return 0;}static int lgdt330x_set_ts_param(struct dvb_frontend* fe, int is_punctured){	struct cx8802_dev *dev= fe->dvb->priv;	if (is_punctured)		dev->ts_gen_cntrl |= 0x04;	else		dev->ts_gen_cntrl &= ~0x04;	return 0;}static struct lgdt330x_config fusionhdtv_3_gold = {	.demod_address = 0x0e,	.demod_chip    = LGDT3302,	.serial_mpeg   = 0x04, /* TPSERIAL for 3302 in TOP_CONTROL */	.set_ts_params = lgdt330x_set_ts_param,};static struct lgdt330x_config fusionhdtv_5_gold = {	.demod_address = 0x0e,	.demod_chip    = LGDT3303,	.serial_mpeg   = 0x40, /* TPSERIAL for 3303 in TOP_CONTROL */	.set_ts_params = lgdt330x_set_ts_param,};static struct lgdt330x_config pchdtv_hd5500 = {	.demod_address = 0x59,	.demod_chip    = LGDT3303,	.serial_mpeg   = 0x40, /* TPSERIAL for 3303 in TOP_CONTROL */	.set_ts_params = lgdt330x_set_ts_param,};static int nxt200x_set_ts_param(struct dvb_frontend* fe, int is_punctured){	struct cx8802_dev *dev= fe->dvb->priv;	dev->ts_gen_cntrl = is_punctured ? 0x04 : 0x00;	return 0;}static struct nxt200x_config ati_hdtvwonder = {	.demod_address = 0x0a,	.set_ts_params = nxt200x_set_ts_param,};static int cx24123_set_ts_param(struct dvb_frontend* fe,	int is_punctured){	struct cx8802_dev *dev= fe->dvb->priv;	dev->ts_gen_cntrl = 0x02;	return 0;}static int kworld_dvbs_100_set_voltage(struct dvb_frontend* fe,				       fe_sec_voltage_t voltage){	struct cx8802_dev *dev= fe->dvb->priv;	struct cx88_core *core = dev->core;	if (voltage == SEC_VOLTAGE_OFF)		cx_write(MO_GP0_IO, 0x000006fb);	else		cx_write(MO_GP0_IO, 0x000006f9);	if (core->prev_set_voltage)		return core->prev_set_voltage(fe, voltage);	return 0;}static int geniatech_dvbs_set_voltage(struct dvb_frontend *fe,				      fe_sec_voltage_t voltage){	struct cx8802_dev *dev= fe->dvb->priv;	struct cx88_core *core = dev->core;	if (voltage == SEC_VOLTAGE_OFF) {		dprintk(1,"LNB Voltage OFF\n");		cx_write(MO_GP0_IO, 0x0000efff);	}	if (core->prev_set_voltage)		return core->prev_set_voltage(fe, voltage);	return 0;}static struct cx24123_config geniatech_dvbs_config = {	.demod_address = 0x55,	.set_ts_params = cx24123_set_ts_param,};static struct cx24123_config hauppauge_novas_config = {	.demod_address = 0x55,	.set_ts_params = cx24123_set_ts_param,};static struct cx24123_config kworld_dvbs_100_config = {	.demod_address = 0x15,	.set_ts_params = cx24123_set_ts_param,	.lnb_polarity  = 1,};static int dvb_register(struct cx8802_dev *dev){	/* init struct videobuf_dvb */	dev->dvb.name = dev->core->name;	dev->ts_gen_cntrl = 0x0c;	/* init frontend */	switch (dev->core->boardnr) {	case CX88_BOARD_HAUPPAUGE_DVB_T1:		dev->dvb.frontend = dvb_attach(cx22702_attach,					       &connexant_refboard_config,					       &dev->core->i2c_adap);		if (dev->dvb.frontend != NULL) {			dvb_attach(dvb_pll_attach, dev->dvb.frontend, 0x61,				   &dev->core->i2c_adap,				   DVB_PLL_THOMSON_DTT759X);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本电影欧美片| 午夜激情一区二区| 国产传媒一区在线| 亚洲成在人线在线播放| 美女一区二区视频| 久久综合九色综合97婷婷女人 | 精品一区二区三区的国产在线播放| 欧美精品日韩精品| 蜜臀久久99精品久久久久宅男| 日韩一区二区三区视频在线| 国产精品自拍毛片| 综合久久一区二区三区| 欧美视频在线一区| 久久国产福利国产秒拍| 国产精品第四页| 666欧美在线视频| 国产福利一区二区三区视频| 亚洲精品国产成人久久av盗摄| 欧美日韩午夜影院| 国产精品18久久久| 亚洲制服欧美中文字幕中文字幕| 欧美一区三区四区| 高清免费成人av| 视频一区视频二区中文| 欧美国产乱子伦| 777奇米成人网| 97久久人人超碰| 久久99久国产精品黄毛片色诱| 17c精品麻豆一区二区免费| 777久久久精品| 91浏览器入口在线观看| 理论电影国产精品| 亚洲一区中文在线| 国产欧美精品在线观看| 91超碰这里只有精品国产| www.激情成人| 蜜桃精品视频在线| 亚洲色欲色欲www| 精品日韩在线观看| 欧美午夜电影网| 国产91清纯白嫩初高中在线观看 | 亚洲欧洲成人av每日更新| 日韩精品一区二区三区视频| 99国产精品久久| 激情五月婷婷综合| 亚洲午夜久久久久久久久久久| 久久精品一区二区三区不卡| 91精品国产综合久久精品| 91美女视频网站| 波多野结衣中文字幕一区二区三区| 日本美女视频一区二区| 亚洲一区在线电影| 亚洲欧美欧美一区二区三区| 久久久久九九视频| 日韩精品一区二区三区三区免费 | 成人小视频免费在线观看| 欧美激情自拍偷拍| 欧美一级午夜免费电影| 欧美亚日韩国产aⅴ精品中极品| 成人免费毛片高清视频| 狠狠久久亚洲欧美| 亚洲精品大片www| 欧美成人综合网站| 欧美亚洲国产怡红院影院| 国产sm精品调教视频网站| 男人的天堂久久精品| 精品成人佐山爱一区二区| 欧洲av在线精品| 成人黄色免费短视频| 狠狠色综合色综合网络| 五月天久久比比资源色| 一区二区三区精品视频| 亚洲一区在线视频| 亚洲成人av在线电影| 天堂成人国产精品一区| 五月激情六月综合| 日韩福利电影在线| 久久电影网电视剧免费观看| 精油按摩中文字幕久久| 国产老肥熟一区二区三区| 国产福利一区二区三区视频在线| 国产成a人亚洲| 99热这里都是精品| 99热在这里有精品免费| 在线国产亚洲欧美| 欧美一卡二卡在线观看| 欧美videossexotv100| 26uuu色噜噜精品一区二区| 欧美精品一区二区三区高清aⅴ| 久久久久一区二区三区四区| 国产人成一区二区三区影院| 国产精品成人在线观看| 亚洲一区二区在线免费看| 首页国产丝袜综合| 蜜臀av国产精品久久久久| 国产精品一区二区三区99| 成人h精品动漫一区二区三区| 91在线国产福利| 欧美精品三级在线观看| 日韩欧美国产精品| 国产精品传媒入口麻豆| 亚洲高清一区二区三区| 黄色日韩网站视频| 91蜜桃视频在线| 欧美一级在线视频| 国产精品美女久久久久久| 一区二区三区加勒比av| 久久精工是国产品牌吗| 成人午夜在线免费| 69久久99精品久久久久婷婷| 久久婷婷成人综合色| 亚洲欧美激情在线| 秋霞影院一区二区| 丁香啪啪综合成人亚洲小说| 欧美日韩国产免费| 欧美激情综合网| 日本sm残虐另类| 91网站最新网址| 久久尤物电影视频在线观看| 亚洲精品美国一| 国产精品1区2区| 91精品啪在线观看国产60岁| 国产精品国产精品国产专区不片| 日韩中文字幕91| 91麻豆免费看| 国产亚洲一区二区三区在线观看| 亚洲国产成人porn| gogogo免费视频观看亚洲一| 日韩视频一区二区| 亚洲午夜精品久久久久久久久| 成人亚洲一区二区一| 91麻豆精品国产无毒不卡在线观看 | 日本欧美韩国一区三区| 91麻豆国产精品久久| 国产日韩精品一区| 日本欧美久久久久免费播放网| 91亚洲国产成人精品一区二区三| 欧美α欧美αv大片| 午夜免费欧美电影| 日本高清免费不卡视频| 国产精品女人毛片| 国产酒店精品激情| 精品国内二区三区| 国产高清亚洲一区| 日韩免费高清电影| 午夜精品久久久久久| 91福利在线看| 亚洲美女免费在线| 不卡一区二区中文字幕| 欧美国产综合一区二区| 国产另类ts人妖一区二区| 日韩欧美国产三级电影视频| 日韩av成人高清| 欧美日韩亚洲综合在线| 洋洋成人永久网站入口| 一本色道久久综合亚洲aⅴ蜜桃| 日本一二三四高清不卡| 国产精品一二一区| 久久精品在这里| 国产suv精品一区二区三区| 久久久一区二区三区| 狠狠色伊人亚洲综合成人| 日韩久久久精品| 久久精品噜噜噜成人av农村| 日韩欧美激情四射| 久久99深爱久久99精品| 日韩精品中文字幕在线不卡尤物| 日韩av在线播放中文字幕| 91精品中文字幕一区二区三区| 奇米色一区二区| 亚洲精品一区二区三区在线观看 | 国产精品欧美一区喷水| 成人av午夜电影| 日韩毛片高清在线播放| 日本精品一区二区三区四区的功能| 亚洲男女一区二区三区| 色丁香久综合在线久综合在线观看| 一区二区三区.www| 紧缚捆绑精品一区二区| 成人黄色软件下载| 久久午夜国产精品| 国产高清亚洲一区| 亚洲视频在线观看一区| 欧美私模裸体表演在线观看| 日日夜夜精品视频免费| 久久影院视频免费| av午夜一区麻豆| 亚洲国产美女搞黄色| 日韩女优视频免费观看| 国产91精品一区二区麻豆网站 | 国产精品自拍av| 中文字幕日韩一区| 欧美日韩中字一区| 狠狠色丁香婷综合久久| 中文字幕一区二区三区不卡在线| 在线观看91视频| 韩国精品主播一区二区在线观看 | 亚洲免费视频成人| 777久久久精品| 不卡一二三区首页|