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

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

?? sc2410_usb_hw.c

?? usb device driver for samsung2410
?? C
?? 第 1 頁 / 共 4 頁
字號:

	// Endpoint 1 mode
	saveIndex=*(volatile BYTE *)&pHWHead->pUSBCtrlAddr->INDEX;
	UDC_REG_BITSET(struct INDEXBits, &pHWHead->pUSBCtrlAddr->INDEX, index, 0x1);
    //pHWHead->pUSBCtrlAddr->INDEX.index=0x1; //:-)
	
	pHWHead->CommErrors &= ~CE_TXFULL;

	// If nothing to send, just return after clearing interrupt.
	if (! *pBuffLen ) 
	{
		//DEBUGMSG (1, (TEXT("[TX:nothing to send]")));    
		*(volatile BYTE *)&pHWHead->pUSBCtrlAddr->INDEX=saveIndex;
		return;
	}
    		      	
	// Don't try to send more than EP1 can handle.
	if( *pBuffLen > EP1Len )
    		ucLen = EP1Len;
	else {

		// If we end exactly on a packet boundary, the host doesn't
		// realize there is no more data.  So if we exactly fill the final 
		// packet, truncate it so we can send a short packet next frame
		// indicating end of the transmission
		if( *pBuffLen == EP1Len ) 
		{
			//USBDMSG (1, (TEXT("Tx breaking packet\r\n")));            
			ucLen = EP1Len - 2;
		} else {
			ucLen = (UCHAR)*pBuffLen;
		}

	}

	if (!pHWHead->pUSBCtrlAddr->EP0ICSR1.opr_ipr)
	{
		// Write to the FIFO directly to send the bytes.
		for (i=0; i < ucLen; i++) 
		{
			IOW_REG_FIELD(struct EP1FBits, 
				&pHWHead->pUSBCtrlAddr->EP1F, fifo_data, *pTxBuffer++);
		}

		// Return number of bytes transmitted via pBuffLen.
		*pBuffLen = ucLen;
		UDC_REG_WRITE(struct EP0ICSR1Bits, &pHWHead->pUSBCtrlAddr->EP0ICSR1, opr_ipr, 1);
	} else {
		// Transmit already in progress.  Just return and wait for current
		// transmission to complete before sending more.
		//USBDMSG(0, (TEXT("Write Pend !!!\r\n")));
		*pBuffLen = 0; 
	}

	//DEBUGMSG(0, (TEXT("--SC2410_USB_TxIntHandler\r\n")));
	*(volatile BYTE *)&pHWHead->pUSBCtrlAddr->INDEX=saveIndex;
}



BOOL
HW_PowerOff(
    PSER_INFO pHWHead 
    )
{
	pHWHead->State = OFF;
	// cache the interrupt regs
	pHWHead->cIntStat_uir = *(BYTE *)&pHWHead->pUSBCtrlAddr->UIR;
	pHWHead->cIntStat_eir = *(BYTE *)&pHWHead->pUSBCtrlAddr->EIR;
        
        //Jonatahn01_0915 Start
        s2410IOP->rGPJDAT &= ~(0x1 << 9); 
        //Jonatahn01_0915 end
        
	// disable the USB Clocks
	EnterCriticalSection(&pHWHead->HwRegCritSec);
	//DEBUGMSG(1, (TEXT("USB:HW_PowerOff()\r\n")));
	RETAILMSG(1, (TEXT("USB:HW_PowerOff()\r\n")));
	HW_USBClocks(pHWHead);
	LeaveCriticalSection(&pHWHead->HwRegCritSec);

    return TRUE;
}


BOOL 
HW_PowerOn(
    PSER_INFO pHWHead
    )
{
		
	pHWHead->State = RESUME;

	// enable the USB Clocks
	EnterCriticalSection(&pHWHead->HwRegCritSec);
	
	//Jonathan01_0915 Start
	if(!(s2410IOP->rGPGDAT & (0x1 << 1)) && (s2410IOP->rGPGDAT & (0x1 << 8)))
        {	       
          pDriverGlobals->misc.USBCableEvent =2;  
          RETAILMSG(1,(TEXT("::: HW_PowerOn -- USB IN \r\n"))); 
        }
        //Jonathan01_0915 end
        
	//DEBUGMSG(1, (TEXT("USB:HW_PowerOn()\r\n")));
	RETAILMSG(1, (TEXT("USB:HW_PowerOn() Start\r\n")));
	HW_USBClocks(pHWHead);
	LeaveCriticalSection(&pHWHead->HwRegCritSec);
	SetInterruptEvent(pHWHead->pHWObj->dwIntID);
	
	SC2410_USB_Init(pHWHead); //Jonathan01_0915
	 		
        RETAILMSG(1, (TEXT("USB:HW_PowerOn() end\r\n")));
    return TRUE;
}



