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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? usbout.c

?? 2410 umon nor flash
?? C
字號(hào):
/****************************************************************
 NAME: usbout.c
 DESC: USB bulk-OUT operation related functions
 HISTORY:
 Mar.25.2002:purnnamu: ported for S3C2410X.
 Mar.27.2002:purnnamu: DMA is enabled.
 ****************************************************************/
 
#include <string.h>
#include "option.h"
#include "2410addr.h"
#include "2410lib.h"
#include "def.h"

#include "2410usb.h"
#include "usbmain.h"
#include "usb.h"
#include "usblib.h"
#include "usbsetup.h"
#include "usbout.h"

#include "u241mon.h"


static void PrintEpoPkt(U8 *pt,int cnt);
static void RdPktEp3_CheckSum(U8 *buf,int num);



// ===================================================================
// All following commands will operate in case 
// - out_csr3 is valid.
// ===================================================================

 

#define CLR_EP3_OUT_PKT_READY() rOUT_CSR1_REG= ( out_csr3 &(~ EPO_WR_BITS)\
					&(~EPO_OUT_PKT_READY) ) 
#define SET_EP3_SEND_STALL()	rOUT_CSR1_REG= ( out_csr3 & (~EPO_WR_BITS)\
					| EPO_SEND_STALL) )
#define CLR_EP3_SENT_STALL()	rOUT_CSR1_REG= ( out_csr3 & (~EPO_WR_BITS)\
					&(~EPO_SENT_STALL) )
#define FLUSH_EP3_FIFO() 	rOUT_CSR1_REG= ( out_csr3 & (~EPO_WR_BITS)\
					|EPO_FIFO_FLUSH) )

// ***************************
// *** VERY IMPORTANT NOTE ***
// ***************************
// Prepare for the packit size constraint!!!

// EP3 = OUT end point. 

U8 ep3Buf[EP3_PKT_SIZE];
static U8 tempBuf[64+1];

void Ep3Handler(void)
{
    U8 out_csr3;
    int fifoCnt;
    rINDEX_REG=3;

    out_csr3=rOUT_CSR1_REG;
    
    DbgPrintf("<3:%x]",out_csr3);

    if(out_csr3 & EPO_OUT_PKT_READY)
    {   
	fifoCnt=rOUT_FIFO_CNT1_REG; 
#if 0
	RdPktEp3(ep3Buf,fifoCnt);
	PrintEpoPkt(ep3Buf,fifoCnt);
#else

	if(downloadFileSize==0)
	{
   	    RdPktEp3((U8 *)downPt,8); 	
   	    
   	    if(download_run==0)
   	    {
		downloadAddress=tempDownloadAddress;
	    }
	    else
	    {
	    	downloadAddress=
	    		*((U8 *)(downPt+0))+
			(*((U8 *)(downPt+1))<<8)+
			(*((U8 *)(downPt+2))<<16)+
			(*((U8 *)(downPt+3))<<24);
	    }
	    downloadFileSize=
	    	*((U8 *)(downPt+4))+
		(*((U8 *)(downPt+5))<<8)+
		(*((U8 *)(downPt+6))<<16)+
		(*((U8 *)(downPt+7))<<24);
	    checkSum=0;
	    downPt=(U8 *)downloadAddress;

  	    RdPktEp3_CheckSum((U8 *)downPt,fifoCnt-8); //The first 8-bytes are deleted.	    
  	    downPt+=fifoCnt-8;  
  	    
  	#if USBDMA
     	    //CLR_EP3_OUT_PKT_READY() is not executed. 
     	    //So, USBD may generate NAK until DMA2 is configured for USB_EP3;
     	    rINTMSK|=BIT_USBD; //for debug
      	    return;	
  	#endif	
	}
	else
	{
	#if USBDMA    	
	    Uart_Printf("<ERROR>");
	#endif    
	    RdPktEp3_CheckSum((U8 *)downPt,fifoCnt); 	    
	    downPt+=fifoCnt;  //fifoCnt=64
	}
#endif
   	CLR_EP3_OUT_PKT_READY();
	return;
    }

    
    //I think that EPO_SENT_STALL will not be set to 1.
    if(out_csr3 & EPO_SENT_STALL)
    {   
   	DbgPrintf("[STALL]");
   	CLR_EP3_SENT_STALL();
   	return;
    }	
}



void PrintEpoPkt(U8 *pt,int cnt)
{
    int i;
    DbgPrintf("[BOUT:%d:",cnt);
    for(i=0;i<cnt;i++)
    	DbgPrintf("%x,",pt[i]);
    DbgPrintf("]");
}


void RdPktEp3_CheckSum(U8 *buf,int num)
{
    int i;
    	
    for(i=0;i<num;i++)
    {
        buf[i]=(U8)rEP3_FIFO;
        checkSum+=buf[i];
    }
}



