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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? usb.c

?? 三星3442處理器Demo板:Eboot源碼包
?? C
?? 第 1 頁 / 共 3 頁
字號:
	pUSBCtrlAddr->PMR.sus_en = 0;
	pUSBCtrlAddr->PMR.sus_mo = 0;
	pUSBCtrlAddr->PMR.mcu_res = 0;
	pUSBCtrlAddr->PMR.usb_re = 0;
	pUSBCtrlAddr->PMR.iso_up = 0;

	pUSBCtrlAddr->INDEX.index = 0;
	pUSBCtrlAddr->MAXP.maxp = 0x01;	//EP0 max packit size = 8 
	pUSBCtrlAddr->EP0ICSR1.sopr_cdt = 1;
	pUSBCtrlAddr->EP0ICSR1.sse_ = 1;
	//EP0:clear OUT_PKT_RDY & SETUP_END

	pUSBCtrlAddr->INDEX.index = 1;
	pUSBCtrlAddr->MAXP.maxp = 0x08;	//EP1 max packit size = 64 
	pUSBCtrlAddr->EP0ICSR1.de_ff = 1;
	pUSBCtrlAddr->EP0ICSR1.sopr_cdt = 1;
	pUSBCtrlAddr->ICSR2.mode_in = 1;
	pUSBCtrlAddr->ICSR2.in_dma_int_en = 1;
	pUSBCtrlAddr->ICSR2.iso = 0;
	pUSBCtrlAddr->OCSR1.clr_data_tog = 1;
	pUSBCtrlAddr->OCSR2.iso = 0;
	pUSBCtrlAddr->OCSR2.out_dma_int_en = 1;

	pUSBCtrlAddr->INDEX.index = 2;
	pUSBCtrlAddr->MAXP.maxp = 0x08;	//EP2 max packit size = 64 
	pUSBCtrlAddr->EP0ICSR1.de_ff = 1;
	pUSBCtrlAddr->EP0ICSR1.sopr_cdt = 1;
	pUSBCtrlAddr->ICSR2.mode_in = 1;
	pUSBCtrlAddr->ICSR2.in_dma_int_en = 1;
	pUSBCtrlAddr->ICSR2.iso = 0;
	pUSBCtrlAddr->OCSR1.clr_data_tog = 1;
	pUSBCtrlAddr->OCSR2.iso = 0;
	pUSBCtrlAddr->OCSR2.out_dma_int_en = 1;

	pUSBCtrlAddr->INDEX.index = 3;
	pUSBCtrlAddr->MAXP.maxp = 0x08;	//EP3 max packit size = 64 
	pUSBCtrlAddr->EP0ICSR1.de_ff = 1;
	pUSBCtrlAddr->EP0ICSR1.sopr_cdt = 1;
	pUSBCtrlAddr->ICSR2.mode_in = 0;
	pUSBCtrlAddr->ICSR2.in_dma_int_en = 0;
	pUSBCtrlAddr->ICSR2.iso = 0;
	pUSBCtrlAddr->OCSR1.clr_data_tog = 1;
	//clear OUT_PKT_RDY, data_toggle_bit.
	//The data toggle bit should be cleared when initialization.
	pUSBCtrlAddr->OCSR2.iso = 0;
	pUSBCtrlAddr->OCSR2.out_dma_int_en = 1;

	pUSBCtrlAddr->INDEX.index = 4;
	pUSBCtrlAddr->MAXP.maxp = 0x08;	//EP4 max packit size = 64 
	pUSBCtrlAddr->EP0ICSR1.de_ff = 1;
	pUSBCtrlAddr->EP0ICSR1.sopr_cdt = 1;
	pUSBCtrlAddr->ICSR2.mode_in = 0;
	pUSBCtrlAddr->ICSR2.in_dma_int_en = 1;
	pUSBCtrlAddr->ICSR2.iso = 0;
	pUSBCtrlAddr->OCSR1.clr_data_tog = 1;
	//clear OUT_PKT_RDY, data_toggle_bit.
	//The data toggle bit should be cleared when initialization.
	pUSBCtrlAddr->OCSR2.iso = 0;
	pUSBCtrlAddr->OCSR2.out_dma_int_en = 1;

	pUSBCtrlAddr->EIR.ep0_int=1;
	pUSBCtrlAddr->EIR.ep1_int=1;
	pUSBCtrlAddr->EIR.ep2_int=1;
	pUSBCtrlAddr->EIR.ep3_int=1;
	pUSBCtrlAddr->EIR.ep4_int=1;
	pUSBCtrlAddr->UIR.reset_int = 1;
	pUSBCtrlAddr->UIR.sus_int = 1;
	pUSBCtrlAddr->UIR.resume_int = 1;

	//Clear all usbd pending bits

	//EP0,1,3 & reset interrupt are enabled
	pUSBCtrlAddr->EIER.ep0_int_en = 1;
	pUSBCtrlAddr->EIER.ep1_int_en = 1;
	pUSBCtrlAddr->EIER.ep3_int_en = 1;

	pUSBCtrlAddr->UIER.reset_int_en = 1;
	ep0State=EP0_STATE_INIT;

}