VOID
HW_USBClocks(PSER_INFO pHWHead)
{
	volatile CLKPWRreg *s2410CLKPW = (CLKPWRreg *)CLKPWR_BASE; //Jonathan
	
	if ((pHWHead->State == IDLE) || (pHWHead->State == RESUME))
	{
		//dic100 DEBUGMSG(1, (TEXT("HW_USBClocks::IDLE\r\n")));
		//dic100 RETAILMSG(1, (TEXT("++SHW_USBClocks Start\r\n")));
        //
        // Enable the USB Clocks
        //
        
        //pHWHead->pCLKPWR->rCLKCON |= (1<<7);
        s2410CLKPW->rCLKCON |= (0x1<<7); 
        //dic100 DEBUGMSG(ZONE_INIT, (TEXT("rCLKCON: 0x%X\r\n"), pHWHead->pCLKPWR->rCLKCON));
        //dic100 RETAILMSG(1, (TEXT("rCLKCON: 0x%X\r\n"), s2410CLKPW->rCLKCON));
        // Fin=12MHz, Fout=48MHz
        //pHWHead->pCLKPWR->rUPLLCON = 0x48032;   // ((0x48 << 12) + (0x3 << 4) + 0x2)
        //DEBUGMSG(ZONE_INIT, (TEXT("rUPLLCON: 0x%X\r\n"), pHWHead->pCLKPWR->rUPLLCON));

        //
        // MISCCR: USBD Pads, Normal mode
        //
        //pHWHead->pIrqCtrlAddr->rMISCCR &= ~((3 << 12) | (1 << 3));
        s2410IOP->rMISCCR &= ~((3 << 12) | (1 << 3));

        // TO DO :
        // Enable USB_PULLUP on GPIO PIN (tied to USB D+) & set high
        //

        //pHWHead->pIrqCtrlAddr->rGPBCON &= ~(3 << 18);    // clear GPE15
        //pHWHead->pIrqCtrlAddr->rGPBCON |=  (1 << 18);    // config as output
        //pHWHead->pIrqCtrlAddr->rGPBUP  &= ~(1 << 9);    // pullup disabled
        //pHWHead->pIrqCtrlAddr->rGPBDAT |=  (1 << 9);    // set high

        ////pHWHead->pIrqCtrlAddr->rGPGCON &= ~(3 << 24);    // clear GPE15
        ////pHWHead->pIrqCtrlAddr->rGPGCON |=  (1 << 24);    // config as output
        ////pHWHead->pIrqCtrlAddr->rGPGUP  &= ~(1 << 12);    // pullup disabled
        ////pHWHead->pIrqCtrlAddr->rGPGDAT |=  (1 << 12);    // set high
        
        
        s2410IOP->rGPBCON &= ~(3 << 30);    // clear GPE15
        s2410IOP->rGPBCON |=  (1 << 30);    // config as output
        s2410IOP->rGPBUP  &= ~(1 << 15);    // pullup disabled
        s2410IOP->rGPBDAT |=  (1 << 15);    // set high


        DEBUGMSG(ZONE_INIT, (TEXT("rGPDCON: 0x%X\r\n"), pHWHead->pIrqCtrlAddr->rGPDCON));
        DEBUGMSG(ZONE_INIT, (TEXT("rGPDUP: 0x%X\r\n"),  pHWHead->pIrqCtrlAddr->rGPDUP));
        DEBUGMSG(ZONE_INIT, (TEXT("rGPDDAT: 0x%X\r\n"), pHWHead->pIrqCtrlAddr->rGPDDAT));
	//RETAILMSG(1, (TEXT("rGPDCON: 0x%X\r\n"), pHWHead->pIrqCtrlAddr->rGPDCON));
	//RETAILMSG(1, (TEXT("rGPDUP: 0x%X\r\n"), pHWHead->pIrqCtrlAddr->rGPDUP));
	//RETAILMSG(1, (TEXT("rGPDDAT 0x%X\r\n"), pHWHead->pIrqCtrlAddr->rGPDDAT));
	}
	else if (pHWHead->State == OFF) 
	{
		DEBUGMSG(1, (TEXT("HW_USBClocks::OFF\r\n")));
        //
        // Disable the USB Clocks
        //
        //pHWHead->pCLKPWR->rCLKCON &= ~(1<<7);
        s2410CLKPW->rCLKCON &= ~(0x1<<7); 

        //dic100 DEBUGMSG(ZONE_INIT, (TEXT("rCLKCON: 0x%X\r\n"), pHWHead->pCLKPWR->rCLKCON));
        //dic100 RETAILMSG(1, (TEXT("rCLKCON: 0x%X\r\n"), s2410CLKPW->rCLKCON));
        // Fin=12MHz, Fout=48MHz
        //pHWHead->pCLKPWR->rUPLLCON = 0;
        // MISCCR: USBD Pads, Suspend mode
        //pHWHead->pIrqCtrlAddr->rMISCCR |= (3 << 12);
        s2410IOP->rMISCCR |= (3 << 12);

        // TO DO :
        // Disable USB_PULLUP to remove us from the bus
        

        //pHWHead->pIrqCtrlAddr->rGPBCON &= ~(3 << 18);    // clear GPE15
        //pHWHead->pIrqCtrlAddr->rGPBCON |=  (1 << 18);    // config as output
        //pHWHead->pIrqCtrlAddr->rGPBUP  |=  (1 << 9);    // pullup disabled
        //pHWHead->pIrqCtrlAddr->rGPBDAT &= ~(1 << 9);    // set low
        
        ///pHWHead->pIrqCtrlAddr->rGPGCON &= ~(3 << 24);    // clear GPE15
        ///pHWHead->pIrqCtrlAddr->rGPGCON |=  (1 << 24);    // config as output
        ///pHWHead->pIrqCtrlAddr->rGPGUP  |=  (1 << 12);    // pullup disabled
        ///pHWHead->pIrqCtrlAddr->rGPGDAT &= ~(1 << 12);    // set low
        
        s2410IOP->rGPBCON &= ~(3 << 30);    // clear GPE15
        s2410IOP->rGPBCON |=  (1 << 30);    // config as output
        s2410IOP->rGPBUP  |=  (1 << 15);    // pullup disabled
        s2410IOP->rGPBDAT &= ~(1 << 15);    // set high


		DEBUGMSG(ZONE_INIT, (TEXT("rUPLLCON: 0x%X\r\n"), pHWHead->pCLKPWR->rUPLLCON));
	     //RETAILMSG(1, (TEXT("rUPLLCON: 0x%X\r\n"), pHWHead->pCLKPWR->rUPLLCON));
        }
	//dic100 RETAILMSG(1, (TEXT("++SHW_USBClocks end\r\n")));
}