void __irq IsrDma2(void)
{
    U8 out_csr3;
    U32 nextTotalDmaCount;
    U8 saveIndexReg=rINDEX_REG;

    rINDEX_REG=3;
    out_csr3=rOUT_CSR1_REG;
    
    ClearPending(BIT_DMA2);	    
    
    totalDmaCount+=0x80000;

    if(totalDmaCount>=downloadFileSize)// is last?
    {
    	totalDmaCount=downloadFileSize;
	
    	ConfigEp3IntMode();	

    	if(out_csr3& EPO_OUT_PKT_READY)
    	{
   	    CLR_EP3_OUT_PKT_READY();
	}
        rINTMSK|=BIT_DMA2;  
        rINTMSK&=~(BIT_USBD);  
    }
    else
    {
    	if((totalDmaCount+0x80000)<downloadFileSize)	
    	{
	    nextTotalDmaCount=totalDmaCount+0x80000;
    
    	    if((nextTotalDmaCount+0x80000)<downloadFileSize)
    	    {
        	//for (2~n)th autoreload.	 
		while((rDSTAT2&0xfffff)==0); //wait until autoreload occurs.
		rDIDST2=((U32)downloadAddress+nextTotalDmaCount-8);  
		rDIDSTC2=(0<<1)|(0<<0);  
    	    	rDCON2=rDCON2&~(0xfffff)|(0x80000); 
    	    	
    	    	while(rEP3_DMA_TTC<0xfffff)
    	    	{
    	    	    rEP3_DMA_TTC_L=0xff;
    	    	    rEP3_DMA_TTC_M=0xff;
    	    	    rEP3_DMA_TTC_H=0xf;
    	    	    //0xfffff;
    	    	}
    	    }
 	    else
 	    {
		while((rDSTAT2&0xfffff)==0); //wait until autoreload occurs.
   	        rDIDST2=((U32)downloadAddress+nextTotalDmaCount-8);  
      	        rDIDSTC2=(0<<1)|(0<<0);  
      	        rDCON2=rDCON2&~(0xfffff)|(downloadFileSize-nextTotalDmaCount); 		
    	    	while(rEP3_DMA_TTC<0xfffff)
    	    	{
    	    	    rEP3_DMA_TTC_L=0xff;
    	    	    rEP3_DMA_TTC_M=0xff;
    	    	    rEP3_DMA_TTC_H=0xf;
    	    	    //0xfffff;
    	    	}
	    }
	}
	else
	{
	    while((rDSTAT2&0xfffff)==0); //wait until autoreload occurs.
  	    rDIDST2=((U32)downloadAddress+downloadFileSize-8);  //for next autoreload.	    		
  	    rDIDSTC2=(0<<1)|(0<<0);
  	    rDCON2=rDCON2&~(0xfffff)|(0); 		
		//There is no 2nd autoreload. This will not be used.  	    
	    	//rDMA_TX+=0x0; //USBD register		
	}
    }
    rINDEX_REG=saveIndexReg;
}


