您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ tda18271_write_regs函数代码示例

51自学网 2021-06-03 08:42:53
  C++
这篇教程C++ tda18271_write_regs函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中tda18271_write_regs函数的典型用法代码示例。如果您正苦于以下问题:C++ tda18271_write_regs函数的具体用法?C++ tda18271_write_regs怎么用?C++ tda18271_write_regs使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了tda18271_write_regs函数的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: tda18271_powerscan_init

static int tda18271_powerscan_init(struct dvb_frontend *fe){	struct tda18271_priv *priv = fe->tuner_priv;	unsigned char *regs = priv->tda18271_regs;	int ret;	/* set standard to digital */	regs[R_EP3]  &= ~0x1f; /* clear std bits */	regs[R_EP3]  |= 0x12;	/* set cal mode to normal */	regs[R_EP4]  &= ~0x03;	/* update IF output level */	regs[R_EP4]  &= ~0x1c; /* clear if level bits */	ret = tda18271_write_regs(fe, R_EP3, 2);	if (tda_fail(ret))		goto fail;	regs[R_EB18] &= ~0x03; /* set agc1_gain to   6 dB */	ret = tda18271_write_regs(fe, R_EB18, 1);	if (tda_fail(ret))		goto fail;	regs[R_EB21] &= ~0x03; /* set agc2_gain to -15 dB */	/* 1.5 MHz low pass filter */	regs[R_EB23] |= 0x04; /* forcelp_fc2_en = 1 */	regs[R_EB23] |= 0x02; /* lp_fc[2] = 1 */	ret = tda18271_write_regs(fe, R_EB21, 3);fail:	return ret;}
开发者ID:ReneNyffenegger,项目名称:linux,代码行数:35,


示例2: tda18271_powerscan_init

static int tda18271_powerscan_init(struct dvb_frontend *fe){	struct tda18271_priv *priv = fe->tuner_priv;	unsigned char *regs = priv->tda18271_regs;	int ret;	/*                         */	regs[R_EP3]  &= ~0x1f; /*                */	regs[R_EP3]  |= 0x12;	/*                        */	regs[R_EP4]  &= ~0x03;	/*                        */	regs[R_EP4]  &= ~0x1c; /*                     */	ret = tda18271_write_regs(fe, R_EP3, 2);	if (tda_fail(ret))		goto fail;	regs[R_EB18] &= ~0x03; /*                         */	ret = tda18271_write_regs(fe, R_EB18, 1);	if (tda_fail(ret))		goto fail;	regs[R_EB21] &= ~0x03; /*                         */	/*                         */	regs[R_EB23] |= 0x04; /*                    */	regs[R_EB23] |= 0x02; /*              */	ret = tda18271_write_regs(fe, R_EB21, 3);fail:	return ret;}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:35,


示例3: tda18271_por

static int tda18271_por(struct dvb_frontend *fe){	struct tda18271_priv *priv = fe->tuner_priv;	unsigned char *regs = priv->tda18271_regs;	int ret;	/*                     */	regs[R_EB12] &= ~0x20;	ret = tda18271_write_regs(fe, R_EB12, 1);	if (tda_fail(ret))		goto fail;	regs[R_EB18] &= ~0x80; /*                   */	regs[R_EB18] &= ~0x03; /*                        */	ret = tda18271_write_regs(fe, R_EB18, 1);	if (tda_fail(ret))		goto fail;	regs[R_EB21] |= 0x03; /*                        */	/*          */	ret = tda18271_set_standby_mode(fe, 1, 0, 0);	if (tda_fail(ret))		goto fail;	/*                                 */	regs[R_EB23] &= ~0x04; /*                    */	regs[R_EB23] &= ~0x02; /*                   */	ret = tda18271_write_regs(fe, R_EB21, 3);fail:	return ret;}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:32,


示例4: tda18271_read_thermometer

