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

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

?? i2o1.c

?? uboot for K9 AT91RM9200 學習板
?? C
?? 第 1 頁 / 共 2 頁
字號:
	/* QBA must be aligned at 1Mbyte boundary */	return I2OQUEINVALID;    }    store_runtime_reg( eumbbar, I2O_QBAR, qba );    store_runtime_reg( eumbbar, I2O_MUCR, (unsigned int)sz );    store_runtime_reg( eumbbar, I2O_IFHPR, qba );    store_runtime_reg( eumbbar, I2O_IFTPR, qba );    store_runtime_reg( eumbbar, I2O_IPHPR, qba + 1 * ( sz << 11 ));    store_runtime_reg( eumbbar, I2O_IPTPR, qba + 1 * ( sz << 11 ));    store_runtime_reg( eumbbar, I2O_OFHPR, qba + 2 * ( sz << 11 ));    store_runtime_reg( eumbbar, I2O_OFTPR, qba + 2 * ( sz << 11 ));    store_runtime_reg( eumbbar, I2O_OPHPR, qba + 3 * ( sz << 11 ));    store_runtime_reg( eumbbar, I2O_OPTPR, qba + 3 * ( sz << 11 ));    fifo_stat.qsz = sz;    fifo_stat.qba = qba;    return I2OSUCCESS;}/************************************************** * function: I2OFIFOEnable * * description: Enable the circular queue *              return I2OSUCCESS if no error. *              Otherwise I2OQUEINVALID is returned. * * note: *************************************************/I2OSTATUS I2OFIFOEnable( unsigned int eumbbar ){    unsigned int val;    if ( fifo_stat.qba == 0xfffffff )    {	return I2OQUEINVALID;    }    val = load_runtime_reg( eumbbar, I2O_MUCR );    store_runtime_reg( eumbbar, I2O_MUCR, val | 0x1 );    return I2OSUCCESS;}/************************************************** * function: I2OFIFODisable * * description: Disable the circular queue * * note: *************************************************/void I2OFIFODisable( unsigned int eumbbar ){    if ( fifo_stat.qba == 0xffffffff )    {	/* not enabled */	return;    }    unsigned int val = load_runtime_reg( eumbbar, I2O_MUCR );    store_runtime_reg( eumbbar, I2O_MUCR, val & 0xfffffffe );}/**************************************************** * function: I2OFIFOAlloc * * description: Allocate a free MFA from free FIFO. *              return I2OSUCCESS if no error. *              return I2OQUEEMPTY if no more free MFA. *              return I2OINVALID on other errors. * *              A free MFA must be allocated before a *              message can be posted. * * note: * PCI Master allocates a free MFA from inbound queue of device * (pcsrbar is the base,) through the inbound queue port of device * while local processor allocates a free MFA from its outbound * queue (eumbbar is the base.) * ****************************************************/I2OSTATUS I2OFIFOAlloc( LOCATION loc,			unsigned int base,			void         **pMsg ){    I2OSTATUS stat = I2OSUCCESS;    void *pHdr, *pTil;    if ( pMsg == 0 || *pMsg == 0 || fifo_stat.qba == 0xffffffff )    {	/* not configured */	return I2OQUEINVALID;    }    if ( loc == REMOTE )    {	/* pcsrbar is the base and read the inbound free tail ptr */	pTil = (void *)load_runtime_reg( base, I2O_IFQPR );	if ( ( (unsigned int)pTil & 0xFFFFFFF ) == 0xFFFFFFFF )	{	    stat = I2OQUEEMPTY;	}	else	{	    *pMsg = pTil;	}    }    else    {	/* eumbbar is the base and read the outbound free tail ptr */	pHdr = (void *)load_runtime_reg( base, I2O_OFHPR ); /* queue head */	pTil = (void *)load_runtime_reg( base, I2O_OFTPR ); /* queue tail */	/* check underflow */	if ( pHdr == pTil )	{	    /* hdr and til point to the same fifo item, no free MFA */	    stat = I2OQUEEMPTY;	}	else	{	  /* update OFTPR */	  *pMsg = (void *)(*(unsigned char *)pTil);	  pTil = (void *)((unsigned int)pTil + 4);	  if ( (unsigned int)pTil == fifo_stat.qba + ( 4 * ( fifo_stat.qsz << 11 ) ) )	  {		/* reach the upper limit */		pTil = (void *)(fifo_stat.qba + ( 3 * (fifo_stat.qsz << 11) ));	  }	  store_runtime_reg( base, I2O_OFTPR, (unsigned int)pTil );	}    }    return stat;}/****************************************************** * function: I2OFIFOFree * * description: Free a used MFA back to free queue after *              use. *              return I2OSUCCESS if no error. *              return I2OQUEFULL if inbound free queue *              overflow * * note: PCI Master frees a MFA into device's outbound queue *       (OFQPR) while local processor frees a MFA into its *       inbound queue (IFHPR). *****************************************************/I2OSTATUS I2OFIFOFree( LOCATION loc,		  unsigned int base,		  void *pMsg ){    void **pHdr, **pTil;    I2OSTATUS stat = I2OSUCCESS;    if ( fifo_stat.qba == 0xffffffff || pMsg == 0 )    {	    return I2OQUEINVALID;    }    if ( loc == REMOTE )    {	/* pcsrbar is the base */	store_runtime_reg( base, I2O_OFQPR, (unsigned int)pMsg );    }    else    {	/* eumbbar is the base */	pHdr = (void **)load_runtime_reg( base, I2O_IFHPR );	pTil = (void **)load_runtime_reg( base, I2O_IFTPR );	/* store MFA */	*pHdr = pMsg;	/* update IFHPR */	pHdr += 4;	if ( (unsigned int)pHdr == fifo_stat.qba + ( fifo_stat.qsz << 11 ) )	{	  /* reach the upper limit */	  pHdr = (void **)fifo_stat.qba;	}	/* check inbound free queue overflow */	if ( pHdr != pTil )	{	   store_runtime_reg( base, I2O_OPHPR, (unsigned int)pHdr);	}	else	{	    stat = I2OQUEFULL;	}    }    return stat;}/********************************************* * function: I2OFIFOPost * * description: Post a msg into FIFO post queue *              the value of msg must be the one *              returned by I2OFIFOAlloc * * note: PCI Master posts a msg into device's inbound queue *       (IFQPR) while local processor post a msg into device's *       outbound queue (OPHPR) *********************************************/I2OSTATUS I2OFIFOPost( LOCATION loc,		       unsigned int base,		       void *pMsg ){    void **pHdr, **pTil;    I2OSTATUS stat = I2OSUCCESS;    if ( fifo_stat.qba == 0xffffffff || pMsg == 0 )    {	return I2OQUEINVALID;    }    if ( loc == REMOTE )    {	/* pcsrbar is the base */	store_runtime_reg( base, I2O_IFQPR, (unsigned int)pMsg );    }    else    {	/* eumbbar is the base */	pHdr = (void **)load_runtime_reg( base, I2O_OPHPR );	pTil = (void **)load_runtime_reg( base, I2O_OPTPR );	/* store MFA */	*pHdr = pMsg;	/* update IFHPR */	pHdr += 4;	if ( (unsigned int)pHdr == fifo_stat.qba + 3 * ( fifo_stat.qsz << 11 ) )	{	  /* reach the upper limit */	  pHdr = (void **)(fifo_stat.qba + 2 * ( fifo_stat.qsz << 11 ) );	}	/* check post queue overflow */	if ( pHdr != pTil )	{	   store_runtime_reg( base, I2O_OPHPR, (unsigned int)pHdr);	}	else	{	    stat = I2OQUEFULL;	}    }    return stat;}/************************************************ * function: I2OFIFOGet * * description:  Read a msg from FIFO *               This function should be called *               only when there is a corresponding *               msg interrupt. * * note: PCI Master reads a msg from device's outbound queue *       (OFQPR) while local processor reads a msg from device's *       inbound queue (IPTPR) ************************************************/I2OSTATUS I2OFIFOGet( LOCATION loc,		       unsigned int base,		       void **pMsg ){    I2OSTATUS stat = I2OSUCCESS;    void *pHdr, *pTil;    if ( pMsg == 0 || *pMsg == 0 || fifo_stat.qba == 0xffffffff )    {	/* not configured */	return I2OQUEINVALID;    }    if ( loc == REMOTE )    {	/* pcsrbar is the base */	pTil = (void *)load_runtime_reg( base, I2O_OFQPR );	if ( ( (unsigned int)pTil & 0xFFFFFFF ) == 0xFFFFFFFF )	{	    stat = I2OQUEEMPTY;	}	else	{	    *pMsg = pTil;	}    }    else    {	/* eumbbar is the base and read the outbound free tail ptr */	pHdr = (void *)load_runtime_reg( base, I2O_IPHPR ); /* queue head */	pTil = (void *)load_runtime_reg( base, I2O_IPTPR ); /* queue tail */	/* check underflow */	if ( pHdr == pTil )	{	    /* no free MFA */	    stat = I2OQUEEMPTY;	}	else	{	  /* update OFTPR */	  *pMsg = (void *)(*(unsigned char *)pTil);	  pTil = (void *)((unsigned int)pTil + 4);	  if ( (unsigned int)pTil == fifo_stat.qba + 2 * ( fifo_stat.qsz << 11 ) )	  {		/* reach the upper limit */		pTil = (void *)(fifo_stat.qba + 1 * (fifo_stat.qsz << 11) );	  }	  store_runtime_reg( base, I2O_IPTPR, (unsigned int)pTil );	}    }    return stat;}/******************************************************** * function: I2OIOP * * description: Get the I2O PCI configuration identification *              register. * * note: PCI master should pass pcsrbar while local processor *       should pass eumbbar. *********************************************************/I2OSTATUS I2OPCIConfigGet( LOCATION loc,			unsigned int base,			I2OIOP * val){    unsigned int tmp;    if ( val == 0 )    {	    return I2OINVALID;    }    tmp = load_runtime_reg( base, PCI_CFG_CLA );    val->base_class = ( tmp & 0xFF) << 16;    tmp = load_runtime_reg( base, PCI_CFG_SCL );    val->sub_class= ( (tmp & 0xFF) << 8 );    tmp = load_runtime_reg( base, PCI_CFG_PIC );    val->prg_code = (tmp & 0xFF);    return I2OSUCCESS;}/********************************************************* * function: I2OFIFOIntEnable * * description: Enable the circular post queue interrupt * * note: * PCI master enables outbound FIFO interrupt of device * pscrbar is the base * Device enables its inbound FIFO interrupt * eumbbar is the base *******************************************************/void I2OFIFOIntEnable( LOCATION loc, unsigned int base  ){    unsigned int reg, val;    /* LOCATION - REMOTE : enable outbound message of device, pcsrbar as base     *            LOCAL  : enable local inbound message, eumbbar as base     */    reg = ( loc == REMOTE ? I2O_OMIMR : I2O_IMIMR );    val = load_runtime_reg( base, reg );    val &= 0xffffffdf; /* clear the msg interrupt bits */    store_runtime_reg( base, reg, val );}/**************************************************** * function: I2OFIFOIntDisable * * description: Disable the circular post queue interrupt * * note: * PCI master disables outbound FIFO interrupt of device * (pscrbar is the base) * Device disables its inbound FIFO interrupt * (eumbbar is the base) *****************************************************/void I2OFIFOIntDisable( LOCATION loc, unsigned int base ){    /* LOCATION - REMOTE : disable outbound message interrupt of device, pcsrbar as base     *            LOCAL  : disable local inbound message interrupt, eumbbar as base     */    unsigned int reg = ( loc == REMOTE ? I2O_OMIMR : I2O_IMIMR );    unsigned int val = load_runtime_reg( base, reg );    val |= 0x00000020; /* masked out the msg interrupt bits */    store_runtime_reg( base, reg, val );}/********************************************************* * function: I2OFIFOOverflowIntEnable * * description: Enable the circular queue overflow interrupt * * note: * Device enables its inbound FIFO post overflow interrupt * and outbound free overflow interrupt. * eumbbar is the base *******************************************************/void I2OFIFOOverflowIntEnable( unsigned int eumbbar  ){    unsigned int val = load_runtime_reg( eumbbar, I2O_IMIMR );    val &= 0xfffffe7f; /* clear the two overflow interrupt bits */    store_runtime_reg( eumbbar, I2O_IMIMR, val );}/**************************************************** * function: I2OFIFOOverflowIntDisable * * description: Disable the circular queue overflow interrupt * * note: * Device disables its inbound post FIFO overflow interrupt * and outbound free FIFO overflow interrupt * (eumbbar is the base) *****************************************************/void I2OFIFOOverflowIntDisable( unsigned int eumbbar ){    unsigned int val = load_runtime_reg( eumbbar, I2O_IMIMR );    val |= 0x00000180; /* masked out the msg overflow interrupt bits */    store_runtime_reg( eumbbar, I2O_IMIMR, val );}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
