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

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

?? i2o1.c

?? 針對yassylcd的uboot源碼
?? 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一区二区三区免费野_久草精品视频
欧美另类高清zo欧美| 色天使色偷偷av一区二区| 国产91色综合久久免费分享| 色综合一个色综合亚洲| 日韩精品专区在线| 亚洲一区二区三区爽爽爽爽爽| 久久99久久久久| 欧美日韩在线免费视频| 国产欧美一区视频| 毛片av一区二区| 欧美性xxxxx极品少妇| 欧美高清在线一区| 韩国精品在线观看| 欧美一激情一区二区三区| 一区二区三区日韩欧美精品| 成人免费高清在线观看| 久久久91精品国产一区二区精品 | 亚洲国产精品一区二区久久| 国产盗摄女厕一区二区三区| 日韩午夜激情免费电影| 日韩国产在线一| av一本久道久久综合久久鬼色| 日韩美一区二区三区| 日韩av电影免费观看高清完整版| 欧美亚男人的天堂| 亚洲免费三区一区二区| 成人av在线资源网| 中文字幕一区视频| 丁香另类激情小说| 91视频观看视频| 欧美视频在线播放| 一区二区三区在线观看国产| 成人一区在线看| 欧美激情一区在线| 成人国产精品免费观看动漫| 国产午夜精品久久久久久免费视 | 91高清视频在线| 国产精品久久久久久福利一牛影视 | 一区二区激情小说| 色av综合在线| 亚洲一区二区三区四区在线免费观看| 色天天综合色天天久久| 亚洲午夜久久久久| 欧美一卡在线观看| 国产美女久久久久| 日韩一区在线播放| 亚洲蜜臀av乱码久久精品蜜桃| 欧美日韩你懂得| 久久亚洲私人国产精品va媚药| 国产一区二区按摩在线观看| 久久你懂得1024| 成人国产精品免费观看| 一区二区三区国产豹纹内裤在线| 欧美色精品在线视频| 蜜臀av性久久久久av蜜臀妖精| 久久女同精品一区二区| 成人黄色小视频| 亚洲午夜三级在线| 亚洲精品在线一区二区| 99久久久免费精品国产一区二区| 亚洲主播在线观看| 久久综合九色综合97婷婷女人 | 国产a级毛片一区| 亚洲欧美另类综合偷拍| 欧美裸体bbwbbwbbw| 国产精品综合在线视频| 亚洲伦在线观看| 精品久久久久一区二区国产| www.亚洲精品| 日本最新不卡在线| 欧美激情中文不卡| 欧美日韩国产成人在线免费| 国产精品一区二区三区四区| 亚洲一区二区黄色| 亚洲国产经典视频| 欧美精品在线观看一区二区| 成人黄色在线视频| 裸体一区二区三区| 一区二区在线看| 国产校园另类小说区| 欧美日韩情趣电影| 99re这里只有精品6| 精品午夜一区二区三区在线观看| 亚洲色图视频免费播放| 久久精品人人做人人爽人人| 欧美久久一区二区| 色综合久久久久网| 国产毛片精品国产一区二区三区| 天天操天天干天天综合网| 国产精品美女久久福利网站| 欧美成人精精品一区二区频| 欧美丝袜第三区| 91最新地址在线播放| 国产精品一区二区久激情瑜伽| 五月婷婷久久综合| 亚洲欧美日韩中文播放| 欧美高清在线精品一区| 精品国产青草久久久久福利| 欧美日韩国产天堂| 在线观看一区日韩| 91在线视频观看| 成人app在线观看| 国产白丝网站精品污在线入口| 久久99精品一区二区三区三区| 午夜电影网一区| 亚洲主播在线播放| 亚洲精品第1页| 亚洲精品免费电影| 亚洲黄色录像片| 亚洲精品一二三区| 一区二区在线观看免费| 亚洲欧美激情视频在线观看一区二区三区| 国产三级精品在线| 欧美激情一区二区三区在线| 久久久久国产精品人| 2022国产精品视频| 日本一区二区三区视频视频| 欧美精品一区二区三区在线播放| 欧美成人精品高清在线播放 | 日韩欧美国产1| 日韩视频在线你懂得| 欧美日韩aaaaa| 制服丝袜国产精品| 欧美一级在线视频| 久久综合五月天婷婷伊人| 久久久久9999亚洲精品| 中文字幕+乱码+中文字幕一区| 国产精品美女久久久久av爽李琼| 亚洲欧洲日韩一区二区三区| 中文字幕佐山爱一区二区免费| 亚洲欧美日本韩国| 日韩中文字幕麻豆| 久久99精品网久久| 99精品视频在线观看免费| 色婷婷久久久久swag精品| 欧美日韩成人综合在线一区二区| 欧美一级免费观看| 国产校园另类小说区| 亚洲丝袜自拍清纯另类| 性做久久久久久| 国产精品一区二区在线播放 | 精品一区二区三区久久| 丁香六月久久综合狠狠色| 欧美性色欧美a在线播放| 日韩一区二区在线看| 中文字幕精品一区二区三区精品| 樱桃视频在线观看一区| 免费成人美女在线观看.| 丁香桃色午夜亚洲一区二区三区| 一本色道综合亚洲| 精品少妇一区二区三区在线视频| 亚洲欧洲无码一区二区三区| 图片区日韩欧美亚洲| 国产不卡在线视频| 欧美狂野另类xxxxoooo| 亚洲国产精品激情在线观看| 丝袜亚洲另类欧美综合| 福利一区二区在线| 制服丝袜av成人在线看| 中文字幕一区二区视频| 男人的天堂亚洲一区| 色综合欧美在线| 国产日韩成人精品| 免费在线观看一区| 一本一本久久a久久精品综合麻豆| 欧美成人综合网站| 亚洲一区av在线| 成人白浆超碰人人人人| 51久久夜色精品国产麻豆| 一区在线中文字幕| 国产精品一卡二| 日韩三级.com| 视频一区视频二区中文| 91在线你懂得| 欧美激情在线一区二区三区| 老司机精品视频线观看86| 欧美优质美女网站| 亚洲人精品一区| 成人免费电影视频| 国产欧美精品一区二区色综合朱莉| 午夜免费欧美电影| 91成人国产精品| 亚洲欧洲精品天堂一级| 国产成人精品免费视频网站| 日韩精品综合一本久道在线视频| 亚洲午夜久久久久久久久电影网| 91丨九色丨蝌蚪丨老版| 国产精品天干天干在线综合| 九一九一国产精品| 日韩三级高清在线| 老汉av免费一区二区三区| 555夜色666亚洲国产免| 天堂一区二区在线免费观看| 欧美亚洲禁片免费| 亚洲va中文字幕| 欧美日韩成人综合在线一区二区| 亚洲一区二区三区三| 欧美色图第一页| 天堂久久久久va久久久久| 欧美日韩一级视频|