#define    BIT_ALLMSK       (0xffffffff)
#define    BIT_USBD         (0x1<<25)
#define    BIT_DMA2         (0x1<<19)

static void WaitMS22 (DWORD dwMS)
{
	volatile DWORD dCount,dwIndex;

	for (dwIndex=0;dwIndex<dwMS;dwIndex++) {
		for (dCount=0;dCount<100000L;dCount++);
	}
}

void Isr_Init(void)
{
    volatile S3C2440A_INTR_REG *s2440INT = (S3C2440A_INTR_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_INTR, FALSE);
    volatile S3C2440A_IOPORT_REG *s2440IOP = (S3C2440A_IOPORT_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_IOPORT, FALSE);

#if 0
	s2440IOP->GPGCON &= ~(3<<24);
	s2440IOP->GPGCON |=  (1<<24); // output
	s2440IOP->GPGDN|=  (1<<12); // pullup disable
	s2440IOP->GPGDAT &= ~(0x1<<12);
#else
       s2440IOP->GPDCON &= ~(3<<16);
	s2440IOP->GPDCON |=  (1<<16); // output
	s2440IOP->GPDDN|=  (1<<8); // pullup disable
	s2440IOP->GPDDAT |= (0x1<<8);
#endif

	WaitMS22(10);
	
	//s2440IOP->GPGDAT |=  (1<<12); // output
	
	s2440INT->INTMOD=0x0;	  // All=IRQ mode
	s2440INT->INTMSK=BIT_ALLMSK;	  // All interrupt is masked.

	s2440IOP->MISCCR=s2440IOP->MISCCR&~(1<<3); // USBD is selected instead of USBH1 
	s2440IOP->MISCCR=s2440IOP->MISCCR&~(1<<13); // USB port 1 is enabled.

	s2440IOP->GPDDAT &=  ~(1<<8); // output
	
	EdbgOutputDebugString("INFO: (unsigned)IsrUsbd : 0x%x\r\n", (unsigned)IsrUsbd);
	EdbgOutputDebugString("INFO: (unsigned)IsrHandler : 0x%x\r\n", (unsigned)IsrHandler);

	// make value to assemble code "b IsrHandler"
	//(*(unsigned *)(0x30000000+0x18)) = 0x330;
	pISR =(unsigned)(0xEA000000)+(((unsigned)IsrHandler - (0x80000000 + 0x18 + 0x8) )>>2);
	//while(1);
	
	EdbgOutputDebugString("INFO: (pisr pisr pisr pisr): 0x%x\r\n", pISR);
	EdbgOutputDebugString("INFO: (pisr pisr pisr pisr): 0x%x\r\n", (&pISR));

//	EdbgOutputDebugString("INFO: (unsigned)pISR : 0x%x\r\n", (unsigned)pISR);

	s2440INT->SRCPND  = BIT_USBD;
	if (s2440INT->INTPND & BIT_USBD) 
		s2440INT->INTPND = BIT_USBD;
	
	s2440INT->INTMSK &= ~BIT_USBD;		// USB Interrupt enable.

	s2440INT->SRCPND  = BIT_DMA2;
	if (s2440INT->INTPND & BIT_DMA2) 
		s2440INT->INTPND = BIT_DMA2;
	
	s2440INT->INTMSK &= ~BIT_DMA2;		// DMA Interrupt enable.

}