// :-)
/***************************************
  Added routines for USBD Rx:DMA Tx:ISR
 ***************************************/

BOOL InitUsbdDriverGlobals(void)
{
	BOOL	Ret;
	int i;
	//RETAILMSG(1,(TEXT("::: USBD:DRIVER_GLOBALS is start \r\n")));

	if ( v_pDriverGlobals == NULL )
	{
		//RETAILMSG(1,(TEXT("::: USBD:DRIVER_GLOBALS is A \r\n")));
		v_pDriverGlobals =(PDRIVER_GLOBALS)VirtualAlloc( 0,
						DRIVER_GLOBALS_PHYSICAL_MEMORY_SIZE,
						MEM_RESERVE,
						PAGE_NOACCESS);
		if ( v_pDriverGlobals == NULL )
		{
		    USBDMSG( 1, (TEXT( "InitUsbdDriverGlobals : VirtualAlloc failed!\r\n")) );
			return ( FALSE );
		}

		Ret = VirtualCopy( (LPVOID)v_pDriverGlobals,
						   (LPVOID)DRIVER_GLOBALS_PHYSICAL_MEMORY_START,
						   DRIVER_GLOBALS_PHYSICAL_MEMORY_SIZE,
						   PAGE_READWRITE | PAGE_NOCACHE
						   );

		if ( Ret == FALSE )
		{
			DEBUGMSG( ZONE_ERROR, (TEXT( "InitUsbdDriverGlobals: VirtualCopy failed!\r\n")) );
			if ( v_pDriverGlobals )
			{
				VirtualFree( v_pDriverGlobals,
							 DRIVER_GLOBALS_PHYSICAL_MEMORY_SIZE ,
							 MEM_RELEASE
							);
				v_pDriverGlobals = NULL;
			} 
			return ( FALSE );
		}
		//RETAILMSG(1,(TEXT("::: USBD:DRIVER_GLOBALS is B \r\n")));
	}
	
    usbdShMem=&(v_pDriverGlobals->usbd);	

    for(i=0;i<USBD_GLOBALS_BUF_SIZE;i++)
    {
        usbdShMem->usbdRxBuf[i]=0x0;
        //RETAILMSG(1,(TEXT("::: USBD:DRIVER_GLOBALS is C \r\n")));
		//usbdShMem->usbdTxBuf[i]=0x0;
    }
	usbdShMem->usbdRxRdPt=0;
	usbdShMem->usbdRxWrPt=0;
	usbdShMem->usbdRxCnt=0;
	//usbdShMem->usbdTxRdPt=0;
	//usbdShMem->usbdTxWrPt=0;
	//usbdShMem->usbdTxCnt=0;
	usbdShMem->usbdEir=0;
 	usbdShMem->usbdUir=0;
	usbdShMem->usbdDma3Int=0; 
	//usbdShMem->usbdMddRxCnt=0;
	usbdShMem->usbSwitch = FALSE;
	USBDMSG( 1, (TEXT( "USBD:DRIVER_GLOBALS is initialized\r\n")) );
	//RETAILMSG(1,(TEXT("::: USBD:DRIVER_GLOBALS is initialized \r\n")));
	return( TRUE ); 
}