static int tda18271_read_thermometer(struct dvb_frontend *fe){	struct tda18271_priv *priv = fe->tuner_priv;	unsigned char *regs = priv->tda18271_regs;	int tm;	/* switch thermometer on */	regs[R_TM]   |= 0x10;	tda18271_write_regs(fe, R_TM, 1);	/* read thermometer info */	tda18271_read_regs(fe);	if ((((regs[R_TM] & 0x0f) == 0x00) && ((regs[R_TM] & 0x20) == 0x20)) ||	    (((regs[R_TM] & 0x0f) == 0x08) && ((regs[R_TM] & 0x20) == 0x00))) {		if ((regs[R_TM] & 0x20) == 0x20)			regs[R_TM] &= ~0x20;		else			regs[R_TM] |= 0x20;		tda18271_write_regs(fe, R_TM, 1);		msleep(10); /* temperature sensing */		/* read thermometer info */		tda18271_read_regs(fe);	}	tm = tda18271_lookup_thermometer(fe);	/* switch thermometer off */	regs[R_TM]   &= ~0x10;	tda18271_write_regs(fe, R_TM, 1);	/* set CAL mode to normal */	regs[R_EP4]  &= ~0x03;	tda18271_write_regs(fe, R_EP4, 1);	return tm;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:41,


示例5: tda18271c2_rf_tracking_filters_correction

static int tda18271c2_rf_tracking_filters_correction(struct dvb_frontend *fe,						     u32 freq){	struct tda18271_priv *priv = fe->tuner_priv;	struct tda18271_rf_tracking_filter_cal *map = priv->rf_cal_state;	unsigned char *regs = priv->tda18271_regs;	int i, ret;	u8 tm_current, dc_over_dt, rf_tab;	s32 rfcal_comp, approx;	/* power up */	ret = tda18271_set_standby_mode(fe, 0, 0, 0);	if (tda_fail(ret))		goto fail;	/* read die current temperature */	tm_current = tda18271_read_thermometer(fe);	/* frequency dependent parameters */	tda18271_calc_rf_cal(fe, &freq);	rf_tab = regs[R_EB14];	i = tda18271_lookup_rf_band(fe, &freq, NULL);	if (tda_fail(i))		return i;	if ((0 == map[i].rf3) || (freq / 1000 < map[i].rf2)) {		approx = map[i].rf_a1 * (s32)(freq / 1000 - map[i].rf1) +			map[i].rf_b1 + rf_tab;	} else {		approx = map[i].rf_a2 * (s32)(freq / 1000 - map[i].rf2) +			map[i].rf_b2 + rf_tab;	}	if (approx < 0)		approx = 0;	if (approx > 255)		approx = 255;	tda18271_lookup_map(fe, RF_CAL_DC_OVER_DT, &freq, &dc_over_dt);	/* calculate temperature compensation */	rfcal_comp = dc_over_dt * (s32)(tm_current - priv->tm_rfcal) / 1000;	regs[R_EB14] = (unsigned char)(approx + rfcal_comp);	ret = tda18271_write_regs(fe, R_EB14, 1);fail:	return ret;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:50,


示例6: tda18271_channel_configuration

static int tda18271_channel_configuration(struct dvb_frontend *fe,					  struct tda18271_std_map_item *map,					  u32 freq, u32 bw){	struct tda18271_priv *priv = fe->tuner_priv;	unsigned char *regs = priv->tda18271_regs;	int ret;	u32 N;	/* update TV broadcast parameters */	/* set standard */	regs[R_EP3]  &= ~0x1f; /* clear std bits */	regs[R_EP3]  |= (map->agc_mode << 3) | map->std;	if (priv->id == TDA18271HDC2) {		/* set rfagc to high speed mode */		regs[R_EP3] &= ~0x04;	}	/* set cal mode to normal */	regs[R_EP4]  &= ~0x03;	/* update IF output level */	regs[R_EP4]  &= ~0x1c; /* clear if level bits */	regs[R_EP4]  |= (map->if_lvl << 2);	/* update FM_RFn */	regs[R_EP4]  &= ~0x80;	regs[R_EP4]  |= map->fm_rfn << 7;	/* update rf top / if top */	regs[R_EB22]  = 0x00;	regs[R_EB22] |= map->rfagc_top;	ret = tda18271_write_regs(fe, R_EB22, 1);	if (tda_fail(ret))		goto fail;	/* --------------------------------------------------------------- */	/* disable Power Level Indicator */	regs[R_EP1]  |= 0x40;	/* make sure thermometer is off */	regs[R_TM]   &= ~0x10;	/* frequency dependent parameters */	tda18271_calc_ir_measure(fe, &freq);	tda18271_calc_bp_filter(fe, &freq);	tda18271_calc_rf_band(fe, &freq);	tda18271_calc_gain_taper(fe, &freq);	/* --------------------------------------------------------------- */	/* dual tuner and agc1 extra configuration */	switch (priv->role) {	case TDA18271_MASTER:		regs[R_EB1]  |= 0x04; /* main vco */		break;	case TDA18271_SLAVE:		regs[R_EB1]  &= ~0x04; /* cal vco */		break;	}	/* agc1 always active */	regs[R_EB1]  &= ~0x02;	/* agc1 has priority on agc2 */	regs[R_EB1]  &= ~0x01;	ret = tda18271_write_regs(fe, R_EB1, 1);	if (tda_fail(ret))		goto fail;	/* --------------------------------------------------------------- */	N = map->if_freq * 1000 + freq;	switch (priv->role) {	case TDA18271_MASTER:		tda18271_calc_main_pll(fe, N);		tda18271_set_if_notch(fe);		tda18271_write_regs(fe, R_MPD, 4);		break;	case TDA18271_SLAVE:		tda18271_calc_cal_pll(fe, N);		tda18271_write_regs(fe, R_CPD, 4);		regs[R_MPD] = regs[R_CPD] & 0x7f;		tda18271_set_if_notch(fe);		tda18271_write_regs(fe, R_MPD, 1);		break;	}	ret = tda18271_write_regs(fe, R_TM, 7);//.........这里部分代码省略.........
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:101,


示例7: tda18271c1_rf_tracking_filter_calibration

static int tda18271c1_rf_tracking_filter_calibration(struct dvb_frontend *fe,						     u32 freq, u32 bw){	struct tda18271_priv *priv = fe->tuner_priv;	unsigned char *regs = priv->tda18271_regs;	int ret;	u32 N = 0;	/* calculate bp filter */	tda18271_calc_bp_filter(fe, &freq);	tda18271_write_regs(fe, R_EP1, 1);	regs[R_EB4]  &= 0x07;	regs[R_EB4]  |= 0x60;	tda18271_write_regs(fe, R_EB4, 1);	regs[R_EB7]   = 0x60;	tda18271_write_regs(fe, R_EB7, 1);	regs[R_EB14]  = 0x00;	tda18271_write_regs(fe, R_EB14, 1);	regs[R_EB20]  = 0xcc;	tda18271_write_regs(fe, R_EB20, 1);	/* set cal mode to RF tracking filter calibration */	regs[R_EP4]  |= 0x03;	/* calculate cal pll */	switch (priv->mode) {	case TDA18271_ANALOG:		N = freq - 1250000;		break;	case TDA18271_DIGITAL:		N = freq + bw / 2;		break;	}	tda18271_calc_cal_pll(fe, N);	/* calculate main pll */	switch (priv->mode) {	case TDA18271_ANALOG:		N = freq - 250000;		break;	case TDA18271_DIGITAL:		N = freq + bw / 2 + 1000000;		break;	}	tda18271_calc_main_pll(fe, N);	ret = tda18271_write_regs(fe, R_EP3, 11);	if (tda_fail(ret))		return ret;	msleep(5); /* RF tracking filter calibration initialization */	/* search for K,M,CO for RF calibration */	tda18271_calc_km(fe, &freq);	tda18271_write_regs(fe, R_EB13, 1);	/* search for rf band */	tda18271_calc_rf_band(fe, &freq);	/* search for gain taper */	tda18271_calc_gain_taper(fe, &freq);	tda18271_write_regs(fe, R_EP2, 1);	tda18271_write_regs(fe, R_EP1, 1);	tda18271_write_regs(fe, R_EP2, 1);	tda18271_write_regs(fe, R_EP1, 1);	regs[R_EB4]  &= 0x07;	regs[R_EB4]  |= 0x40;	tda18271_write_regs(fe, R_EB4, 1);	regs[R_EB7]   = 0x40;	tda18271_write_regs(fe, R_EB7, 1);	msleep(10); /* pll locking */	regs[R_EB20]  = 0xec;	tda18271_write_regs(fe, R_EB20, 1);	msleep(60); /* RF tracking filter calibration completion */	regs[R_EP4]  &= ~0x03; /* set cal mode to normal */	tda18271_write_regs(fe, R_EP4, 1);	tda18271_write_regs(fe, R_EP1, 1);	/* RF tracking filter correction for VHF_Low band */	if (0 == tda18271_calc_rf_cal(fe, &freq))		tda18271_write_regs(fe, R_EB14, 1);	return 0;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:98,


示例8: tda18271_powerscan

static int tda18271_powerscan(struct dvb_frontend *fe,			      u32 *freq_in, u32 *freq_out){	struct tda18271_priv *priv = fe->tuner_priv;	unsigned char *regs = priv->tda18271_regs;	int sgn, bcal, count, wait, ret;	u8 cid_target;	u16 count_limit;	u32 freq;	freq = *freq_in;	tda18271_calc_rf_band(fe, &freq);	tda18271_calc_rf_cal(fe, &freq);	tda18271_calc_gain_taper(fe, &freq);	tda18271_lookup_cid_target(fe, &freq, &cid_target, &count_limit);	tda18271_write_regs(fe, R_EP2, 1);	tda18271_write_regs(fe, R_EB14, 1);	/* downconvert frequency */	freq += 1000000;	tda18271_calc_main_pll(fe, freq);	tda18271_write_regs(fe, R_MPD, 4);	msleep(5); /* pll locking */	/* detection mode */	regs[R_EP4]  &= ~0x03;	regs[R_EP4]  |= 0x01;	tda18271_write_regs(fe, R_EP4, 1);	/* launch power detection measurement */	tda18271_write_regs(fe, R_EP2, 1);	/* read power detection info, stored in EB10 */	ret = tda18271_read_extended(fe);	if (tda_fail(ret))		return ret;	/* algorithm initialization */	sgn = 1;	*freq_out = *freq_in;	bcal = 0;	count = 0;	wait = false;	while ((regs[R_EB10] & 0x3f) < cid_target) {		/* downconvert updated freq to 1 MHz */		freq = *freq_in + (sgn * count) + 1000000;		tda18271_calc_main_pll(fe, freq);		tda18271_write_regs(fe, R_MPD, 4);		if (wait) {			msleep(5); /* pll locking */			wait = false;		} else			udelay(100); /* pll locking */		/* launch power detection measurement */		tda18271_write_regs(fe, R_EP2, 1);		/* read power detection info, stored in EB10 */		ret = tda18271_read_extended(fe);		if (tda_fail(ret))			return ret;		count += 200;		if (count <= count_limit)			continue;		if (sgn <= 0)			break;		sgn = -1 * sgn;		count = 200;		wait = true;	}	if ((regs[R_EB10] & 0x3f) >= cid_target) {		bcal = 1;		*freq_out = freq - 1000000;	} else		bcal = 0;	tda_cal("bcal = %d, freq_in = %d, freq_out = %d (freq = %d)/n",		bcal, *freq_in, *freq_out, freq);	return bcal;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:93,


示例9: tda18271_calibrate_rf

static int tda18271_calibrate_rf(struct dvb_frontend *fe, u32 freq){	struct tda18271_priv *priv = fe->tuner_priv;	unsigned char *regs = priv->tda18271_regs;	u32 N;	/* set CAL mode to normal */	regs[R_EP4]  &= ~0x03;	tda18271_write_regs(fe, R_EP4, 1);	/* switch off agc1 */	regs[R_EP3]  |= 0x40; /* sm_lt = 1 */	regs[R_EB18] |= 0x03; /* set agc1_gain to 15 dB */	tda18271_write_regs(fe, R_EB18, 1);	/* frequency dependent parameters */	tda18271_calc_bp_filter(fe, &freq);	tda18271_calc_gain_taper(fe, &freq);	tda18271_calc_rf_band(fe, &freq);	tda18271_calc_km(fe, &freq);	tda18271_write_regs(fe, R_EP1, 3);	tda18271_write_regs(fe, R_EB13, 1);	/* main pll charge pump source */	tda18271_charge_pump_source(fe, TDA18271_MAIN_PLL, 1);	/* cal pll charge pump source */	tda18271_charge_pump_source(fe, TDA18271_CAL_PLL, 1);	/* force dcdc converter to 0 V */	regs[R_EB14] = 0x00;	tda18271_write_regs(fe, R_EB14, 1);	/* disable plls lock */	regs[R_EB20] &= ~0x20;	tda18271_write_regs(fe, R_EB20, 1);	/* set CAL mode to RF tracking filter calibration */	regs[R_EP4]  |= 0x03;	tda18271_write_regs(fe, R_EP4, 2);	/* --------------------------------------------------------------- */	/* set the internal calibration signal */	N = freq;	tda18271_calc_cal_pll(fe, N);	tda18271_write_regs(fe, R_CPD, 4);	/* downconvert internal calibration */	N += 1000000;	tda18271_calc_main_pll(fe, N);	tda18271_write_regs(fe, R_MPD, 4);	msleep(5);	tda18271_write_regs(fe, R_EP2, 1);	tda18271_write_regs(fe, R_EP1, 1);	tda18271_write_regs(fe, R_EP2, 1);	tda18271_write_regs(fe, R_EP1, 1);	/* --------------------------------------------------------------- */	/* normal operation for the main pll */	tda18271_charge_pump_source(fe, TDA18271_MAIN_PLL, 0);	/* normal operation for the cal pll  */	tda18271_charge_pump_source(fe, TDA18271_CAL_PLL, 0);	msleep(10); /* plls locking */	/* launch the rf tracking filters calibration */	regs[R_EB20]  |= 0x20;	tda18271_write_regs(fe, R_EB20, 1);	msleep(60); /* calibration */	/* --------------------------------------------------------------- */	/* set CAL mode to normal */	regs[R_EP4]  &= ~0x03;	/* switch on agc1 */	regs[R_EP3]  &= ~0x40; /* sm_lt = 0 */	regs[R_EB18] &= ~0x03; /* set agc1_gain to  6 dB */	tda18271_write_regs(fe, R_EB18, 1);	tda18271_write_regs(fe, R_EP3, 2);	/* synchronization */	tda18271_write_regs(fe, R_EP1, 1);	/* get calibration result */	tda18271_read_extended(fe);//.........这里部分代码省略.........
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:101,



注:本文中的tda18271_write_regs函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ tda_fail函数代码示例
C++ td_verror函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。