void IsrUsbd(unsigned int val)
{
    U8 saveIndexReg=pUSBCtrlAddr->INDEX.index;
    volatile S3C2440A_INTR_REG *s2440INT = (S3C2440A_INTR_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_INTR, FALSE);
    volatile S3C2440A_CLKPWR_REG *s2440PWR = (S3C2440A_CLKPWR_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_CLOCK_POWER, FALSE);

//    EdbgOutputDebugString("INFO : IsrUsbd : Interrupt occurred \r\n");
/*
	EdbgOutputDebugString("INFO : IsrUsbd : Interrupt occurred \r\n");

	EdbgOutputDebugString("INFO : s2440INT->SRCPND = 0x%x \r\n", s2440INT->SRCPND);
	EdbgOutputDebugString("INFO : s2440INT->INTMSK = 0x%x \r\n", s2440INT->INTMSK);
	EdbgOutputDebugString("INFO : s2440INT->INTPND = 0x%x \r\n", s2440INT->INTPND);
	EdbgOutputDebugString("INFO : s2440PWR->CLKCON = 0x%x \r\n", s2440PWR->CLKCON);
	EdbgOutputDebugString("INFO : pUSBCtrlAddr = 0x%x \r\n", pUSBCtrlAddr);
	EdbgOutputDebugString("INFO : pUSBCtrlAddr->EIER.ep0_int_en = 0x%x \r\n", pUSBCtrlAddr->EIER.ep0_int_en);
	EdbgOutputDebugString("INFO : pUSBCtrlAddr->EIER.ep1_int_en = 0x%x \r\n", pUSBCtrlAddr->EIER.ep1_int_en);
	EdbgOutputDebugString("INFO : pUSBCtrlAddr->EIER.ep2_int_en = 0x%x \r\n", pUSBCtrlAddr->EIER.ep2_int_en);
	EdbgOutputDebugString("INFO : pUSBCtrlAddr->EIER.ep3_int_en = 0x%x \r\n", pUSBCtrlAddr->EIER.ep3_int_en);
	EdbgOutputDebugString("INFO : pUSBCtrlAddr->EIER.ep4_int_en = 0x%x \r\n", pUSBCtrlAddr->EIER.ep4_int_en);
	EdbgOutputDebugString("INFO : pUSBCtrlAddr->EIR.ep0_int = 0x%x \r\n", pUSBCtrlAddr->EIR.ep0_int);
	EdbgOutputDebugString("INFO : pUSBCtrlAddr->EIR.ep1_int = 0x%x \r\n", pUSBCtrlAddr->EIR.ep1_int);
	EdbgOutputDebugString("INFO : pUSBCtrlAddr->EIR.ep2_int = 0x%x \r\n", pUSBCtrlAddr->EIR.ep2_int);
	EdbgOutputDebugString("INFO : pUSBCtrlAddr->EIR.ep3_int = 0x%x \r\n", pUSBCtrlAddr->EIR.ep3_int);
	EdbgOutputDebugString("INFO : pUSBCtrlAddr->EIR.ep4_int = 0x%x \r\n", pUSBCtrlAddr->EIR.ep4_int);
	EdbgOutputDebugString("\r\n");
*/
	if (s2440INT->INTPND & BIT_DMA2)
	{
		DMA2Handler();
		goto Exit;
	}

    if(pUSBCtrlAddr->UIR.sus_int)
    {
		pUSBCtrlAddr->UIR.sus_int = 1;
		EdbgOutputDebugString("<SUS]\r\n");
    }
    if(pUSBCtrlAddr->UIR.resume_int)
    {
		pUSBCtrlAddr->UIR.resume_int = 1;
		EdbgOutputDebugString("<RSM]\r\n");
    }
    if(pUSBCtrlAddr->UIR.reset_int)
    {
		EdbgOutputDebugString("<RSET]\r\n");
    	ReconfigUsbd();
		pUSBCtrlAddr->UIR.reset_int = 1;
        PrepareEp1Fifo(); 
    }

    if(pUSBCtrlAddr->EIR.ep0_int)
    {
		//EdbgOutputDebugString("EP0 Interrupt\r\n");
		pUSBCtrlAddr->EIR.ep0_int=1;
    	Ep0Handler();
    }
    if(pUSBCtrlAddr->EIR.ep1_int)
    {
		EdbgOutputDebugString("<1:TBD]\r\n");
		pUSBCtrlAddr->EIR.ep1_int=1;
    	Ep1Handler();
    }
    if(pUSBCtrlAddr->EIR.ep2_int)
    {
		pUSBCtrlAddr->EIR.ep2_int=1;
		EdbgOutputDebugString("<2:TBD]\r\n");
    }
    if(pUSBCtrlAddr->EIR.ep3_int)
    {
		EdbgOutputDebugString("<3:TBD]\r\n");
    	Ep3Handler();
		pUSBCtrlAddr->EIR.ep3_int=1;
    }
    if(pUSBCtrlAddr->EIR.ep4_int)
    {
		pUSBCtrlAddr->EIR.ep4_int=1;
		EdbgOutputDebugString("<4:TBD]\r\n");
    }

	if (s2440INT->INTPND & BIT_USBD)
	{
		s2440INT->SRCPND  = BIT_USBD;
		if (s2440INT->INTPND & BIT_USBD) s2440INT->INTPND = BIT_USBD;
	}

Exit:
    pUSBCtrlAddr->INDEX.index=saveIndexReg;
}