奇米888四色在线精品| 久久99精品久久久久久国产越南| 亚洲精品老司机| 免费成人深夜小野草| 成人av在线一区二区| 91精品国产aⅴ一区二区| 国产精品素人一区二区| 日本亚洲最大的色成网站www| 国产成人av电影在线观看| 欧美日产国产精品| 亚洲欧美中日韩| 韩国理伦片一区二区三区在线播放| 一本色道**综合亚洲精品蜜桃冫 | 精品国精品国产| 亚洲免费在线视频| 国产福利91精品| 日韩一区二区在线看| 亚洲一区二区精品3399| 成人黄色一级视频| 久久亚洲一区二区三区四区| 午夜精品视频一区| 色婷婷狠狠综合| 最新日韩av在线| 国产成人av影院| 久久久五月婷婷| 久久国产福利国产秒拍| 欧美精品 日韩| 亚洲制服丝袜在线| 91看片淫黄大片一级| 一色屋精品亚洲香蕉网站| 国产激情视频一区二区三区欧美| 日韩色视频在线观看| 日韩国产欧美视频| 欧美顶级少妇做爰| 日韩成人免费电影| 欧美一区二区三区在线| 日韩成人一级片| 日韩一区二区三区四区| 毛片一区二区三区| 精品国产一区二区三区av性色| 日本大胆欧美人术艺术动态 | 91精品黄色片免费大全| 婷婷中文字幕一区三区| 91精品国产欧美一区二区成人| 韩国成人福利片在线播放| 欧美精品亚洲二区| 男女男精品视频| 欧美xxx久久| 九九精品一区二区| 久久久.com| 99这里只有精品| 一区二区三区 在线观看视频| 91福利小视频| 免费亚洲电影在线| 久久这里只有精品首页| 国产69精品久久99不卡| 亚洲人成精品久久久久久 | 中文字幕一区二区三区不卡在线| 99麻豆久久久国产精品免费优播| 国产一区二区调教| 国产欧美精品日韩区二区麻豆天美| 国产美女精品在线| 国产精品国产三级国产普通话99 | 丁香六月综合激情| 国产精品久久久久影院| 欧美日韩一区二区欧美激情| 日本视频在线一区| 国产精品乱码久久久久久| 日本精品裸体写真集在线观看| 天天色天天操综合| 日本一区二区免费在线观看视频 | 亚洲精品高清在线| 欧美一区二视频| 成人激情免费视频| 日韩av中文在线观看| 日本一区二区动态图| 久久久久久久av麻豆果冻| 精品影视av免费| 亚洲美女视频一区| 日韩区在线观看| 91日韩一区二区三区| 青娱乐精品视频| 自拍偷在线精品自拍偷无码专区 | 亚洲欧美日韩成人高清在线一区| 欧美理论片在线| 成人美女在线观看| 美女被吸乳得到大胸91| 亚洲乱码国产乱码精品精可以看| 欧美一级淫片007| 色综合久久中文综合久久牛| 国产一区二区三区四区在线观看| 一区二区欧美视频| 国产精品丝袜黑色高跟| 日韩一级完整毛片| 日本高清不卡视频| 丰满亚洲少妇av| 美女在线观看视频一区二区| 亚洲综合成人在线| 中文字幕永久在线不卡| 国产亚洲欧美色| 日韩欧美专区在线| 欧美日韩精品专区| 91在线一区二区三区| 国产大陆精品国产| 国产综合一区二区| 久久精品国产精品青草| 日本在线不卡一区| 午夜精品久久久久久久| 一区二区欧美在线观看| 1024国产精品| 国产精品久久久久aaaa樱花| 久久九九久精品国产免费直播| 欧美一区二区精品在线| 欧美肥妇free| 欧美精品日韩一本| 欧美精品久久天天躁| 在线中文字幕一区| 欧美专区亚洲专区| 在线亚洲一区观看| 欧美午夜不卡在线观看免费| 色婷婷久久一区二区三区麻豆| 99久久99久久免费精品蜜臀| www.亚洲人| 色中色一区二区| 在线观看视频一区二区 | 亚洲精品久久嫩草网站秘色| 最好看的中文字幕久久| 亚洲日本免费电影| 亚洲国产日日夜夜| 青青草91视频| 极品少妇一区二区| 国产成人免费视频一区| 99麻豆久久久国产精品免费优播| 91社区在线播放| 欧美三区在线观看| 91精品国产综合久久久久久漫画 | 欧美日韩久久久一区| 91精品国产综合久久久久| 日韩一二在线观看| 久久久亚洲午夜电影| 中文字幕人成不卡一区| 亚洲黄色在线视频| 日韩电影一二三区| 国产成人亚洲综合a∨猫咪| 成人一级视频在线观看| 欧美亚洲高清一区二区三区不卡| 欧美日韩国产区一| 久久日韩精品一区二区五区| 日本一区二区综合亚洲| 亚洲国产毛片aaaaa无费看| 麻豆视频观看网址久久| 成人动漫一区二区三区| 欧美日韩aaaaa| 日本一区二区三区四区| 亚洲一区二区五区| 精品一区二区三区久久久| 91在线视频网址| 欧美一级国产精品| 中文字幕制服丝袜一区二区三区| 亚洲成人在线免费| 国产成人免费高清| 欧美综合一区二区| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲欧美日韩国产一区二区三区 | 日本vs亚洲vs韩国一区三区 | 久久新电视剧免费观看| 成人欧美一区二区三区| 久久国产精品免费| 欧美在线不卡视频| 国产无遮挡一区二区三区毛片日本| 亚洲午夜免费福利视频| 国产精品一区二区久久不卡| 精品视频1区2区3区| 国产精品免费视频网站| 老司机一区二区| 欧美性受xxxx黑人xyx性爽| 国产免费成人在线视频| 青青草国产成人av片免费| 91国产福利在线| 中文字幕成人av| 国产制服丝袜一区| 欧美精品少妇一区二区三区| 亚洲精品视频在线| 国v精品久久久网| 精品国产区一区| 秋霞av亚洲一区二区三| 精品视频一区二区三区免费| 1区2区3区精品视频| 国产91精品免费| 久久久久久一级片| 久久av中文字幕片| 日韩一级大片在线| 午夜久久福利影院| 在线观看视频一区二区| 亚洲黄色性网站| 91老司机福利 在线| |精品福利一区二区三区| 岛国精品在线观看| 中文字幕免费一区| www.欧美精品一二区|