BOOL UsbdAllocateVm(void)
{
	if(v_pDMAregs == NULL) 
	{
		v_pDMAregs = (volatile DMAreg *) 
			VirtualAlloc(0,sizeof(DMAreg),MEM_RESERVE, PAGE_NOACCESS);
		if(v_pDMAregs == NULL)
		{
			ERRORMSG(1,(TEXT("For DMAreg: VirtualAlloc failed!\r\n")));
			return (FALSE);
		}
		else 
		{
			if(!VirtualCopy((PVOID)v_pDMAregs,(PVOID)(DMA_BASE),sizeof(DMAreg),
				PAGE_READWRITE | PAGE_NOCACHE )) 
			{
				ERRORMSG(1,(TEXT("For pIOPregs: VirtualCopy failed!\r\n")));
				UsbdDeallocateVm();
				return (FALSE);
			}
		}
	}

	if(v_pINTregs == NULL)
	{
    	v_pINTregs = (volatile INTreg *) 
	    		VirtualAlloc(0,sizeof(INTreg),MEM_RESERVE, PAGE_NOACCESS);
   		if(v_pINTregs == NULL)
		{
	   		ERRORMSG(1,(TEXT("For INTreg: VirtualAlloc failed!\r\n")));
			return (FALSE);
	   	}
    	else 
		{
	    	if(!VirtualCopy((PVOID)v_pINTregs,(PVOID)(INT_BASE),sizeof(INTreg),
		    	   PAGE_READWRITE | PAGE_NOCACHE ))
		   	{
				ERRORMSG(1,(TEXT("For INTreg: VirtualCopy failed!\r\n")));
    				return (FALSE);
	    	}
	   	}
	}
	
	return TRUE;
}



void UsbdDeallocateVm(void)
{
	if(v_pDMAregs)
	{
		VirtualFree((void*)v_pDMAregs, sizeof(DMAreg), MEM_RELEASE);
		v_pDMAregs=NULL;
	}

	if(v_pINTregs)
	{
		VirtualFree((void*)v_pINTregs, sizeof(INTreg), MEM_RELEASE);
		v_pINTregs=NULL;
	}
}