void Ep3Handler(void)
{
    int fifoCnt;
    volatile S3C2440A_INTR_REG *s2440INT = (S3C2440A_INTR_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_INTR, FALSE);

    pUSBCtrlAddr->INDEX.index=3;

	EdbgOutputDebugString("pUSBCtrlAddr->OCSR1.out_pkt_rdy = 0x%x\r\n", pUSBCtrlAddr->OCSR1.out_pkt_rdy);
    if(pUSBCtrlAddr->OCSR1.out_pkt_rdy)
    {
		fifoCnt=pUSBCtrlAddr->OFCR1.out_cnt_low;

		downPt = (LPBYTE)(downPtIndex);
		RdPktEp3((U8 *)downPt,fifoCnt);
		downPtIndex += 64;
		s2440INT->INTMSK |= BIT_USBD;		// USB Interrupt disable.
		EdbgOutputDebugString("Ep3Handler : downPtIndex = 0x%x\r\n", downPtIndex);
		return;
    }

    //I think that EPO_SENT_STALL will not be set to 1.
    if(pUSBCtrlAddr->OCSR1.sent_stall)
    {
	   	CLR_EP3_SENT_STALL();
   		return;
    }
}

void DMA2Handler(void)
{
    volatile S3C2440A_INTR_REG *s2440INT = (S3C2440A_INTR_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_INTR, FALSE);
    volatile S3C2440A_DMA_REG *v_pDMAregs = (S3C2440A_DMA_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_DMA, FALSE);

	s2440INT->SRCPND  = BIT_DMA2;
	if (s2440INT->INTPND & BIT_DMA2) s2440INT->INTPND = BIT_DMA2;

	downPtIndex += 0x80000;

	v_pDMAregs->DIDST2=((U32)downPtIndex+0x80000);
	v_pDMAregs->DIDSTC2=(1<<2)|(0<<1)|(0<<0);  
	v_pDMAregs->DCON2=v_pDMAregs->DCON2&~(0xfffff)|(0x80000); 

	while(rEP3_DMA_TTC<0xfffff)
	{
		pUSBCtrlAddr->EP3DTL.ep3_ttl_l = 0xff;
		pUSBCtrlAddr->EP3DTM.ep3_ttl_m = 0xff;
		pUSBCtrlAddr->EP3DTH.ep3_ttl_h = 0x0f;
	}
}

