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

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

?? pc300_drv.c

?? 優龍2410linux2.6.8內核源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
	/* Reset the FALC chip */	cpc_writeb(card->hw.falcbase + card->hw.cpld_reg1,		   cpc_readb(card->hw.falcbase + card->hw.cpld_reg1) |		   (CPLD_REG1_FALC_RESET << (2 * ch)));	udelay(10000);	cpc_writeb(card->hw.falcbase + card->hw.cpld_reg1,		   cpc_readb(card->hw.falcbase + card->hw.cpld_reg1) &		   ~(CPLD_REG1_FALC_RESET << (2 * ch)));	if (conf->media == IF_IFACE_T1) {		falc_init_t1(card, ch);	} else {		falc_init_e1(card, ch);	}	falc_init_hdlc(card, ch);	if (conf->rx_sens == PC300_RX_SENS_SH) {		cpc_writeb(falcbase + F_REG(LIM0, ch),			   cpc_readb(falcbase + F_REG(LIM0, ch)) & ~LIM0_EQON);	} else {		cpc_writeb(falcbase + F_REG(LIM0, ch),			   cpc_readb(falcbase + F_REG(LIM0, ch)) | LIM0_EQON);	}	cpc_writeb(card->hw.falcbase + card->hw.cpld_reg2,		   cpc_readb(card->hw.falcbase + card->hw.cpld_reg2) |		   ((CPLD_REG2_FALC_TX_CLK | CPLD_REG2_FALC_RX_CLK) << (2 * ch)));	/* Clear all interrupt registers */	dummy = cpc_readb(falcbase + F_REG(FISR0, ch)) +		cpc_readb(falcbase + F_REG(FISR1, ch)) +		cpc_readb(falcbase + F_REG(FISR2, ch)) +		cpc_readb(falcbase + F_REG(FISR3, ch));	CPC_UNLOCK(card, flags);}void falc_check_status(pc300_t * card, int ch, unsigned char frs0){	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;	falc_t *pfalc = (falc_t *) & chan->falc;	uclong falcbase = card->hw.falcbase;	/* Verify LOS */	if (frs0 & FRS0_LOS) {		if (!pfalc->red_alarm) {			pfalc->red_alarm = 1;			pfalc->los++;			if (!pfalc->blue_alarm) {				// EVENT_FALC_ABNORMAL				if (conf->media == IF_IFACE_T1) {					/* Disable this interrupt as it may otherwise interfere 					 * with other working boards. */					cpc_writeb(falcbase + F_REG(IMR0, ch), 						   cpc_readb(falcbase + F_REG(IMR0, ch))						   | IMR0_PDEN);				}				falc_disable_comm(card, ch);				// EVENT_FALC_ABNORMAL			}		}	} else {		if (pfalc->red_alarm) {			pfalc->red_alarm = 0;			pfalc->losr++;		}	}	if (conf->fr_mode != PC300_FR_UNFRAMED) {		/* Verify AIS alarm */		if (frs0 & FRS0_AIS) {			if (!pfalc->blue_alarm) {				pfalc->blue_alarm = 1;				pfalc->ais++;				// EVENT_AIS				if (conf->media == IF_IFACE_T1) {					/* Disable this interrupt as it may otherwise interfere with                       other working boards. */					cpc_writeb(falcbase + F_REG(IMR0, ch),						   cpc_readb(falcbase + F_REG(IMR0, ch)) | IMR0_PDEN);				}				falc_disable_comm(card, ch);				// EVENT_AIS			}		} else {			pfalc->blue_alarm = 0;		}		/* Verify LFA */		if (frs0 & FRS0_LFA) {			if (!pfalc->loss_fa) {				pfalc->loss_fa = 1;				pfalc->lfa++;				if (!pfalc->blue_alarm && !pfalc->red_alarm) {					// EVENT_FALC_ABNORMAL					if (conf->media == IF_IFACE_T1) {						/* Disable this interrupt as it may otherwise 						 * interfere with other working boards. */						cpc_writeb(falcbase + F_REG(IMR0, ch),							   cpc_readb(falcbase + F_REG(IMR0, ch))							   | IMR0_PDEN);					}					falc_disable_comm(card, ch);					// EVENT_FALC_ABNORMAL				}			}		} else {			if (pfalc->loss_fa) {				pfalc->loss_fa = 0;				pfalc->farec++;			}		}		/* Verify LMFA */		if (pfalc->multiframe_mode && (frs0 & FRS0_LMFA)) {			/* D4 or CRC4 frame mode */			if (!pfalc->loss_mfa) {				pfalc->loss_mfa = 1;				pfalc->lmfa++;				if (!pfalc->blue_alarm && !pfalc->red_alarm &&				    !pfalc->loss_fa) {					// EVENT_FALC_ABNORMAL					if (conf->media == IF_IFACE_T1) {						/* Disable this interrupt as it may otherwise 						 * interfere with other working boards. */						cpc_writeb(falcbase + F_REG(IMR0, ch),							   cpc_readb(falcbase + F_REG(IMR0, ch))							   | IMR0_PDEN);					}					falc_disable_comm(card, ch);					// EVENT_FALC_ABNORMAL				}			}		} else {			pfalc->loss_mfa = 0;		}		/* Verify Remote Alarm */		if (frs0 & FRS0_RRA) {			if (!pfalc->yellow_alarm) {				pfalc->yellow_alarm = 1;				pfalc->rai++;				if (pfalc->sync) {					// EVENT_RAI					falc_disable_comm(card, ch);					// EVENT_RAI				}			}		} else {			pfalc->yellow_alarm = 0;		}	} /* if !PC300_UNFRAMED */	if (pfalc->red_alarm || pfalc->loss_fa ||	    pfalc->loss_mfa || pfalc->blue_alarm) {		if (pfalc->sync) {			pfalc->sync = 0;			chan->d.line_off++;			cpc_writeb(falcbase + card->hw.cpld_reg2,				   cpc_readb(falcbase + card->hw.cpld_reg2) &				   ~(CPLD_REG2_FALC_LED2 << (2 * ch)));		}	} else {		if (!pfalc->sync) {			pfalc->sync = 1;			chan->d.line_on++;			cpc_writeb(falcbase + card->hw.cpld_reg2,				   cpc_readb(falcbase + card->hw.cpld_reg2) |				   (CPLD_REG2_FALC_LED2 << (2 * ch)));		}	}	if (pfalc->sync && !pfalc->yellow_alarm) {		if (!pfalc->active) {			// EVENT_FALC_NORMAL			if (pfalc->loop_active) {				return;			}			if (conf->media == IF_IFACE_T1) {				cpc_writeb(falcbase + F_REG(IMR0, ch),					   cpc_readb(falcbase + F_REG(IMR0, ch)) & ~IMR0_PDEN);			}			falc_enable_comm(card, ch);			// EVENT_FALC_NORMAL			pfalc->active = 1;		}	} else {		if (pfalc->active) {			pfalc->active = 0;		}	}}void falc_update_stats(pc300_t * card, int ch){	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;	falc_t *pfalc = (falc_t *) & chan->falc;	uclong falcbase = card->hw.falcbase;	ucshort counter;	counter = cpc_readb(falcbase + F_REG(FECL, ch));	counter |= cpc_readb(falcbase + F_REG(FECH, ch)) << 8;	pfalc->fec += counter;	counter = cpc_readb(falcbase + F_REG(CVCL, ch));	counter |= cpc_readb(falcbase + F_REG(CVCH, ch)) << 8;	pfalc->cvc += counter;	counter = cpc_readb(falcbase + F_REG(CECL, ch));	counter |= cpc_readb(falcbase + F_REG(CECH, ch)) << 8;	pfalc->cec += counter;	counter = cpc_readb(falcbase + F_REG(EBCL, ch));	counter |= cpc_readb(falcbase + F_REG(EBCH, ch)) << 8;	pfalc->ebc += counter;	if (cpc_readb(falcbase + F_REG(LCR1, ch)) & LCR1_EPRM) {		mdelay(10);		counter = cpc_readb(falcbase + F_REG(BECL, ch));		counter |= cpc_readb(falcbase + F_REG(BECH, ch)) << 8;		pfalc->bec += counter;		if (((conf->media == IF_IFACE_T1) &&		     (cpc_readb(falcbase + F_REG(FRS1, ch)) & FRS1_LLBAD) &&		     (!(cpc_readb(falcbase + F_REG(FRS1, ch)) & FRS1_PDEN)))		    ||		    ((conf->media == IF_IFACE_E1) &&		     (cpc_readb(falcbase + F_REG(RSP, ch)) & RSP_LLBAD))) {			pfalc->prbs = 2;		} else {			pfalc->prbs = 1;		}	}}/*---------------------------------------------------------------------------- * falc_remote_loop *---------------------------------------------------------------------------- * Description:	In the remote loopback mode the clock and data recovered *		from the line inputs RL1/2 or RDIP/RDIN are routed back *		to the line outputs XL1/2 or XDOP/XDON via the analog *		transmitter. As in normal mode they are processsed by *		the synchronizer and then sent to the system interface. *---------------------------------------------------------------------------- */void falc_remote_loop(pc300_t * card, int ch, int loop_on){	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;	falc_t *pfalc = (falc_t *) & chan->falc;	uclong falcbase = card->hw.falcbase;	if (loop_on) {		// EVENT_FALC_ABNORMAL		if (conf->media == IF_IFACE_T1) {			/* Disable this interrupt as it may otherwise interfere with 			 * other working boards. */			cpc_writeb(falcbase + F_REG(IMR0, ch),				   cpc_readb(falcbase + F_REG(IMR0, ch)) | IMR0_PDEN);		}		falc_disable_comm(card, ch);		// EVENT_FALC_ABNORMAL		cpc_writeb(falcbase + F_REG(LIM1, ch),			   cpc_readb(falcbase + F_REG(LIM1, ch)) | LIM1_RL);		pfalc->loop_active = 1;	} else {		cpc_writeb(falcbase + F_REG(LIM1, ch),			   cpc_readb(falcbase + F_REG(LIM1, ch)) & ~LIM1_RL);		pfalc->sync = 0;		cpc_writeb(falcbase + card->hw.cpld_reg2,			   cpc_readb(falcbase + card->hw.cpld_reg2) &			   ~(CPLD_REG2_FALC_LED2 << (2 * ch)));		pfalc->active = 0;		falc_issue_cmd(card, ch, CMDR_XRES);		pfalc->loop_active = 0;	}}/*---------------------------------------------------------------------------- * falc_local_loop *---------------------------------------------------------------------------- * Description: The local loopback mode disconnects the receive lines  *		RL1/RL2 resp. RDIP/RDIN from the receiver. Instead of the *		signals coming from the line the data provided by system *		interface are routed through the analog receiver back to *		the system interface. The unipolar bit stream will be *		undisturbed transmitted on the line. Receiver and transmitter *		coding must be identical. *---------------------------------------------------------------------------- */void falc_local_loop(pc300_t * card, int ch, int loop_on){	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];	falc_t *pfalc = (falc_t *) & chan->falc;	uclong falcbase = card->hw.falcbase;	if (loop_on) {		cpc_writeb(falcbase + F_REG(LIM0, ch),			   cpc_readb(falcbase + F_REG(LIM0, ch)) | LIM0_LL);		pfalc->loop_active = 1;	} else {		cpc_writeb(falcbase + F_REG(LIM0, ch),			   cpc_readb(falcbase + F_REG(LIM0, ch)) & ~LIM0_LL);		pfalc->loop_active = 0;	}}/*---------------------------------------------------------------------------- * falc_payload_loop *---------------------------------------------------------------------------- * Description: This routine allows to enable/disable payload loopback. *		When the payload loop is activated, the received 192 bits *		of payload data will be looped back to the transmit *		direction. The framing bits, CRC6 and DL bits are not  *		looped. They are originated by the FALC-LH transmitter. *---------------------------------------------------------------------------- */void falc_payload_loop(pc300_t * card, int ch, int loop_on){	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;	falc_t *pfalc = (falc_t *) & chan->falc;	uclong falcbase = card->hw.falcbase;	if (loop_on) {		// EVENT_FALC_ABNORMAL		if (conf->media == IF_IFACE_T1) {			/* Disable this interrupt as it may otherwise interfere with 			 * other working boards. */			cpc_writeb(falcbase + F_REG(IMR0, ch),				   cpc_readb(falcbase + F_REG(IMR0, ch)) | IMR0_PDEN);		}		falc_disable_comm(card, ch);		// EVENT_FALC_ABNORMAL		cpc_writeb(falcbase + F_REG(FMR2, ch),			   cpc_readb(falcbase + F_REG(FMR2, ch)) | FMR2_PLB);		if (conf->media == IF_IFACE_T1) {			cpc_writeb(falcbase + F_REG(FMR4, ch),				   cpc_readb(falcbase + F_REG(FMR4, ch)) | FMR4_TM);		} else {			cpc_writeb(falcbase + F_REG(FMR5, ch),				   cpc_readb(falcbase + F_REG(FMR5, ch)) | XSP_TT0);		}		falc_open_all_timeslots(card, ch);		pfalc->loop_active = 2;	} else {		cpc_writeb(falcbase + F_REG(FMR2, ch),			   cpc_readb(falcbase + F_REG(FMR2, ch)) & ~FMR2_PLB);		if (conf->media == IF_IFACE_T1) {			cpc_writeb(falcbase + F_REG(FMR4, ch),				   cpc_readb(falcbase + F_REG(FMR4, ch)) & ~FMR4_TM);		} else {			cpc_writeb(falcbase + F_REG(FMR5, ch),				   cpc_readb(falcbase + F_REG(FMR5, ch)) & ~XSP_TT0);		}		pfalc->sync = 0;		cpc_writeb(falcbase + card->hw.cpld_reg2,			   cpc_readb(falcbase + card->hw.cpld_reg2) &			   ~(CPLD_REG2_FALC_LED2 << (2 * ch)));		pfalc->active = 0;		falc_issue_cmd(card, ch, CMDR_XRES);		pfalc->loop_active = 0;	}}/*---------------------------------------------------------------------------- * turn_off_xlu *---------------------------------------------------------------------------- * Description:	Turns XLU bit off in the proper register *---------------------------------------------------------------------------- */void turn_off_xlu(pc300_t * card, int ch){	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;	uclong falcbase = card->hw.falcbase;	if (conf->media == IF_IFACE_T1) {		cpc_writeb(falcbase + F_REG(FMR5, ch),			   cpc_readb(falcbase + F_REG(FMR5, ch)) & ~FMR5_XLU);	} else {		cpc_writeb(falcbase + F_REG(FMR3, ch),			   cpc_readb(falcbase + F_REG(FMR3, ch)) & ~FMR3_XLU);	}}/*---------------------------------------------------------------------------- * turn_off_xld *---------------------------------------------------------------------------- * Description: Turns XLD bit off in the proper register *---------------------------------------------------------------------------- */void turn_off_xld(pc300_t * card, int ch){	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;	uclong falcbase = card->hw.falcbase;	if (conf->media == IF_IFACE_T1) {		cpc_writeb(falcbase + F_REG(FMR5, ch),			   cpc_readb(falcbase + F_REG(FMR5, ch)) & ~FMR5_XLD);	} else {		cpc_writeb(falcbase + F_REG(FMR3, ch),			   cpc_readb(falcbase + F_REG(FMR3, ch)) & ~FMR3_XLD);	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕不卡一区| 国产福利精品一区| 国产成人午夜99999| 日本丶国产丶欧美色综合| 欧美草草影院在线视频| 亚洲精品免费视频| 国产精品一二三四| 日韩一级二级三级| 亚洲一区二区三区三| 成人午夜又粗又硬又大| 日韩欧美高清一区| 午夜欧美2019年伦理| 日本大香伊一区二区三区| 欧美精彩视频一区二区三区| 日本欧美大码aⅴ在线播放| 欧美怡红院视频| 亚洲精品日韩一| av不卡免费在线观看| 久久综合丝袜日本网| 乱一区二区av| 日韩欧美电影在线| 蜜桃av一区二区在线观看| 欧美男同性恋视频网站| 亚洲成av人片一区二区| 欧美午夜寂寞影院| 亚洲3atv精品一区二区三区| 欧美日韩日日夜夜| 亚洲一区中文日韩| 欧洲国产伦久久久久久久| 一区二区三区四区在线播放| 91精品福利在线| 天堂一区二区在线免费观看| 欧美精品v国产精品v日韩精品| 亚洲大片在线观看| 69成人精品免费视频| 日本亚洲视频在线| 精品免费99久久| 高清不卡在线观看| 亚洲色图都市小说| 欧美日韩三级在线| 麻豆91小视频| 国产亚洲短视频| 99久久婷婷国产综合精品电影| 亚洲三级在线免费观看| 色久优优欧美色久优优| 亚洲成人手机在线| 日韩精品一区二区三区四区| 国产精品99久久久久久久vr| 亚洲特级片在线| 欧美日本韩国一区二区三区视频| 蜜臀av一区二区在线观看| 久久综合九色综合97_久久久| 国产99久久久久| 亚洲免费伊人电影| 欧美精品日韩精品| 国产福利电影一区二区三区| 亚洲蜜臀av乱码久久精品蜜桃| 欧美日韩在线播| 九九久久精品视频| 亚洲欧美日韩国产成人精品影院 | 精品女同一区二区| 成人精品免费视频| 亚洲第一av色| 欧美高清在线视频| 欧美亚洲综合网| 免费成人av在线| 中文字幕一区二区三区四区不卡| 7799精品视频| 99在线热播精品免费| 蜜桃av一区二区三区| 国产精品人人做人人爽人人添 | 精品久久久久av影院| 不卡一区在线观看| 蜜桃视频第一区免费观看| 国产精品网站在线观看| 6080午夜不卡| 99精品桃花视频在线观看| 久久精品国产秦先生| 亚洲综合激情小说| 国产日韩欧美制服另类| 欧美精品在线观看播放| 99精品视频中文字幕| 国产在线播放一区| 日本免费新一区视频| 亚洲一区二区三区在线看| 国产精品五月天| 久久亚洲一级片| 3d动漫精品啪啪一区二区竹菊| 99国产精品99久久久久久| 国内成+人亚洲+欧美+综合在线| 亚洲国产综合色| 亚洲视频一区二区在线| 久久久一区二区三区捆绑**| 欧美一级在线免费| 欧美天天综合网| 91成人网在线| 91玉足脚交白嫩脚丫在线播放| 国内不卡的二区三区中文字幕| 天天色综合天天| 亚洲成人一区二区在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 久久久久99精品国产片| 精品日韩在线观看| 日韩欧美在线网站| 日韩欧美国产小视频| 日韩三级在线观看| 日韩一区国产二区欧美三区| 日韩欧美色综合网站| 欧美伊人久久大香线蕉综合69| 色噜噜狠狠一区二区三区果冻| 99re8在线精品视频免费播放| 成人深夜福利app| 成人伦理片在线| 99久久er热在这里只有精品15| 9久草视频在线视频精品| 成人影视亚洲图片在线| 国产成人丝袜美腿| 国产成人午夜高潮毛片| 国产伦精品一区二区三区在线观看| 国内久久精品视频| 国产精品亚洲人在线观看| 成人福利在线看| 91福利在线导航| 欧美精品色综合| 久久综合色一综合色88| 国产日韩欧美一区二区三区综合| 欧美国产精品劲爆| 尤物av一区二区| 奇米影视一区二区三区| 国产在线精品一区二区不卡了| 国产精品一区二区三区网站| 成人av综合在线| 欧美日韩二区三区| 欧美精品一区二区三区高清aⅴ| 亚洲国产岛国毛片在线| 一区二区三区高清不卡| 日本三级韩国三级欧美三级| 国产精品一区专区| 99久久久精品免费观看国产蜜| 欧美日韩在线三区| 久久综合久色欧美综合狠狠| 日韩毛片在线免费观看| 日韩成人精品在线| 国产91精品免费| 欧美日韩亚洲综合在线| 久久综合999| 亚洲一区二区三区美女| 国产在线播精品第三| 欧美中文字幕一区| 久久老女人爱爱| 五月天一区二区三区| 国产99久久久精品| 欧美日韩免费视频| 中文字幕不卡在线播放| 日韩福利电影在线观看| 成人一区二区三区中文字幕| 欧美日韩精品一区二区| 国产女同互慰高潮91漫画| 日日摸夜夜添夜夜添精品视频| 国产成人精品一区二区三区网站观看| 欧美色区777第一页| 国产精品欧美精品| 精久久久久久久久久久| 91免费视频网| 久久综合中文字幕| 日韩精品免费视频人成| 一本到一区二区三区| 日本一区二区三区在线观看| 日本vs亚洲vs韩国一区三区| 色综合久久中文字幕综合网| 国产午夜精品久久久久久免费视| 午夜av电影一区| 在线看日本不卡| 国产精品美女久久久久久| 国产伦理精品不卡| 欧美刺激脚交jootjob| 午夜国产精品影院在线观看| 色老综合老女人久久久| 最新热久久免费视频| 国产精品一线二线三线| 日韩免费视频一区| 亚洲1区2区3区4区| 精品视频1区2区3区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 精品国产乱码久久久久久久| 午夜伦理一区二区| 欧美三日本三级三级在线播放| 1024亚洲合集| 99国产精品久久| 国产精品乱码久久久久久| 国产成人综合自拍| 国产午夜久久久久| 国产成人鲁色资源国产91色综| 精品女同一区二区| 国内精品免费在线观看| 国产亚洲精品超碰| 丁香婷婷综合网| 亚洲欧洲在线观看av| jlzzjlzz亚洲女人18| 亚洲精品国久久99热|