void UsbdInitDma3(int bufIndex,int bufOffset)
{
	//ULONG usbdRxRdPt,usbdRxWrPt;

  	//If DMA3 is turned on, DMA3 should be turned off.
	if((v_pDMAregs->rDMASKTRIG3&(1<<1))!=0)
	{
		v_pDMAregs->rDMASKTRIG3=(1<<2);	//DMA3 stop
		while(v_pDMAregs->rDMASKTRIG3&(1<<1)); //wait until DMA3 stop
		usbdShMem->usbdRxRdPt=0;
		USBDMSG( 1, (TEXT("[DMA3 is stopped]\r\n")));
	}

	v_pDMAregs->rDISRCC3 = (1<<1)|(1<<0);		   //src=APB, srcAddr=fixed
	v_pDMAregs->rDISRC3 = REAL_PHYSICAL_ADDR_EP4_FIFO; //srcAddr=EP4_FIFO 
	v_pDMAregs->rDIDSTC3 = (0<<1)|(0<<0);		   //dst=AHB(memory),increase,

#if (DRIVER_GLOBALS_PHYSICAL_MEMORY_START<0xA0000000 || DMA_BUFFER_BASE<0xA0000000) 
	GENERATE_ERROR
		   	//The above two address should be non-cacheable area.
#endif  	

	realPhysicalAddr_UsbdRxBuf = \
		(ULONG)&((DRIVER_GLOBALS *)DRIVER_GLOBALS_PHYSICAL_MEMORY_START)->usbd.usbdRxBuf \
		- DMA_BUFFER_BASE + DMA_PHYSICAL_BASE;	
	//USBDMSG( 1, (TEXT( "[USBD:RPA_URxBuf=%x]"),realPhysicalAddr_UsbdRxBuf) );
	//Real physical address of usbdShMem->usbdRxBuf

	if(bufIndex==0)
	{
	   	v_pDMAregs->rDIDST3=realPhysicalAddr_UsbdRxBuf+0+bufOffset;
	}
	else
	{
		v_pDMAregs->rDIDST3=realPhysicalAddr_UsbdRxBuf+(USBD_GLOBALS_BUF_SIZE/2)+bufOffset;
	}

   	v_pDMAregs->rDCON3=(USBD_GLOBALS_BUF_SIZE-bufOffset)|(1<<31)|(0<<30)|(1<<29)|(0<<28)|(0<<27)|(4<<24)|(1<<23)|(1<<22)|(0<<20); 
	//handshake,requestor=APB,CURR_TC int enable,unit transfer,
	//single service,src=USBD,H/W request,no_autoreload,byte,CURR_TC

	v_pDMAregs->rDMASKTRIG3=(1<<1);	//DMA 3 on
	   

	USBDMSG( 1, (TEXT( "[USBD:rDIDST3=%x,rDCDST3=%x]\r\n"),v_pDMAregs->rDIDST3,v_pDMAregs->rDCDST3) );

}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡免费在线视频| 亚洲精品一区在线观看| 一区二区三区在线观看网站| 97久久超碰精品国产| 亚洲图片激情小说| 欧洲精品一区二区| 视频一区二区欧美| 精品久久久久久久一区二区蜜臀| 久久91精品久久久久久秒播 | 色哟哟精品一区| 一区av在线播放| 在线播放中文字幕一区| 九九久久精品视频| 国产精品的网站| 欧美性猛交xxxx乱大交退制版| 日韩精品一级中文字幕精品视频免费观看 | 国产欧美一区二区精品性色超碰| 成人中文字幕合集| 一区二区三区免费| 欧美美女喷水视频| 国产精品亚洲一区二区三区妖精 | 久久综合国产精品| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 亚洲综合免费观看高清在线观看| 欧美乱妇一区二区三区不卡视频 | 春色校园综合激情亚洲| 亚洲精品视频在线| 欧美大片日本大片免费观看| 成人性生交大合| 亚洲成人免费看| 欧美极品少妇xxxxⅹ高跟鞋| 欧美日韩中字一区| 国产精品66部| 午夜电影一区二区| 亚洲欧美综合另类在线卡通| 欧美电影免费观看高清完整版在线观看 | 亚洲婷婷在线视频| 精品少妇一区二区三区在线播放 | 秋霞电影网一区二区| 亚洲国产精品成人综合色在线婷婷 | 蜜桃免费网站一区二区三区| 亚洲欧洲国产日韩| 日韩写真欧美这视频| 色狠狠色狠狠综合| 成人爱爱电影网址| 久久疯狂做爰流白浆xx| 亚洲一级二级在线| 国产精品夫妻自拍| 久久久久久综合| 91精品一区二区三区久久久久久| 成人午夜精品一区二区三区| 精品一区二区日韩| 秋霞电影网一区二区| 亚洲国产一区二区三区青草影视| 中文字幕一区二区三区四区不卡| 26uuuu精品一区二区| 欧美疯狂性受xxxxx喷水图片| 972aa.com艺术欧美| 粉嫩一区二区三区在线看| 久草精品在线观看| 日本不卡的三区四区五区| 亚洲国产wwwccc36天堂| 亚洲综合在线视频| 亚洲欧美日本韩国| 自拍偷拍亚洲欧美日韩| 中文字幕一区二区三区四区| 国产精品日产欧美久久久久| 国产欧美日韩三级| 国产欧美综合在线观看第十页| 精品黑人一区二区三区久久 | 在线中文字幕不卡| 91久久精品午夜一区二区| 91在线视频18| 91在线观看下载| 成人av电影在线观看| 国产黄色精品视频| 国产成人免费视频网站高清观看视频| 国内精品国产三级国产a久久| 精品亚洲国内自在自线福利| 美女国产一区二区| 久久精品理论片| 国内精品嫩模私拍在线| 国产尤物一区二区| 国产精品一二二区| 成人免费av资源| 99热在这里有精品免费| 99精品视频在线免费观看| 色综合久久综合中文综合网| 欧美艳星brazzers| 制服丝袜在线91| 精品国产一区二区三区久久久蜜月| 精品国产一二三区| 国产精品久久久久影院老司| 一区二区三区在线免费| 日韩不卡在线观看日韩不卡视频| 日韩福利电影在线观看| 免费成人在线观看视频| 韩国成人福利片在线播放| 成人国产精品免费观看动漫| www.成人网.com| 欧美性猛片aaaaaaa做受| 日韩欧美一区中文| 国产欧美日韩中文久久| 亚洲综合成人在线视频| 蜜桃精品视频在线| 不卡在线观看av| 欧美日韩精品欧美日韩精品一综合| 日韩三级在线免费观看| 国产精品亲子伦对白| 亚洲成人av中文| 久久成人综合网| 色综合久久久久综合| 制服丝袜日韩国产| 国产亚洲欧美色| 亚洲同性gay激情无套| 日本系列欧美系列| 99视频一区二区三区| 日韩视频不卡中文| 国产精品久线观看视频| 免费欧美在线视频| 日本精品视频一区二区三区| 亚洲精品在线观看网站| 亚洲午夜视频在线| 丁香啪啪综合成人亚洲小说 | 激情成人综合网| 色婷婷综合久久久中文一区二区| 欧美一区二区在线视频| 国产精品第一页第二页第三页| 美洲天堂一区二卡三卡四卡视频| 成人av在线观| 日韩精品一区二| 亚洲国产日韩一级| jlzzjlzz亚洲日本少妇| 精品乱人伦小说| 亚洲永久免费视频| av日韩在线网站| 欧美大片顶级少妇| 日本在线观看不卡视频| 一本色道久久加勒比精品| 久久综合久久鬼色中文字| 亚洲国产视频在线| 色8久久人人97超碰香蕉987| 国产欧美va欧美不卡在线| 免费一级片91| 欧美日韩大陆一区二区| 一区二区免费视频| av网站免费线看精品| 日本一区二区不卡视频| 麻豆成人av在线| 欧美精品久久一区二区三区| 亚洲免费伊人电影| k8久久久一区二区三区| 亚洲国产高清在线观看视频| 国产精品亚洲一区二区三区在线 | 久久精品国产亚洲高清剧情介绍 | 欧美日韩电影在线| 一区二区高清视频在线观看| 99免费精品在线| 中文字幕 久热精品 视频在线| 国产酒店精品激情| 久久久久久亚洲综合影院红桃 | 欧美人与性动xxxx| 亚洲电影一级黄| 欧美性猛片aaaaaaa做受| 亚洲综合丁香婷婷六月香| 色老综合老女人久久久| 亚洲精品乱码久久久久久久久| av在线播放一区二区三区| 国产精品二三区| 99精品久久久久久| 亚洲精品高清在线| 欧美亚洲综合在线| 天堂久久久久va久久久久| 91精品欧美一区二区三区综合在 | 午夜伦欧美伦电影理论片| 欧美日韩在线直播| 日韩不卡在线观看日韩不卡视频| 欧美一区二区三区婷婷月色| 日本视频一区二区三区| 欧美精品一区二区三区蜜臀| 国产剧情一区二区三区| 国产精品久久久久久久久免费丝袜| 国产成人av一区二区三区在线观看| 中文av字幕一区| 色一情一乱一乱一91av| 亚洲成a人片综合在线| 欧美一区二区三区四区视频| 国产一区二区三区久久悠悠色av| 日本一二三四高清不卡| 91精彩视频在线| 免费久久精品视频| 亚洲国产成人私人影院tom| 色综合网色综合| 天堂久久一区二区三区| 久久久亚洲高清| 在线一区二区三区| 看片的网站亚洲| 亚洲免费色视频| 欧美电影精品一区二区| av不卡在线播放|