void ConfigEp3DmaMode(U32 bufAddr,U32 count)
{
    volatile S3C2440A_INTR_REG *s2440INT = (S3C2440A_INTR_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_INTR, FALSE);
    volatile S3C2440A_DMA_REG *v_pDMAregs = (S3C2440A_DMA_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_DMA, FALSE);
	int i;

	pUSBCtrlAddr->INDEX.index=3;
	count=count&0xfffff; //transfer size should be <1MB
	v_pDMAregs->DISRCC2=(1<<1)|(1<<0);
	v_pDMAregs->DISRC2=REAL_PHYSICAL_ADDR_EP3_FIFO; //src=APB,fixed,src=EP3_FIFO
	v_pDMAregs->DIDSTC2=(0<<2)|(0<<1)|(0<<0);
	v_pDMAregs->DIDST2=bufAddr;       //dst=AHB,increase,dst=bufAddr
	v_pDMAregs->DCON2=(count)|(1<<31)|(0<<30)|(1<<29)|(0<<28)|(0<<27)|(4<<24)|(1<<23)|(0<<22)|(0<<20); 
	//handshake,requestor=APB,CURR_TC int enable,unit transfer,
	//single service,src=USBD,H/W request,autoreload,byte,CURR_TC

	v_pDMAregs->DMASKTRIG2 = (1<<1);
	//DMA 2 on

	pUSBCtrlAddr->EP3DTL.ep3_ttl_l = 0xff;
	pUSBCtrlAddr->EP3DTM.ep3_ttl_m = 0xff;
	pUSBCtrlAddr->EP3DTH.ep3_ttl_h = 0x0f;

	pUSBCtrlAddr->OCSR2.auto_clr = 1;
	pUSBCtrlAddr->OCSR2.out_dma_int_en = 1;
	//AUTO_CLR(OUT_PKT_READY is cleared automatically), interrupt_masking.
	pUSBCtrlAddr->EP3DU.ep3_unit_cnt = 1;

	*(volatile BYTE *)&pUSBCtrlAddr->EP3DC=UDMA_OUT_DMA_RUN|UDMA_DMA_MODE_EN;

	// deamnd disable,out_dma_run=run,in_dma_run=stop,DMA mode enable
    //wait until DMA_CON is effective.
	*(volatile BYTE *)&pUSBCtrlAddr->EP3DC;
	for(i=0;i<10;i++);
}

void ConfigEp3IntMode(void)
{
    volatile S3C2440A_DMA_REG *v_pDMAregs = (S3C2440A_DMA_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_DMA, FALSE);
    pUSBCtrlAddr->INDEX.index=3;
    
    v_pDMAregs->DMASKTRIG2= (0<<1);  // EP3=DMA ch 2
        //DMA channel off
	pUSBCtrlAddr->OCSR2.auto_clr = 0;

	//AUTOCLEAR off,interrupt_enabled (???)
	pUSBCtrlAddr->EP3DU.ep3_unit_cnt = 1;
	*(volatile BYTE *)&pUSBCtrlAddr->EP3DC=0x0;
    //wait until DMA_CON is effective.
    *(volatile BYTE *)&pUSBCtrlAddr->EP3DC;
}