void ClearEp3OutPktReady(void)
{
    U8 out_csr3;
    rINDEX_REG=3;
    out_csr3=rOUT_CSR1_REG;
    CLR_EP3_OUT_PKT_READY();
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品拍天天在线| 国产一区二区中文字幕| 久久99久久久久| 成人免费毛片片v| 欧美挠脚心视频网站| 久久久精品2019中文字幕之3| 中文字幕一区日韩精品欧美| 天天影视网天天综合色在线播放| 国内偷窥港台综合视频在线播放| 欧美图区在线视频| 国产精品乱码久久久久久| 日本在线不卡视频一二三区| 99国产精品视频免费观看| 久久久影视传媒| 免费人成在线不卡| 欧美日韩日日夜夜| 一区二区三区久久久| av一区二区不卡| 久久蜜臀中文字幕| 久久精品72免费观看| 欧美色图激情小说| 亚洲福利国产精品| 91福利资源站| 亚洲精品欧美综合四区| 国产·精品毛片| 久久精品一区四区| 国产一本一道久久香蕉| 欧美mv日韩mv| 久久er精品视频| 日韩精品一区二区三区swag| 天堂资源在线中文精品| 欧美日韩免费观看一区二区三区 | 日韩免费成人网| 午夜精品久久久久久久久久 | 一区二区三区四区在线| 成人高清免费在线播放| 久久综合九色综合97_久久久| 久久se这里有精品| 久久蜜桃一区二区| 99在线精品视频| 亚洲视频在线观看三级| 在线免费观看日韩欧美| 亚洲国产精品久久久男人的天堂 | 高潮精品一区videoshd| 国产亚洲精品中文字幕| 国产sm精品调教视频网站| 国产精品久久久久久久午夜片 | 欧美日本精品一区二区三区| 亚洲777理论| 91精品国产乱| 国产一区二区在线观看视频| 欧美激情一区在线| 色呦呦一区二区三区| 天天操天天综合网| 久久人人超碰精品| 91丨九色丨蝌蚪丨老版| 午夜伊人狠狠久久| 日韩精品一区二区三区在线播放 | 欧美激情中文字幕一区二区| 91色在线porny| 日日夜夜精品视频天天综合网| 日韩一区二区三区视频在线 | 免费一级片91| 中文字幕精品一区二区精品绿巨人| 91色.com| 蜜桃视频一区二区三区| 中文字幕乱码亚洲精品一区| 欧美日韩一二三区| 国产一区福利在线| 一区二区三区小说| 国产网红主播福利一区二区| 欧美日韩一区中文字幕| 国产九九视频一区二区三区| 又紧又大又爽精品一区二区| 欧美不卡一区二区三区四区| 波多野结衣中文字幕一区二区三区| 亚洲一区精品在线| 日本一区二区三区视频视频| 欧美日韩一区在线| 春色校园综合激情亚洲| 日韩高清在线不卡| **欧美大码日韩| 久久久精品免费免费| 欧美视频中文一区二区三区在线观看| 国产久卡久卡久卡久卡视频精品| 亚洲国产三级在线| 国产精品欧美一区喷水| 日韩一区二区三区电影在线观看| 99视频一区二区| 国产在线国偷精品产拍免费yy| 午夜国产精品一区| 亚洲女子a中天字幕| 欧美激情在线一区二区三区| 日韩免费高清av| 欧美精品18+| 欧美性大战久久久久久久| 9i在线看片成人免费| 国产精品99久久久久久久vr| 奇米一区二区三区| 亚洲成人午夜影院| 一区二区三区精密机械公司| 欧美国产精品劲爆| 久久精品亚洲乱码伦伦中文| 精品国产麻豆免费人成网站| 91精品国模一区二区三区| 欧美日韩国产精品成人| 欧美在线色视频| 色香蕉久久蜜桃| 色狠狠av一区二区三区| 成人综合在线视频| 国产高清无密码一区二区三区| 久久精品免费观看| 免费一级欧美片在线观看| 日本sm残虐另类| 丝袜诱惑亚洲看片| 美女一区二区视频| 精品一区二区综合| 国内欧美视频一区二区| 国产一区二区三区久久悠悠色av| 狠狠久久亚洲欧美| 国产一区二区调教| 成人福利视频在线看| 99精品欧美一区| 色婷婷激情一区二区三区| 色94色欧美sute亚洲线路一ni| 在线播放中文字幕一区| 欧美二区乱c少妇| 日韩一区二区影院| 国产欧美日韩久久| 1区2区3区欧美| 性久久久久久久久久久久| 日本女优在线视频一区二区| 看电影不卡的网站| 国产a精品视频| 一本一本久久a久久精品综合麻豆| 91蜜桃在线观看| 欧美日韩和欧美的一区二区| 日韩欧美国产一区二区三区| 精品少妇一区二区三区日产乱码| 国产日韩三级在线| 亚洲欧美视频在线观看视频| 亚洲成人自拍一区| 精品一区二区三区蜜桃| 国产91精品在线观看| 91福利区一区二区三区| 日韩视频在线永久播放| 国产精品系列在线| 亚洲成av人片在www色猫咪| 精品在线观看视频| 91国偷自产一区二区使用方法| 欧美一级夜夜爽| 国产精品女同一区二区三区| 亚洲成a人片在线不卡一二三区| 韩国女主播成人在线观看| 91伊人久久大香线蕉| 欧美一卡二卡三卡四卡| 国产精品午夜电影| 午夜视频一区二区三区| 国产精品香蕉一区二区三区| 欧美日韩在线一区二区| 久久久精品tv| 午夜一区二区三区视频| 国产精品一区二区不卡| 欧美这里有精品| 91麻豆精品国产综合久久久久久 | 亚洲视频资源在线| 日韩av一二三| 91在线观看成人| 精品国产一二三| 亚洲综合在线视频| 国产91对白在线观看九色| 欧美一区二区在线播放| 17c精品麻豆一区二区免费| 蜜臀a∨国产成人精品| 91免费视频网| 欧美国产日韩a欧美在线观看 | 欧美成人精品高清在线播放| 亚洲欧美日韩国产综合在线| 国产在线精品一区二区不卡了| 欧美日韩国产精品自在自线| 国产精品白丝在线| 韩国v欧美v日本v亚洲v| 欧美一级久久久久久久大片| 亚洲一区二区三区中文字幕| 91在线精品一区二区三区| 久久天天做天天爱综合色| 日本系列欧美系列| 欧美丰满少妇xxxbbb| 婷婷丁香激情综合| 在线观看亚洲精品视频| 亚洲日本护士毛茸茸| 成人看片黄a免费看在线| 精品国产欧美一区二区| 老司机精品视频导航| 欧美一级欧美一级在线播放| 亚洲成人av一区二区| 欧美日韩视频在线第一区| 亚洲成人综合视频| 欧美肥胖老妇做爰| 美女一区二区三区在线观看|