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

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

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

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

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

示例1: tda18271_ir_cal_init

static int tda18271_ir_cal_init(struct dvb_frontend *fe){	struct tda18271_priv *priv = fe->tuner_priv;	unsigned char *regs = priv->tda18271_regs;	int ret;	ret = tda18271_read_regs(fe);	if (tda_fail(ret))		goto fail;	/* test IR_CAL_OK to see if we need init */	if ((regs[R_EP1] & 0x08) == 0)		ret = tda18271_init_regs(fe);fail:	return ret;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:16,


示例2: tda18271_toggle_output

static int tda18271_toggle_output(struct dvb_frontend *fe, int standby){	struct tda18271_priv *priv = fe->tuner_priv;	int ret = tda18271_set_standby_mode(fe, standby ? 1 : 0,			priv->output_opt & TDA18271_OUTPUT_LT_OFF ? 1 : 0,			priv->output_opt & TDA18271_OUTPUT_XT_OFF ? 1 : 0);	if (tda_fail(ret))		goto fail;	tda_dbg("%s mode: xtal oscillator %s, slave tuner loop thru %s/n",		standby ? "standby" : "active",		priv->output_opt & TDA18271_OUTPUT_XT_OFF ? "off" : "on",		priv->output_opt & TDA18271_OUTPUT_LT_OFF ? "off" : "on");fail:	return ret;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:18,


示例3: tda18271_set_params

static int tda18271_set_params(struct dvb_frontend *fe){	struct dtv_frontend_properties *c = &fe->dtv_property_cache;	u32 delsys = c->delivery_system;	u32 bw = c->bandwidth_hz;	u32 freq = c->frequency;	struct tda18271_priv *priv = fe->tuner_priv;	struct tda18271_std_map *std_map = &priv->std;	struct tda18271_std_map_item *map;	int ret;	priv->mode = TDA18271_DIGITAL;	switch (delsys) {	case SYS_ATSC:		map = &std_map->atsc_6;		bw = 6000000;		break;	case SYS_ISDBT:	case SYS_DVBT:	case SYS_DVBT2:		if (bw <= 6000000) {			map = &std_map->dvbt_6;		} else if (bw <= 7000000) {			map = &std_map->dvbt_7;		} else {			map = &std_map->dvbt_8;		}		break;	case SYS_DVBC_ANNEX_B:		bw = 6000000;		/* falltrough */	case SYS_DVBC_ANNEX_A:	case SYS_DVBC_ANNEX_C:		if (bw <= 6000000) {			map = &std_map->qam_6;		} else if (bw <= 7000000) {			map = &std_map->qam_7;		} else {			map = &std_map->qam_8;		}		break;	default:		tda_warn("modulation type not supported!/n");		return -EINVAL;	}	/* When tuning digital, the analog demod must be tri-stated */	if (fe->ops.analog_ops.standby)		fe->ops.analog_ops.standby(fe);	ret = tda18271_tune(fe, map, freq, bw);	if (tda_fail(ret))		goto fail;	priv->if_freq   = map->if_freq;	priv->frequency = freq;	priv->bandwidth = bw;fail:	return ret;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:62,


示例4: 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,


示例5: 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,


示例6: tda18271_rf_tracking_filters_init

static int tda18271_rf_tracking_filters_init(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 bcal, rf, i;	s32 divisor, dividend;#define RF1 0#define RF2 1#define RF3 2	u32 rf_default[3];	u32 rf_freq[3];	s32 prog_cal[3];	s32 prog_tab[3];	i = tda18271_lookup_rf_band(fe, &freq, NULL);	if (tda_fail(i))		return i;	rf_default[RF1] = 1000 * map[i].rf1_def;	rf_default[RF2] = 1000 * map[i].rf2_def;	rf_default[RF3] = 1000 * map[i].rf3_def;	for (rf = RF1; rf <= RF3; rf++) {		if (0 == rf_default[rf])			return 0;		tda_cal("freq = %d, rf = %d/n", freq, rf);		/* look for optimized calibration frequency */		bcal = tda18271_powerscan(fe, &rf_default[rf], &rf_freq[rf]);		if (tda_fail(bcal))			return bcal;		tda18271_calc_rf_cal(fe, &rf_freq[rf]);		prog_tab[rf] = (s32)regs[R_EB14];		if (1 == bcal)			prog_cal[rf] =				(s32)tda18271_calibrate_rf(fe, rf_freq[rf]);		else			prog_cal[rf] = prog_tab[rf];		switch (rf) {		case RF1:			map[i].rf_a1 = 0;			map[i].rf_b1 = (prog_cal[RF1] - prog_tab[RF1]);			map[i].rf1   = rf_freq[RF1] / 1000;			break;		case RF2:			dividend = (prog_cal[RF2] - prog_tab[RF2] -				    prog_cal[RF1] + prog_tab[RF1]);			divisor = (s32)(rf_freq[RF2] - rf_freq[RF1]) / 1000;			map[i].rf_a1 = (dividend / divisor);			map[i].rf2   = rf_freq[RF2] / 1000;			break;		case RF3:			dividend = (prog_cal[RF3] - prog_tab[RF3] -				    prog_cal[RF2] + prog_tab[RF2]);			divisor = (s32)(rf_freq[RF3] - rf_freq[RF2]) / 1000;			map[i].rf_a2 = (dividend / divisor);			map[i].rf_b2 = (prog_cal[RF2] - prog_tab[RF2]);			map[i].rf3   = rf_freq[RF3] / 1000;			break;		default:			BUG();		}	}	return 0;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:71,


示例7: 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,


示例8: tda18271_set_params

static int tda18271_set_params(struct dvb_frontend *fe,                               struct dvb_frontend_parameters *params){    struct tda18271_priv *priv = fe->tuner_priv;    struct tda18271_std_map *std_map = &priv->std;    struct tda18271_std_map_item *map;    int ret;    u32 bw, freq = params->frequency;    priv->mode = TDA18271_DIGITAL;    if (fe->ops.info.type == FE_ATSC) {        switch (params->u.vsb.modulation) {        case VSB_8:        case VSB_16:            map = &std_map->atsc_6;            break;        case QAM_64:        case QAM_256:            map = &std_map->qam_6;            break;        default:            tda_warn("modulation not set!/n");            return -EINVAL;        }#if 0 /* keep */        /* userspace request is already center adjusted */        freq += 1750000; /* Adjust to center (+1.75MHZ) */#endif        bw = 6000000;    } else if (fe->ops.info.type == FE_OFDM) {        switch (params->u.ofdm.bandwidth) {        case BANDWIDTH_6_MHZ:            bw = 6000000;            map = &std_map->dvbt_6;            break;        case BANDWIDTH_7_MHZ:            bw = 7000000;            map = &std_map->dvbt_7;            break;        case BANDWIDTH_8_MHZ:            bw = 8000000;            map = &std_map->dvbt_8;            break;        default:            tda_warn("bandwidth not set!/n");            return -EINVAL;        }    } else {        tda_warn("modulation type not supported!/n");        return -EINVAL;    }    /* When tuning digital, the analog demod must be tri-stated */    if (fe->ops.analog_ops.standby)        fe->ops.analog_ops.standby(fe);    ret = tda18271_tune(fe, map, freq, bw);    if (tda_fail(ret))        goto fail;    priv->frequency = freq;    priv->bandwidth = (fe->ops.info.type == FE_OFDM) ?                      params->u.ofdm.bandwidth : 0;fail:    return ret;}
开发者ID:OpenStbV4l-dvb,项目名称:v4l-dvb,代码行数:68,


示例9: mutex_lock

struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,				     struct i2c_adapter *i2c,				     struct tda18271_config *cfg){	struct tda18271_priv *priv = NULL;	int instance, ret;	mutex_lock(&tda18271_list_mutex);	instance = hybrid_tuner_request_state(struct tda18271_priv, priv,					      hybrid_tuner_instance_list,					      i2c, addr, "tda18271");	switch (instance) {	case 0:		goto fail;	case 1:		/* new tuner instance */		fe->tuner_priv = priv;		tda18271_setup_configuration(fe, cfg);		priv->cal_initialized = false;		mutex_init(&priv->lock);		ret = tda18271_get_id(fe);		if (tda_fail(ret))			goto fail;		ret = tda18271_assign_map_layout(fe);		if (tda_fail(ret))			goto fail;		/* if delay_cal is set, delay IR & RF calibration until init()		 * module option 'cal' overrides this delay */		if ((cfg->delay_cal) && (!tda18271_need_cal_on_startup(cfg)))			break;		mutex_lock(&priv->lock);		tda18271_init_regs(fe);		if ((tda18271_need_cal_on_startup(cfg)) &&		    (priv->id == TDA18271HDC2))			tda18271c2_rf_cal_init(fe);		/* enter standby mode, with required output features enabled */		ret = tda18271_toggle_output(fe, 1);		tda_fail(ret);		mutex_unlock(&priv->lock);		break;	default:		/* existing tuner instance */		fe->tuner_priv = priv;		/* allow dvb driver to override configuration settings */		if (cfg) {			if (cfg->gate != TDA18271_GATE_ANALOG)				priv->gate = cfg->gate;			if (cfg->role)				priv->role = cfg->role;			if (cfg->config)				priv->config = cfg->config;			if (cfg->small_i2c)				priv->small_i2c = cfg->small_i2c;			if (cfg->output_opt)				priv->output_opt = cfg->output_opt;			if (cfg->std_map)				tda18271_update_std_map(fe, cfg->std_map);		}		if (tda18271_need_cal_on_startup(cfg))			tda18271_init(fe);		break;	}	/* override default std map with values in config struct */	if ((cfg) && (cfg->std_map))		tda18271_update_std_map(fe, cfg->std_map);	mutex_unlock(&tda18271_list_mutex);	memcpy(&fe->ops.tuner_ops, &tda18271_tuner_ops,	       sizeof(struct dvb_tuner_ops));	if (tda18271_debug & (DBG_MAP | DBG_ADV))		tda18271_dump_std_map(fe);	return fe;fail:	mutex_unlock(&tda18271_list_mutex);	tda18271_release(fe);	return NULL;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:93,


示例10: mutex_lock

struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,				     struct i2c_adapter *i2c,				     struct tda18271_config *cfg){	struct tda18271_priv *priv = NULL;	int instance, ret;	mutex_lock(&tda18271_list_mutex);	instance = hybrid_tuner_request_state(struct tda18271_priv, priv,					      hybrid_tuner_instance_list,					      i2c, addr, "tda18271");	switch (instance) {	case 0:		goto fail;	case 1:		/*                    */		fe->tuner_priv = priv;		tda18271_setup_configuration(fe, cfg);		priv->cal_initialized = false;		mutex_init(&priv->lock);		ret = tda18271_get_id(fe);		if (tda_fail(ret))			goto fail;		ret = tda18271_assign_map_layout(fe);		if (tda_fail(ret))			goto fail;		mutex_lock(&priv->lock);		tda18271_init_regs(fe);		if ((tda18271_need_cal_on_startup(cfg)) &&		    (priv->id == TDA18271HDC2))			tda18271c2_rf_cal_init(fe);		mutex_unlock(&priv->lock);		break;	default:		/*                         */		fe->tuner_priv = priv;		/*                                                     */		if (cfg) {			if (cfg->gate != TDA18271_GATE_ANALOG)				priv->gate = cfg->gate;			if (cfg->role)				priv->role = cfg->role;			if (cfg->config)				priv->config = cfg->config;			if (cfg->small_i2c)				priv->small_i2c = cfg->small_i2c;			if (cfg->output_opt)				priv->output_opt = cfg->output_opt;			if (cfg->std_map)				tda18271_update_std_map(fe, cfg->std_map);		}		if (tda18271_need_cal_on_startup(cfg))			tda18271_init(fe);		break;	}	/*                                                       */	if ((cfg) && (cfg->std_map))		tda18271_update_std_map(fe, cfg->std_map);	mutex_unlock(&tda18271_list_mutex);	memcpy(&fe->ops.tuner_ops, &tda18271_tuner_ops,	       sizeof(struct dvb_tuner_ops));	if (tda18271_debug & (DBG_MAP | DBG_ADV))		tda18271_dump_std_map(fe);	return fe;fail:	mutex_unlock(&tda18271_list_mutex);	tda18271_release(fe);	return NULL;}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:84,



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


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