#pragma optimize ("",off)
BOOL UbootReadData(DWORD cbData, LPBYTE pbData)
{
    volatile S3C2440A_INTR_REG *s2440INT = (S3C2440A_INTR_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_INTR, FALSE);
    volatile S3C2440A_IOPORT_REG *s2440IOP = (S3C2440A_IOPORT_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_IOPORT, FALSE);
    volatile S3C2440A_DMA_REG *v_pDMAregs = (S3C2440A_DMA_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_DMA, FALSE);
    volatile S3C2440A_CLKPWR_REG *s2440PWR = (S3C2440A_CLKPWR_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_CLOCK_POWER, FALSE);
	unsigned int temp;
	int i;
	volatile unsigned int tPIndex;
Loop:

/*
	EdbgOutputDebugString("INFO : UbootReadData : s2440PWR->CLKCON     = 0x%x\r\n", s2440PWR->CLKCON);
	EdbgOutputDebugString("INFO : UbootReadData : s2440INT->INTMSK     = 0x%x\r\n", s2440INT->INTMSK);
	EdbgOutputDebugString("INFO : UbootReadData : v_pDMAregs->DCDST2   = 0x%x\r\n", v_pDMAregs->DCDST2);
	EdbgOutputDebugString("INFO : UbootReadData : downPtIndex          = 0x%x\r\n", downPtIndex);
	EdbgOutputDebugString("INFO : UbootReadData : readPtIndex = 0x%x\r\n", readPtIndex);
	EdbgOutputDebugString("INFO : UbootReadData : cbData = 0x%x\r\n", cbData);
	EdbgOutputDebugString("INFO : UbootReadData : readPtIndex + cbData = 0x%x\r\n", readPtIndex + cbData);
*/
// add by xm.hu
	tPIndex = readPtIndex;
#if 0
    if(tPIndex==DMABUFFER)
      {
      		EdbgOutputDebugString("tPIndex==DMABUFFER : downPtIndex3 = 0x%x\r\n", downPtIndex);
      }
    else
    	{
		if (!((tPIndex -DMABUFFER)%832))
		{
			EdbgOutputDebugString("downPtIndex : downPtIndex3 = 0x%x\r\n", downPtIndex);
			EdbgOutputDebugString("readPtIndex : downPtIndex5 = 0x%x\r\n", readPtIndex);
			//readPtIndex += 8;
			tPIndex +=8;
		}
    	}
#endif

	if ( v_pDMAregs->DCDST2 >= readPtIndex + cbData )
//	if ( downPtIndex > readPtIndex + cbData )
	{
		memcpy(pbData, readPtIndex, cbData);
		//memcpy(pbData, tPIndex, cbData);
		
		// xm.hu
		// EdbgOutputDebugString("UbootReadData %x %x %x %x: +while \r\n",pbData[0],pbData[2],pbData[3],pbData[4]);
		readPtIndex += cbData;
		loopcnt = 0;
	}
	else if (loopcnt > 50)	// it may be
	{
		memcpy(pbData, readPtIndex, cbData);
		readPtIndex += cbData;
	}
	else if (downPtIndex == DMABUFFER)
	{
		while (downPtIndex == DMABUFFER) {
//			EdbgOutputDebugString("UbootReadData : downPtIndex = 0x%x\r\n", downPtIndex);
		};	// first 64 bytes, get interrupt mode.

//		EdbgOutputDebugString("UbootReadData : downPtIndex = 0x%x\r\n", downPtIndex);

#if 1
		if ( readPtIndex == DMABUFFER )
		{
			if (Mylogcnt==0)
			{
				// xm.hu
				//EdbgOutputDebugString("first read ??!!! : +while \r\n");
				readPtIndex += 8;
				Mylogcnt = 1;
			}
			//readPtIndex += 8;
			//tPIndex = readPtIndex;
			//tPIndex += 8;
			memcpy(pbData, readPtIndex, cbData);
			//memcpy(pbData, tPIndex, cbData);
			// xm.hu
			//EdbgOutputDebugString("UbootReadData %x %x %x %x: +while \r\n",pbData[0],pbData[2],pbData[3],pbData[4]);

			readPtIndex += cbData;
		}
#endif

		s2440INT->SRCPND  = BIT_USBD;
		if (s2440INT->INTPND & BIT_USBD) s2440INT->INTPND = BIT_USBD;
		s2440INT->INTMSK |= BIT_USBD;		// USB Interrupt disable.

		// read data with DMA operation.
		s2440INT->SRCPND  = BIT_DMA2;
		if (s2440INT->INTPND & BIT_DMA2) s2440INT->INTPND = BIT_DMA2;
		s2440INT->INTMSK &= ~BIT_DMA2;		// DMA Interrupt enable.

		pUSBCtrlAddr->INDEX.index=3;
		CLR_EP3_OUT_PKT_READY();

		ConfigEp3DmaMode(downPtIndex,0x80000);

		v_pDMAregs->DIDST2=(downPtIndex+0x80000);	//for 1st autoreload.
		v_pDMAregs->DIDSTC2=(1<<2)|(0<<1)|(0<<0);
		v_pDMAregs->DCON2=v_pDMAregs->DCON2&~(0xfffff)|(0x80000);

//		EdbgOutputDebugString("UbootReadData : +while \r\n");

//		EdbgOutputDebugString("UbootReadData : &(pUSBCtrlAddr->EP3DTL) = 0x%x \r\n", &(pUSBCtrlAddr->EP3DTL));

		while(rEP3_DMA_TTC<0xfffff)
		{
//			EdbgOutputDebugString("UbootReadData : rEP3_DMA_TTC = 0x%x \r\n", rEP3_DMA_TTC);
//			EdbgOutputDebugString("INFO : UbootReadData : s2440PWR->CLKCON     = 0x%x\r\n", s2440PWR->CLKCON);
//			EdbgOutputDebugString("INFO : UbootReadData : v_pDMAregs->DCDST2   = 0x%x\r\n", v_pDMAregs->DCDST2);
			pUSBCtrlAddr->EP3DTL.ep3_ttl_l = 0xff;
			pUSBCtrlAddr->EP3DTM.ep3_ttl_m = 0xff;
			pUSBCtrlAddr->EP3DTH.ep3_ttl_h = 0x0f;
		}
//		EdbgOutputDebugString("UbootReadData : -while \r\n");
	}
	else
	{
//		for (i = 0; i < 60000; i++ )
//		{
//		}
//		loopcnt ++;
//		EdbgOutputDebugString("INFO : UbootReadData : loopcnt = 0x%x\r\n", loopcnt);
		goto Loop;
	}

	return TRUE;
}
#pragma optimize ("",on)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品免费国产二区三区 | 欧美三级电影精品| 亚洲午夜一二三区视频| 69堂国产成人免费视频| 久久国产视频网| 国产欧美精品日韩区二区麻豆天美| 成人夜色视频网站在线观看| 亚洲免费在线播放| 欧美精品第1页| 国产在线精品免费av| 国产精品电影院| 欧美猛男男办公室激情| 久久99国产乱子伦精品免费| 日本一区二区在线不卡| 一本大道av伊人久久综合| 午夜精品久久久久久久| 精品久久国产字幕高潮| heyzo一本久久综合| 亚洲大片免费看| 精品少妇一区二区三区日产乱码 | 风流少妇一区二区| 夜色激情一区二区| 日韩欧美激情一区| 成人ar影院免费观看视频| 亚洲二区视频在线| 久久久亚洲高清| 色偷偷88欧美精品久久久| 久久国产综合精品| 亚洲色图欧洲色图| 日韩丝袜情趣美女图片| 成人av影视在线观看| 欧美日韩夫妻久久| 国产美女娇喘av呻吟久久 | 亚洲欧美日韩一区二区三区在线观看 | 国产98色在线|日韩| 亚洲大片一区二区三区| 久久久久99精品一区| 91国产精品成人| 激情综合网最新| 洋洋成人永久网站入口| 久久久www成人免费毛片麻豆| 欧美影片第一页| 国产一区二区不卡老阿姨| 亚洲永久免费av| 国产婷婷色一区二区三区在线| 欧美亚洲日本国产| 成人午夜激情影院| 日本免费新一区视频| 亚洲免费在线看| 久久精品亚洲精品国产欧美| 7777精品伊人久久久大香线蕉完整版 | 一区二区三区四区高清精品免费观看| 成人三级在线视频| 中文字幕制服丝袜一区二区三区 | 激情偷乱视频一区二区三区| 亚洲区小说区图片区qvod| 精品福利在线导航| 欧美精品乱码久久久久久按摩 | 成人精品国产一区二区4080| 日韩高清中文字幕一区| 中文字幕日韩精品一区 | 久久九九国产精品| 91精品在线免费观看| 91亚洲永久精品| 国产91在线看| 精品无码三级在线观看视频| 亚洲午夜电影在线观看| 日韩久久一区二区| 国产欧美一区视频| 日韩女同互慰一区二区| 欧美日高清视频| 色婷婷国产精品| 成人一级片在线观看| 国产一区二区看久久| 美女国产一区二区| 亚洲成人7777| 夜夜精品视频一区二区| 亚洲欧洲99久久| 欧美国产一区二区| 久久久久久久久久久久久久久99 | 久久成人av少妇免费| 爽好多水快深点欧美视频| 有码一区二区三区| 亚洲欧洲在线观看av| 久久久99久久| 26uuu国产电影一区二区| 日韩欧美一区二区三区在线| 天天操天天综合网| 樱花草国产18久久久久| 综合色天天鬼久久鬼色| 中文字幕精品—区二区四季| 国产午夜精品一区二区| 久久亚洲精品小早川怜子| 欧美本精品男人aⅴ天堂| 制服丝袜亚洲播放| 欧美性生活久久| 欧洲人成人精品| 日本精品免费观看高清观看| 色婷婷av一区二区| 色婷婷综合激情| 色婷婷激情一区二区三区| 色一区在线观看| 在线观看日韩高清av| 欧美亚州韩日在线看免费版国语版| 一本高清dvd不卡在线观看| 91免费精品国自产拍在线不卡| 91免费观看在线| 日本二三区不卡| 在线视频一区二区三| 欧洲另类一二三四区| 欧美三日本三级三级在线播放| 欧美在线高清视频| 欧美日韩亚洲国产综合| 欧美伦理视频网站| 欧美一区二区三区免费| 日韩精品专区在线影院重磅| 日韩一区二区在线免费观看| 日韩免费观看2025年上映的电影| 精品对白一区国产伦| 国产三级精品在线| 国产精品久久久久久福利一牛影视 | 欧美精品一区二区三区蜜臀| 精品日本一线二线三线不卡| 久久免费看少妇高潮| 国产精品视频免费看| 亚洲三级在线免费| 一区二区欧美国产| 日本亚洲电影天堂| 狠狠色丁香婷综合久久| 国产.欧美.日韩| 一本色道久久综合狠狠躁的推荐| 欧美日韩精品一区二区三区| 欧美成人video| 国产女主播一区| 亚洲欧美乱综合| 日本三级韩国三级欧美三级| 国产精品主播直播| 色综合夜色一区| 在线成人免费视频| 久久精品亚洲精品国产欧美 | 91精品国产欧美一区二区成人| 精品国产91洋老外米糕| 亚洲国产成人一区二区三区| 亚洲一二三级电影| 久草这里只有精品视频| 99免费精品在线| 欧美丰满少妇xxxxx高潮对白| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品高清亚洲| 日韩精品一级中文字幕精品视频免费观看| 激情综合网av| 色婷婷av久久久久久久| 欧美va亚洲va香蕉在线| 国产精品久久久久久久第一福利| 午夜亚洲福利老司机| 国产精品一区二区久久精品爱涩| 91麻豆.com| 日韩精品一区二区三区在线 | 国产成人精品免费看| 91精品福利视频| 久久综合色8888| 亚洲综合在线观看视频| 精品一区二区三区在线播放| 91色视频在线| 欧美精品一区二区三区蜜桃视频| 亚洲欧美日韩久久| 精品一区二区三区在线视频| 91丨porny丨国产入口| 欧美草草影院在线视频| 亚洲欧美日韩综合aⅴ视频| 久久99日本精品| 在线观看不卡一区| 久久久亚洲精华液精华液精华液| 亚洲国产日韩精品| 国产成人激情av| 欧美一区永久视频免费观看| 国产精品福利电影一区二区三区四区| 欧美aaa在线| 色狠狠综合天天综合综合| 久久精品一区二区三区四区| 午夜国产不卡在线观看视频| caoporm超碰国产精品| 精品久久久久久最新网址| 一区二区三区波多野结衣在线观看| 国产精品1区2区| 欧美一区二区视频在线观看2022| 亚洲女子a中天字幕| 国产久卡久卡久卡久卡视频精品| 欧美日韩另类一区| 亚洲欧洲综合另类在线| 国产成人免费视频网站高清观看视频| 欧美日韩国产bt| 自拍偷拍亚洲综合| 国产成人午夜视频| 日韩一级免费一区| 亚洲高清三级视频| 91视频在线看| 国产精品少妇自拍| 国内精品在线播放| 欧美一区二区三区免费|