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

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

?? dma1.c

?? 支持linux-2.4以后的啟動參數設置
?? C
?? 第 1 頁 / 共 2 頁
字號:
   if ( DMA_Get_Stat( host, eumbbar, channel, &stat ) != DMASUCCESS )   {		   return DMAINVALID;   }   if ( stat.cb == 1 )   {	   /* DMA is not free */	   return DMACHNBUSY;   }   mode = load_runtime_reg( eumbbar, dma_reg_tb[host][channel*NUM_DMA_REG + DMA_MR_REG] );   /* clear DMA_MR(CS) */   mode &= 0xfffffffe;   store_runtime_reg( eumbbar, dma_reg_tb[host][channel*NUM_DMA_REG + DMA_MR_REG], mode );   /* set DMA_MR(CS) */   mode |= CS;   store_runtime_reg( eumbbar, dma_reg_tb[host][channel*NUM_DMA_REG + DMA_MR_REG], mode );   return DMASUCCESS;}/*********************************************************** * function: DMA_Halt * * description: halt the current dma transaction on the specified *              channel. *              return DMASUCCESS if success otherwise return DMAINVALID * * note: if the specified DMA channel is idle, nothing happens *************************************************************/staticDMAStatus DMA_Halt( LOCATION host, unsigned int eumbbar, unsigned int channel ){   unsigned int mode;   if ( channel != 0 && channel != 1 )   {	   return DMAINVALID;   }   mode = load_runtime_reg( eumbbar, dma_reg_tb[host][channel*NUM_DMA_REG + DMA_MR_REG]);   /* clear DMA_MR(CS) */   mode &= 0xfffffffe;   store_runtime_reg(eumbbar, dma_reg_tb[host][channel*NUM_DMA_REG + DMA_MR_REG], mode );   return DMASUCCESS;}/************************************************************* * function: DMA_Chn_Cnt * * description: set the DMA_MR(CC) bit for a given channel *              that is in chaining mode. *              return DMASUCCESS if successfule, otherwise return *              DMAINVALID. * * note: if the given channel is not in chaining mode, nothing *       happen. * *************************************************************/staticDMAStatus DMA_Chn_Cnt( LOCATION host, unsigned int eumbbar, unsigned int channel ){	DMA_MR mode;	if ( channel != 0 && channel != 1 )	{		return DMAINVALID;	}	if ( DMA_Get_Mode( host, eumbbar, channel, &mode ) != DMASUCCESS )	{			return DMAINVALID;	}	if ( mode.ctm == 0 )	{		/* either illegal mode or not chaining mode */		return DMAINVALID;	}	mode.cc = 1;	return DMA_Set_Mode( host, eumbbar, channel, mode );}/************************************************************** * function: DMA_Bld_Desp * * description: set current descriptor address register *              according to the desp for a given channel * *              if the given channel is busy return DMACHNBUSY *              and no change made, otherwise return DMASUCCESS. * * note: **************************************************************/staticDMAStatus DMA_Bld_Desp( LOCATION host,						   unsigned int eumbbar,						   unsigned int channel,						   DMA_CDAR     desp ){	DMA_SR status;	unsigned int temp;	if ( channel != 0 && channel != 1 )	{		/* channel number out of range */		return DMAINVALID;	}	if ( DMA_Get_Stat( host, eumbbar, channel, &status ) != DMASUCCESS )	{			return DMAINVALID;	}	if ( status.cb == 1 )	{		/* channel busy */		return DMACHNBUSY;	}	temp = ( desp.cda & 0x7ffffff ) << 5;	temp |= (( desp.snen & 0x1 ) << 4 );	temp |= (( desp.eosie & 0x1 ) << 3 );	temp |= (( desp.ctt   & 0x3 ) << 1 );    temp |= ( desp.eotd  & 0x1 );    store_runtime_reg( eumbbar, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_CDAR_REG], temp );#ifdef DMADBG0   PRINT( "%s(%d): %s DMA %d (0x%08x) cdar := 0x%08x\n", __FILE__, __LINE__,		  ( host == LOCAL ? "local" : "remote" ), channel, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_CDAR_REG], temp );#endif	return DMASUCCESS;}/************************************************************** * function: DMA_Poke_Desp * * description: poke the current descriptor address register *              for a given channel * *              return DMASUCCESS if no error * * note: Due to the undeterministic parallellism of DMA operation, *       the value returned by this function shall be taken as *       the most recently used descriptor when the last time *       DMA starts a chaining mode operation. **************************************************************/staticDMAStatus DMA_Poke_Desp( LOCATION host,						    unsigned int eumbbar,						    unsigned int channel,						    DMA_CDAR     *desp ){	unsigned int cdar;	if ( channel != 0 && channel != 1 || desp == 0 )	{			return DMAINVALID;	}    cdar = load_runtime_reg( eumbbar, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_CDAR_REG] );#ifdef DMADBG0   PRINT( "%s(%d): %s DMA %d (0x%08x) cdar : 0x%08x\n", __FILE__, __LINE__,		  ( host == LOCAL ? "local" : "remote" ), channel, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_CDAR_REG], cdar );#endif	desp->cda   = ( cdar & 0xffffffe0 ) >> 5;	desp->snen  = ( cdar & 0x00000010 ) >> 4;	desp->eosie = ( cdar & 0x00000008 ) >> 3;	desp->ctt   = ( cdar & 0x00000006 ) >> 1;	desp->eotd  = ( cdar & 0x00000001 );	return DMASUCCESS;}/************************************************************** * function: DMA_Bld_Curr * * description: set current src, dest, byte count registers *              according to the desp for a given channel *              return DMASUCCESS if no error. * * note: **************************************************************/staticDMAStatus DMA_Bld_Curr( LOCATION host,					   unsigned int eumbbar,					   unsigned int channel,					   DMA_CURR     desp ){	DMA_SR status;	if ( channel != 0 && channel != 1 )	{		/* channel number out of range */		return DMAINVALID;	}	if ( DMA_Get_Stat( host, eumbbar, channel, &status ) != DMASUCCESS )	{		 return DMAINVALID;	}	if ( status.cb == 1  )	{		/* channel busy */		return DMACHNBUSY;	}	desp.byte_cnt &= 0x03ffffff; /* upper 6-bits are 0s */    store_runtime_reg( eumbbar, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_SAR_REG], desp.src_addr );#ifdef DMADBG0   PRINT( "%s(%d): %s DMA %d (0x%08x) src := 0x%08x\n", __FILE__, __LINE__,		  ( host == LOCAL ? "local" : "remote" ), channel, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_CDAR_REG], desp.src_addr );#endif    store_runtime_reg( eumbbar, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_DAR_REG], desp.dest_addr );#ifdef DMADBG0   PRINT( "%s(%d): %s DMA %d (0x%08x) dest := 0x%08x\n", __FILE__, __LINE__,		  ( host == LOCAL ? "local" : "remote" ), channel, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_CDAR_REG], desp.dest_addr );#endif    store_runtime_reg( eumbbar, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_BCR_REG], desp.byte_cnt );#ifdef DMADBG0   PRINT( "%s(%d): %s DMA %d (0x%08x) count := 0x%08x\n", __FILE__, __LINE__,		  ( host == LOCAL ? "local" : "remote" ), channel, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_CDAR_REG], desp.byte_cnt );#endif	return DMASUCCESS;}/************************************************************** * function: DMA_Poke_Curr * * description: poke the current src, dest, byte count registers *              for a given channel. * *              return DMASUCCESS if no error * * note:        Due to the undeterministic parallelism, in chaining *              mode, the value returned by this function shall *              be taken as reference when the query is made rather *              than the absolute snapshot when the value is returned. **************************************************************/staticDMAStatus DMA_Poke_Curr( LOCATION host,					    unsigned int eumbbar,					    unsigned int channel,					    DMA_CURR*    desp ){	if ( channel != 0 && channel != 1 || desp == 0 )	{			return DMAINVALID;	}	desp->src_addr = load_runtime_reg( eumbbar, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_SAR_REG] );#ifdef DMADBG0   PRINT( "%s(%d): %s DMA %d (0x%08x) src : 0x%08x\n", __FILE__, __LINE__,		  ( host == LOCAL ? "local" : "remote" ), channel, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_CDAR_REG], desp->src_addr );#endif	desp->dest_addr = load_runtime_reg( eumbbar, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_DAR_REG] );#ifdef DMADBG0   PRINT( "%s(%d): %s DMA %d (0x%08x) dest : 0x%08x\n", __FILE__, __LINE__,		  ( host == LOCAL ? "local" : "remote" ), channel, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_CDAR_REG], desp->dest_addr );#endif    desp->byte_cnt = load_runtime_reg( eumbbar, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_BCR_REG] );#ifdef DMADBG0   PRINT( "%s(%d): %s DMA %d (0x%08x) count : 0x%08x\n", __FILE__, __LINE__,		  ( host == LOCAL ? "local" : "remote" ), channel, dma_reg_tb[host][channel*NUM_DMA_REG+DMA_CDAR_REG], desp->byte_cnt );#endif	return DMASUCCESS;}/***************************************************************** * function: dma_error_func * * description: display the error information * * note: This seems like a highly convoluted way to handle messages, * but I'll leave it as it was in device.c when I moved it into the * DMA library source. ****************************************************************/staticDMAStatus dma_error_func( unsigned int eumbbar, unsigned int chn, DMAStatus err){	unsigned char *msg[] =		{			"Local Memory Error",			"PCI Error",			"Channel Busy",			"End-of-Segment Interrupt",			"End-of-Chain/Direct Interrupt",		};	   if ( err >= DMALMERROR && err <= DMAEOCAINT )	   {	     PRINT( "DMA Status: channel %d  %s\n", chn, msg[err-DMASUCCESS-1] );	   }	   return err;}/************************************************************* * function: DMA_ISR * * description: DMA interrupt service routine *              return DMAStatus value based on *              the status * *************************************************************/staticDMAStatus DMA_ISR( unsigned int eumbbar,				  unsigned int channel,				  DMAStatus (*lme_func)( unsigned int, unsigned int, DMAStatus ),				  DMAStatus (*pe_func) ( unsigned int, unsigned int, DMAStatus ),				  DMAStatus (*eosi_func)( unsigned int, unsigned int, DMAStatus ),				  DMAStatus (*eocai_func)(unsigned int, unsigned int, DMAStatus )){	DMA_SR stat;	DMAStatus rval = DMANOEVENT;    unsigned int temp;	if ( channel != 0 && channel != 1 )	{		return DMAINVALID;	}	if ( DMA_Get_Stat( LOCAL, eumbbar, channel, &stat ) != DMASUCCESS )	{			return DMAINVALID;	}	if ( stat.lme == 1 )	{		/* local memory error */		rval = DMALMERROR;		if ( lme_func != 0 )		{		  rval = (*lme_func)(eumbbar, channel, DMALMERROR );	    }	}	else if ( stat.pe == 1 )	{	/* PCI error */		rval = DMAPERROR;		if ( pe_func != 0 )		{		  rval = (*pe_func)(eumbbar, channel, DMAPERROR );	    }	}	else if ( stat.eosi == 1 )	{		/* end-of-segment interrupt */		rval = DMAEOSINT;		if ( eosi_func != 0 )		{		  rval = (*eosi_func)(eumbbar, channel, DMAEOSINT );	    }	}	else	{		/* End-of-chain/direct interrupt */		rval = DMAEOCAINT;		if ( eocai_func != 0 )		{		  rval = (*eocai_func)(eumbbar, channel, DMAEOCAINT );	    }	}    temp = ( stat.reserved0 & 0xffffff ) << 8;	temp |= ( ( stat.lme       & 0x1 ) << 7 );  /* write one to clear */	temp |= ( ( stat.reserved1 & 0x3 ) << 5 );    temp |= ( ( stat.pe        & 0x1 ) << 4 );  /* write one to clear */    temp |= ( ( stat.reserved2 & 0x1 ) << 3 );	temp |= ( ( stat.cb        & 0x1 ) << 2 );  /* write one to clear */    temp |= ( ( stat.eosi      & 0x1 ) << 1 );  /* write one to clear */    temp |= ( stat.eocai & 0x1 );               /* write one to clear */    store_runtime_reg( eumbbar, dma_reg_tb[LOCAL][channel*NUM_DMA_REG + DMA_SR_REG], temp );#ifdef DMADBG0	PRINT( "%s(%d): DMA channel %d SR := 0x%08x\n", __FILE__, __LINE__, channel, temp );#endif	return rval;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区免费视频| 精品国产露脸精彩对白| 亚洲免费观看高清完整| zzijzzij亚洲日本少妇熟睡| 国产精品美女久久久久aⅴ国产馆| 不卡的av在线| 亚洲激情综合网| 欧美精品一卡两卡| 麻豆一区二区在线| 中文av字幕一区| 91极品视觉盛宴| 日韩精品一二三| 久久综合色一综合色88| 国产成人8x视频一区二区| 成人av午夜电影| www.色精品| 亚洲精品免费电影| 欧美精品日韩一区| 国产精品综合二区| 亚洲丝袜美腿综合| 欧美一区二区三区在线观看| 国产福利不卡视频| 亚洲午夜私人影院| 久久这里只有精品6| 一本一道波多野结衣一区二区| 亚洲 欧美综合在线网络| 久久综合色之久久综合| 欧洲精品一区二区三区在线观看| 免费高清成人在线| 国产精品毛片无遮挡高清| 欧美日韩一区视频| 国产a级毛片一区| 午夜久久久久久久久| 日本一区免费视频| 欧美一卡2卡三卡4卡5免费| 成人亚洲精品久久久久软件| 日韩一区二区三区四区 | 高潮精品一区videoshd| 有码一区二区三区| 国产亚洲欧美在线| 欧美日韩精品一区二区天天拍小说| 精品综合免费视频观看| 亚洲色图在线视频| 久久久99精品免费观看不卡| 欧美日韩国产精品成人| 91欧美一区二区| 国产精品一区二区在线观看网站| 婷婷成人综合网| 亚洲啪啪综合av一区二区三区| 欧美成人女星排行榜| 欧美亚洲一区二区在线观看| 丰满白嫩尤物一区二区| 精品一区二区三区免费| 日韩国产成人精品| 亚洲自拍偷拍综合| 成人免费小视频| 久久精品一区二区三区不卡| 日韩一级黄色片| 欧美色精品在线视频| 91香蕉视频mp4| 国产精品一区二区在线观看不卡| 天天色天天操综合| 夜色激情一区二区| 亚洲日本va在线观看| 欧美国产欧美亚州国产日韩mv天天看完整 | 国产盗摄一区二区| 日韩精品中午字幕| 欧美视频在线观看一区| 92国产精品观看| 成人av在线一区二区三区| 国产精品1区二区.| 国产很黄免费观看久久| 精彩视频一区二区| 久久99久久精品| 久久精品免费看| 精品一区二区免费| 国产在线不卡一区| 国产99精品在线观看| 成人永久免费视频| 99精品国产99久久久久久白柏| 成a人片亚洲日本久久| av电影一区二区| 色综合欧美在线视频区| 色素色在线综合| 欧美日韩一区二区三区高清| 欧美日韩另类一区| 欧美一级高清片在线观看| 日韩午夜在线播放| 久久日韩精品一区二区五区| 国产亚洲女人久久久久毛片| 中文字幕精品—区二区四季| 亚洲美女淫视频| 亚洲成人黄色小说| 老司机精品视频一区二区三区| 韩国三级电影一区二区| 成人美女视频在线看| 在线观看一区二区精品视频| 欧美色综合天天久久综合精品| 欧美日韩综合在线免费观看| 欧美一级精品大片| 久久九九久精品国产免费直播| 欧美国产精品一区二区| 亚洲靠逼com| 日本欧美一区二区在线观看| 国产乱对白刺激视频不卡| 不卡电影一区二区三区| 欧美二区在线观看| 国产人成一区二区三区影院| 亚洲柠檬福利资源导航| 日本不卡视频一二三区| 国产91综合网| 欧美日韩国产天堂| 久久人人97超碰com| 亚洲综合清纯丝袜自拍| 九一久久久久久| 91蜜桃免费观看视频| 欧美一区二区三区日韩视频| 亚洲欧洲日韩在线| 久久狠狠亚洲综合| 色婷婷久久99综合精品jk白丝| 91精品国产免费久久综合| 国产精品乱码妇女bbbb| 日韩—二三区免费观看av| 成人听书哪个软件好| 欧美一区二区视频在线观看2020| 中文字幕不卡三区| 免费不卡在线视频| 色激情天天射综合网| 久久久久久久久岛国免费| 五月激情综合色| 99re热视频这里只精品 | 欧美一区二区三区四区在线观看| 欧美激情一区二区三区在线| 日韩在线一二三区| 91看片淫黄大片一级| 久久久精品免费免费| 午夜精品一区在线观看| 一本久道中文字幕精品亚洲嫩| 精品国产91九色蝌蚪| 在线观看视频一区二区欧美日韩| 亚洲成在人线免费| 大胆亚洲人体视频| 日韩一区二区三区视频在线观看| 亚洲精品国久久99热| 国产成人精品三级麻豆| 日韩欧美一级二级| 日韩精品1区2区3区| 99精品国产99久久久久久白柏 | 在线观看成人免费视频| 国产精品美女久久久久久久网站| 国产美女主播视频一区| 日韩三级视频中文字幕| 午夜av区久久| 欧美亚洲一区二区在线| 一区二区成人在线视频 | 国产大陆a不卡| 日韩写真欧美这视频| 日韩二区三区在线观看| 欧美色欧美亚洲另类二区| 亚洲精品乱码久久久久久日本蜜臀| av一区二区三区在线| 欧美国产日韩一二三区| 成人性生交大片免费看中文 | 亚洲日本一区二区三区| av中文一区二区三区| 久久久亚洲精品一区二区三区 | 另类调教123区| 日韩精品在线一区二区| 男女男精品视频| 日韩一区二区三区在线观看| 蜜桃久久av一区| 26uuu亚洲综合色欧美| 黑人巨大精品欧美一区| 伊人婷婷欧美激情| 欧美午夜一区二区三区免费大片| 亚洲免费观看高清| 欧美日韩一区二区三区在线| 亚洲成av人片在线观看| 欧美男女性生活在线直播观看| 亚洲成av人影院| 欧美不卡一区二区三区| 国产成人午夜精品5599| 国产精品狼人久久影院观看方式| av在线综合网| 亚洲国产综合色| 91精品国产福利在线观看| 狠狠色综合日日| 国产精品午夜久久| 色婷婷综合久久久中文字幕| 日韩精品亚洲专区| 久久精品一区二区| 色综合天天在线| 天天色综合天天| 国产亚洲成aⅴ人片在线观看| www.99精品| 日本不卡一区二区三区高清视频| 久久蜜臀中文字幕| 在线中文字幕一区二区| 久久99国产精品久久99| 国产精品美女视频|