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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? si21xx.c

?? trident tm5600的linux驅(qū)動(dòng)
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
		volt == SEC_VOLTAGE_18 ? "SEC_VOLTAGE_18" : "??");	val = (0x80 | si21_readreg(state, LNB_CTRL_REG_1));	switch (volt) {	case SEC_VOLTAGE_18:		return si21_writereg(state, LNB_CTRL_REG_1, val | 0x40);		break;	case SEC_VOLTAGE_13:		return si21_writereg(state, LNB_CTRL_REG_1, (val & ~0x40));		break;	default:		return -EINVAL;	};}static int si21xx_init(struct dvb_frontend *fe){	struct si21xx_state *state = fe->demodulator_priv;	int i;	int status = 0;	u8 reg1;	u8 val;	u8 reg2[2];	dprintk("%s\n", __func__);	for (i = 0; ; i += 2) {		reg1 = serit_sp1511lhb_inittab[i];		val = serit_sp1511lhb_inittab[i+1];		if (reg1 == 0xff && val == 0xff)			break;		si21_writeregs(state, reg1, &val, 1);	}	/*DVB QPSK SYSTEM MODE REG*/	reg1 = 0x08;	si21_writeregs(state, SYSTEM_MODE_REG, &reg1, 0x01);	/*transport stream config*/	/*	mode = PARALLEL;	sdata_form = LSB_FIRST;	clk_edge = FALLING_EDGE;	clk_mode = CLK_GAPPED_MODE;	strt_len = BYTE_WIDE;	sync_pol = ACTIVE_HIGH;	val_pol = ACTIVE_HIGH;	err_pol = ACTIVE_HIGH;	sclk_rate = 0x00;	parity = 0x00 ;	data_delay = 0x00;	clk_delay = 0x00;	pclk_smooth = 0x00;	*/	reg2[0] =		PARALLEL + (LSB_FIRST << 1)		+ (FALLING_EDGE << 2) + (CLK_GAPPED_MODE << 3)		+ (BYTE_WIDE << 4) + (ACTIVE_HIGH << 5)		+ (ACTIVE_HIGH << 6) + (ACTIVE_HIGH << 7);	reg2[1] = 0;	/*	sclk_rate + (parity << 2)		+ (data_delay << 3) + (clk_delay << 4)		+ (pclk_smooth << 5);	*/	status |= si21_writeregs(state, TS_CTRL_REG_1, reg2, 0x02);	if (status != 0)		dprintk(" %s : TS Set Error\n", __func__);#if 0	lnb_cmd.tone = ON; /* 22khz continuous */	lnb_cmd.mmsg = OFF; /* diseqc more message */	/* diseqc  command */	lnb_cmd.msg[6] = { "0xE0", "0x10", "0x38", "0xF0" };	lnb_cmd.msg_len = OFF; /* diseqc command length */	lnb_cmd.burst = OFF; /* tone burst a,b */	lnb_cmd.volt = OFF; /* 13v 18v select */	status |= si21xx_set_lnb_msg(state, lnb_cmd);	if (status != PASS)		dprintk("%s LNB Set Error\n", __func__);#endif	return 0;}static int si21_read_status(struct dvb_frontend *fe, fe_status_t *status){	struct si21xx_state *state = fe->demodulator_priv;	u8 regs_read[2];	u8 reg_read;	u8 i;	u8 lock;	u8 signal = si21_readreg(state, ANALOG_AGC_POWER_LEVEL_REG);	si21_readregs(state, LOCK_STATUS_REG_1, regs_read, 0x02);	reg_read = 0;	for (i = 0; i < 7; ++i)		reg_read |= ((regs_read[0] >> i) & 0x01) << (6 - i);	lock = ((reg_read & 0x7f) | (regs_read[1] & 0x80));	dprintk("%s : FE_READ_STATUS : VSTATUS: 0x%02x\n", __func__, lock);	*status = 0;	if (signal > 10)		*status |= FE_HAS_SIGNAL;	if (lock & 0x2)		*status |= FE_HAS_CARRIER;	if (lock & 0x20)		*status |= FE_HAS_VITERBI;	if (lock & 0x40)		*status |= FE_HAS_SYNC;	if ((lock & 0x7b) == 0x7b)		*status |= FE_HAS_LOCK;	return 0;}static int si21_read_signal_strength(struct dvb_frontend *fe, u16 *strength){	struct si21xx_state *state = fe->demodulator_priv;	/*status = si21_readreg(state, ANALOG_AGC_POWER_LEVEL_REG,						(u8*)agclevel, 0x01);*/	u16 signal = (3 * si21_readreg(state, 0x27) *					si21_readreg(state, 0x28));	dprintk("%s : AGCPWR: 0x%02x%02x, signal=0x%04x\n", __func__,		si21_readreg(state, 0x27),		si21_readreg(state, 0x28), (int) signal);	signal  <<= 4;	*strength = signal;	return 0;}static int si21_read_ber(struct dvb_frontend *fe, u32 *ber){	struct si21xx_state *state = fe->demodulator_priv;	dprintk("%s\n", __func__);	if (state->errmode != STATUS_BER)		return 0;	*ber = (si21_readreg(state, 0x1d) << 8) |				si21_readreg(state, 0x1e);	return 0;}static int si21_read_snr(struct dvb_frontend *fe, u16 *snr){	struct si21xx_state *state = fe->demodulator_priv;	s32 xsnr = 0xffff - ((si21_readreg(state, 0x24) << 8) |					si21_readreg(state, 0x25));	xsnr = 3 * (xsnr - 0xa100);	*snr = (xsnr > 0xffff) ? 0xffff : (xsnr < 0) ? 0 : xsnr;	dprintk("%s\n", __func__);	return 0;}static int si21_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks){	struct si21xx_state *state = fe->demodulator_priv;	dprintk("%s\n", __func__);	if (state->errmode != STATUS_UCBLOCKS)		*ucblocks = 0;	else		*ucblocks = (si21_readreg(state, 0x1d) << 8) |					si21_readreg(state, 0x1e);	return 0;}/*	initiates a channel acquisition sequence	using the specified symbol rate and code rate */static int si21xx_setacquire(struct dvb_frontend *fe, int symbrate,						fe_code_rate_t crate){	struct si21xx_state *state = fe->demodulator_priv;	u8 coderates[] = {				0x0, 0x01, 0x02, 0x04, 0x00,				0x8, 0x10, 0x20, 0x00, 0x3f	};	u8 coderate_ptr;	int status;	u8 start_acq = 0x80;	u8 reg, regs[3];	dprintk("%s\n", __func__);	status = PASS;	coderate_ptr = coderates[crate];	si21xx_set_symbolrate(fe, symbrate);	/* write code rates to use in the Viterbi search */	status |= si21_writeregs(state,				VIT_SRCH_CTRL_REG_1,				&coderate_ptr, 0x01);	/* clear acq_start bit */	status |= si21_readregs(state, ACQ_CTRL_REG_2, &reg, 0x01);	reg &= ~start_acq;	status |= si21_writeregs(state, ACQ_CTRL_REG_2, &reg, 0x01);	/* use new Carrier Frequency Offset Estimator (QuickLock) */	regs[0] = 0xCB;	regs[1] = 0x40;	regs[2] = 0xCB;	status |= si21_writeregs(state,				TWO_DB_BNDWDTH_THRSHLD_REG,				&regs[0], 0x03);	reg = 0x56;	status |= si21_writeregs(state,				LSA_CTRL_REG_1, &reg, 1);	reg = 0x05;	status |= si21_writeregs(state,				BLIND_SCAN_CTRL_REG, &reg, 1);	/* start automatic acq */	status |= si21_writeregs(state,				ACQ_CTRL_REG_2, &start_acq, 0x01);	return status;}static int si21xx_set_property(struct dvb_frontend *fe, struct dtv_property *p){	dprintk("%s(..)\n", __func__);	return 0;}static int si21xx_get_property(struct dvb_frontend *fe, struct dtv_property *p){	dprintk("%s(..)\n", __func__);	return 0;}static int si21xx_set_frontend(struct dvb_frontend *fe,					struct dvb_frontend_parameters *dfp){	struct si21xx_state *state = fe->demodulator_priv;	struct dtv_frontend_properties *c = &fe->dtv_property_cache;	/* freq		Channel carrier frequency in KHz (i.e. 1550000 KHz)	 datarate	Channel symbol rate in Sps (i.e. 22500000 Sps)*/	/* in MHz */	unsigned char coarse_tune_freq;	int fine_tune_freq;	unsigned char sample_rate = 0;	/* boolean */	unsigned int inband_interferer_ind;	/* INTERMEDIATE VALUES */	int icoarse_tune_freq; /* MHz */	int ifine_tune_freq; /* MHz */	unsigned int band_high;	unsigned int band_low;	unsigned int x1;	unsigned int x2;	int i;	unsigned int inband_interferer_div2[ALLOWABLE_FS_COUNT] = {			FALSE, FALSE, FALSE, FALSE, FALSE,			FALSE, FALSE, FALSE, FALSE, FALSE	};	unsigned int inband_interferer_div4[ALLOWABLE_FS_COUNT] = {			FALSE, FALSE, FALSE, FALSE, FALSE,			FALSE, FALSE, FALSE, FALSE, FALSE	};	int status;	/* allowable sample rates for ADC in MHz */	int afs[ALLOWABLE_FS_COUNT] = { 200, 192, 193, 194, 195,					196, 204, 205, 206, 207	};	/* in MHz */	int if_limit_high;	int if_limit_low;	int lnb_lo;	int lnb_uncertanity;	int rf_freq;	int data_rate;	unsigned char regs[4];	dprintk("%s : FE_SET_FRONTEND\n", __func__);	if (c->delivery_system != SYS_DVBS) {			dprintk("%s: unsupported delivery system selected (%d)\n",				__func__, c->delivery_system);			return -EOPNOTSUPP;	}	for (i = 0; i < ALLOWABLE_FS_COUNT; ++i)		inband_interferer_div2[i] = inband_interferer_div4[i] = FALSE;	if_limit_high = -700000;	if_limit_low = -100000;	/* in MHz */	lnb_lo = 0;	lnb_uncertanity = 0;	rf_freq = 10 * c->frequency ;	data_rate = c->symbol_rate / 100;	status = PASS;	band_low = (rf_freq - lnb_lo) - ((lnb_uncertanity * 200)					+ (data_rate * 135)) / 200;	band_high = (rf_freq - lnb_lo) + ((lnb_uncertanity * 200)					+ (data_rate * 135)) / 200;	icoarse_tune_freq = 100000 *				(((rf_freq - lnb_lo) -					(if_limit_low + if_limit_high) / 2)								/ 100000);	ifine_tune_freq = (rf_freq - lnb_lo) - icoarse_tune_freq ;	for (i = 0; i < ALLOWABLE_FS_COUNT; ++i) {		x1 = ((rf_freq - lnb_lo) / (afs[i] * 2500)) *					(afs[i] * 2500) + afs[i] * 2500;		x2 = ((rf_freq - lnb_lo) / (afs[i] * 2500)) *							(afs[i] * 2500);		if (((band_low < x1) && (x1 < band_high)) ||					((band_low < x2) && (x2 < band_high)))					inband_interferer_div4[i] = TRUE;	}	for (i = 0; i < ALLOWABLE_FS_COUNT; ++i) {		x1 = ((rf_freq - lnb_lo) / (afs[i] * 5000)) *					(afs[i] * 5000) + afs[i] * 5000;		x2 = ((rf_freq - lnb_lo) / (afs[i] * 5000)) *					(afs[i] * 5000);		if (((band_low < x1) && (x1 < band_high)) ||					((band_low < x2) && (x2 < band_high)))					inband_interferer_div2[i] = TRUE;	}	inband_interferer_ind = TRUE;	for (i = 0; i < ALLOWABLE_FS_COUNT; ++i)		inband_interferer_ind &= inband_interferer_div2[i] |						inband_interferer_div4[i];	if (inband_interferer_ind) {		for (i = 0; i < ALLOWABLE_FS_COUNT; ++i) {			if (inband_interferer_div2[i] == FALSE) {				sample_rate = (u8) afs[i];				break;			}		}	} else {		for (i = 0; i < ALLOWABLE_FS_COUNT; ++i) {			if ((inband_interferer_div2[i] |					inband_interferer_div4[i]) == FALSE) {				sample_rate = (u8) afs[i];				break;			}		}	}	if (sample_rate > 207 || sample_rate < 192)		sample_rate = 200;	fine_tune_freq = ((0x4000 * (ifine_tune_freq / 10)) /					((sample_rate) * 1000));	coarse_tune_freq = (u8)(icoarse_tune_freq / 100000);	regs[0] = sample_rate;	regs[1] = coarse_tune_freq;	regs[2] = fine_tune_freq & 0xFF;	regs[3] = fine_tune_freq >> 8 & 0xFF;	status |= si21_writeregs(state, PLL_DIVISOR_REG, &regs[0], 0x04);	state->fs = sample_rate;/*ADC MHz*/	si21xx_setacquire(fe, c->symbol_rate, c->fec_inner);	return 0;}static int si21xx_sleep(struct dvb_frontend *fe){	struct si21xx_state *state = fe->demodulator_priv;	u8 regdata;	dprintk("%s\n", __func__);	si21_readregs(state, SYSTEM_MODE_REG, &regdata, 0x01);	regdata |= 1 << 6;	si21_writeregs(state, SYSTEM_MODE_REG, &regdata, 0x01);	state->initialised = 0;	return 0;}static void si21xx_release(struct dvb_frontend *fe){	struct si21xx_state *state = fe->demodulator_priv;	dprintk("%s\n", __func__);	kfree(state);}static struct dvb_frontend_ops si21xx_ops = {	.info = {		.name			= "SL SI21XX DVB-S",		.type			= FE_QPSK,		.frequency_min		= 950000,		.frequency_max		= 2150000,		.frequency_stepsize	= 125,	 /* kHz for QPSK frontends */		.frequency_tolerance	= 0,		.symbol_rate_min	= 1000000,		.symbol_rate_max	= 45000000,		.symbol_rate_tolerance	= 500,	/* ppm */		.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |		FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |		FE_CAN_QPSK |		FE_CAN_FEC_AUTO	},	.release = si21xx_release,	.init = si21xx_init,	.sleep = si21xx_sleep,	.write = si21_write,	.read_status = si21_read_status,	.read_ber = si21_read_ber,	.read_signal_strength = si21_read_signal_strength,	.read_snr = si21_read_snr,	.read_ucblocks = si21_read_ucblocks,	.diseqc_send_master_cmd = si21xx_send_diseqc_msg,	.diseqc_send_burst = si21xx_send_diseqc_burst,	.set_tone = si21xx_set_tone,	.set_voltage = si21xx_set_voltage,	.set_property = si21xx_set_property,	.get_property = si21xx_get_property,	.set_frontend = si21xx_set_frontend,};struct dvb_frontend *si21xx_attach(const struct si21xx_config *config,						struct i2c_adapter *i2c){	struct si21xx_state *state = NULL;	int id;	dprintk("%s\n", __func__);	/* allocate memory for the internal state */	state = kmalloc(sizeof(struct si21xx_state), GFP_KERNEL);	if (state == NULL)		goto error;	/* setup the state */	state->config = config;	state->i2c = i2c;	state->initialised = 0;	state->errmode = STATUS_BER;	/* check if the demod is there */	id = si21_readreg(state, SYSTEM_MODE_REG);	si21_writereg(state, SYSTEM_MODE_REG, id | 0x40); /* standby off */	msleep(200);	id = si21_readreg(state, 0x00);	/* register 0x00 contains:		0x34 for SI2107		0x24 for SI2108		0x14 for SI2109		0x04 for SI2110	*/	if (id != 0x04 && id != 0x14)		goto error;	/* create dvb_frontend */	memcpy(&state->frontend.ops, &si21xx_ops,					sizeof(struct dvb_frontend_ops));	state->frontend.demodulator_priv = state;	return &state->frontend;error:	kfree(state);	return NULL;}EXPORT_SYMBOL(si21xx_attach);module_param(debug, int, 0644);MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");MODULE_DESCRIPTION("SL SI21XX DVB Demodulator driver");MODULE_AUTHOR("Igor M. Liplianin");MODULE_LICENSE("GPL");

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合精品久久| 91久久精品一区二区| 欧美一区二区在线不卡| 亚洲高清在线精品| 91片在线免费观看| 亚洲精品成a人| 国产调教视频一区| 风间由美一区二区av101| 欧美国产精品v| 成人h精品动漫一区二区三区| 亚洲国产高清在线| 91精品福利视频| 亚洲午夜在线观看视频在线| 欧美色窝79yyyycom| 日韩精品国产欧美| 欧美一级高清片| 成人app在线观看| 天天综合网 天天综合色| 欧美成人精精品一区二区频| 成人毛片视频在线观看| 亚洲国产aⅴ成人精品无吗| 日韩视频一区二区三区| 不卡av电影在线播放| 日韩和欧美的一区| 亚洲视频 欧洲视频| 欧美xxxxx牲另类人与| 成人不卡免费av| 欧美日韩精品免费| 天堂蜜桃91精品| 成人午夜精品一区二区三区| 日本强好片久久久久久aaa| 首页综合国产亚洲丝袜| 午夜不卡av在线| 免费成人性网站| 精品一区二区综合| 18成人在线观看| 2023国产精品| 欧美高清性hdvideosex| 从欧美一区二区三区| 日日夜夜精品视频天天综合网| 精品电影一区二区| 欧美精品v国产精品v日韩精品| 国产成人免费在线观看不卡| 怡红院av一区二区三区| 久久久久久久一区| 日韩三级高清在线| 91精品视频网| 欧美特级限制片免费在线观看| 风间由美一区二区三区在线观看| 婷婷综合在线观看| 在线观看欧美日本| 成人动漫一区二区在线| 91视视频在线观看入口直接观看www| 成人福利视频网站| 在线国产电影不卡| 欧美一区二区三级| 日本一区二区在线不卡| 国产欧美一区二区在线观看| 国产精品电影院| 婷婷开心久久网| 国产麻豆精品久久一二三| 国产sm精品调教视频网站| 成人av免费在线观看| 欧美性生活大片视频| 欧美精品一区二区三区久久久| 国产亚洲综合色| 亚洲色图制服诱惑| 精品一区二区免费在线观看| 国产精品456露脸| 欧洲精品在线观看| 欧美一区二区三区免费| 中文字幕一区av| 精品一区二区三区在线播放| 91影视在线播放| 欧美军同video69gay| 亚洲品质自拍视频| 99天天综合性| 亚洲男人都懂的| 91毛片在线观看| 一区二区三区蜜桃网| 91免费观看视频在线| 亚洲国产成人自拍| 亚洲欧美国产三级| 在线亚洲免费视频| 制服丝袜中文字幕一区| 国产午夜精品一区二区三区嫩草| 亚洲精品久久久蜜桃| 图片区小说区区亚洲影院| 日本麻豆一区二区三区视频| 97精品视频在线观看自产线路二| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品嫩草影院com| 欧美v日韩v国产v| 日韩综合小视频| 色先锋资源久久综合| 欧美激情一区二区三区| 久久国产视频网| 日韩区在线观看| 久久激情五月婷婷| 欧美一区二区三区公司| 日韩伦理电影网| 不卡av免费在线观看| 欧美高清在线一区| 美女视频黄久久| 国产三级三级三级精品8ⅰ区| 麻豆精品一区二区三区| 欧美丝袜第三区| 亚洲图片欧美综合| 欧美日韩精品一区二区天天拍小说 | 欧美在线一二三四区| 三级成人在线视频| 99这里只有精品| 久久久不卡网国产精品一区| 亚洲综合自拍偷拍| 精品一区二区免费视频| 色av一区二区| 亚洲韩国一区二区三区| 色婷婷国产精品久久包臀| 亚洲欧美日韩小说| 91热门视频在线观看| 麻豆精品精品国产自在97香蕉| 日韩一区二区三区在线观看| 日日骚欧美日韩| 久久综合久久综合九色| 波多野结衣中文字幕一区二区三区| 国产亚洲美州欧州综合国| 欧美区一区二区三区| 久久精品国产精品青草| 国产亚洲成aⅴ人片在线观看| 成人晚上爱看视频| 美女一区二区三区| 久久亚洲影视婷婷| 欧美伦理视频网站| 成人ar影院免费观看视频| 免费三级欧美电影| 亚洲男人都懂的| 久久久久国产免费免费| 7777精品久久久大香线蕉| 成人18精品视频| 国精产品一区一区三区mba视频| 亚洲已满18点击进入久久| 亚洲四区在线观看| 久久久九九九九| 26uuu国产电影一区二区| 欧美挠脚心视频网站| 色婷婷av一区二区三区之一色屋| 白白色 亚洲乱淫| 国产精品亚洲专一区二区三区 | 国产一区二区在线看| 麻豆成人av在线| 蜜桃视频一区二区三区| 五月激情丁香一区二区三区| 亚洲欧美一区二区三区极速播放| 精品国产免费一区二区三区香蕉| 日韩欧美国产一区在线观看| 欧美性受极品xxxx喷水| 欧美三级在线看| 91麻豆精品国产91久久久更新时间| 91久久人澡人人添人人爽欧美| 色婷婷综合久久| 欧美日韩黄色影视| 91麻豆精品国产无毒不卡在线观看| 在线精品视频小说1| 成人理论电影网| 日本精品免费观看高清观看| 一本色道久久加勒比精品 | 成人免费高清在线| 国产白丝精品91爽爽久久| 色婷婷久久99综合精品jk白丝| 欧美日韩在线直播| 日韩欧美亚洲国产另类| 国产女人18毛片水真多成人如厕| 亚洲男人的天堂在线观看| 一级精品视频在线观看宜春院| 综合自拍亚洲综合图不卡区| 亚洲一区二区偷拍精品| 精品一区二区在线看| 99久久久国产精品免费蜜臀| 欧美日韩免费高清一区色橹橹| 欧美一区二区三区不卡| 国产精品盗摄一区二区三区| 极品美女销魂一区二区三区| www..com久久爱| 欧美成人欧美edvon| 亚洲一区免费在线观看| av在线免费不卡| 国产婷婷一区二区| 美女www一区二区| 色婷婷综合久久久中文字幕| 国产精品久久一级| 国产一区二区三区精品欧美日韩一区二区三区 | ww亚洲ww在线观看国产| 午夜伊人狠狠久久| 日本韩国精品一区二区在线观看| 久久久久亚洲综合| 国产高清视频一区| 国产精品夜夜爽| 卡一卡二国产精品| 国产精品一区二区黑丝| 成人动漫av在线|