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

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

?? uart0.c

?? MBA2440(s3c2440)的 源代碼文件 ARM920T內核。
?? C
?? 第 1 頁 / 共 2 頁
字號:
//====================================================================
// File Name : uart0.c
// Function  : S3C2440 UART-0 test code
// Program   : Shin, On Pil (SOP)
// Date      : May 30, 2002
// Version   : 0.0
// History
// -2410
//   0.0 : Programming start (February 20,2002) -> SOP
//   1.0 (20020530) : First release for customer
//   1.1 (20020801) : Strata NOR Flash Added and etc. -> SOP
// -2440
//   R0.0 (20030421): Modified for 2440. -> Junon
//	 R0.1 (20050531): Modified for MBA2440
//====================================================================

#include <string.h>
#include <stdlib.h>
#include "def.h"
#include "2440addr.h"
#include "2440lib.h"
#include "uart0.h"

void Uart_Port_Set(void);
void Uart_Port_Return(void);

void __irq Uart0_TxInt(void);
void __irq Uart0_RxIntOrErr(void);
void __irq Uart0_TxDmaDone(void);
void __irq Uart0_RxDmaDone(void);
void __irq Uart0_RxDmaOrErr(void);
void __irq Uart0_TxFifo(void);
void __irq Uart0_RxFifoOrErr(void);
void __irq Uart0_AfcTx(void);
void __irq Uart0_AfcRxOrErr(void);
void __irq Uart0_RxOverrunErr(void);

void __sub_Uart0_RxInt(void);
void __sub_Uart0_RxFifo(void);
void __sub_Uart0_RxAfc(void);
void __sub_Uart0_RxErrInt(void);

void Uart_Fclkn_Dis(void); // for 2440A


volatile U16 rx_dncs;
volatile U32 rx_point,rx_isdone,rx_filesize,rx_checksum;
volatile U32 isDone,isTxInt,isRxInt,tx_cnt,tx_end,rx_cnt,rx_end,afc_err;
volatile U8 *txdataPt;
volatile U8 *txdataFl;
volatile U8 *rxdataPt;
volatile U8 *rxdataCk;
volatile U32 *dbg_data;
U8 temp_exit;


volatile U32 save_rGPHCON,save_rGPHDAT,save_rGPHUP;
volatile U32 save_ULCON0,save_UCON0,save_UFCON0,save_UMCON0,save_UBRDIV0;
volatile U32 save_ULCON1,save_UCON1,save_UFCON1,save_UMCON1,save_UBRDIV1;
volatile U32 save_ULCON2,save_UCON2,save_UFCON2,save_UMCON2,save_UBRDIV2;

volatile static char *uart0TxStr;
volatile static char *uart0RxStr;

volatile static char *uart2TxStr;
volatile static char *uart2RxStr;

extern U32 Fclk, Pclk;


void Uart_Port_Set(void)
{
    //Push UART GPIO port configuration
    save_rGPHCON=rGPHCON; 
    save_rGPHDAT=rGPHDAT;
    save_rGPHUP=rGPHUP;
    //Configure UART port
    rGPHCON&=0x3c0000;
    rGPHCON|=0x2aaaa;	// enable all uart channel
    rGPHUP|=0x1ff;		//Uart port pull-up disable
	rGPGCON|=(0xf<<18); // nRTS1, nCTS1
	rGPGUP|=(0x3<<9);	
    //rINTSUBMSK=0x7ff;   //SUBINT ALL MASK
    //Push Uart control registers 
    save_ULCON0=rULCON0;   		
    save_UCON0=rUCON0;	   	
    save_UFCON0=rUFCON0;   		
    save_UMCON0=rUMCON0;   		
    save_ULCON1=rULCON1;		
    save_UCON1 =rUCON1;		
    save_UFCON1=rUFCON1;		
    save_UMCON1=rUMCON1;	
    save_ULCON2=rULCON2;		
    save_UCON2 =rUCON2;		
    save_UFCON2=rUFCON2;		
    save_UMCON2=rUMCON2;		
	save_UBRDIV0=rUBRDIV0;
	save_UBRDIV1=rUBRDIV1;
	save_UBRDIV2=rUBRDIV2;
    //Initialize UART1,2 port
}       
        
void Uart_Port_Return(void)
{       
    //Pop UART GPIO port configuration
    rGPHCON=save_rGPHCON;
    rGPHDAT=save_rGPHDAT;
    rGPHUP=save_rGPHUP;
    //Pop Uart control registers 
    rULCON0=save_ULCON0;   		
    rUCON0 =save_UCON0;   	
    rUFCON0=save_UFCON0;   		
    rUMCON0=save_UMCON0;   		
    rULCON1=save_ULCON1;		
    rUCON1 =save_UCON1;	
    rUFCON1=save_UFCON1;		
    rUMCON1=save_UMCON1;
    rULCON2=save_ULCON2;		
    rUCON2 =save_UCON2;	
    rUFCON2=save_UFCON2;		
    rUMCON2=save_UMCON2;
	rUBRDIV0=save_UBRDIV0;
	rUBRDIV1=save_UBRDIV1;
	rUBRDIV2=save_UBRDIV2;
	Uart_Fclkn_Dis();
}

// 2440A usage enable
void Uart_Uextclk_En(int ch,int baud, int clock)
{
    if(ch == 0) {
	   	rUCON0  = rUCON0 & ~(1<<11) |(1<<10);	// Select UEXTCLK
     	rUBRDIV0=( (int)(clock/16./baud) -1 );	//Baud rate divisior register
    }
    else if(ch==1){
	   	rUCON1  = rUCON1 & ~(1<<11) |(1<<10);	// Select UEXTCLK
    	rUBRDIV1=( (int)(clock/16./baud) -1 );	//Baud rate divisior register
    }
    else {
	   	rUCON2  = rUCON2 & ~(1<<11) |(1<<10);	// Select UEXTCLK
       rUBRDIV2=( (int)(clock/16./baud) -1 );	//Baud rate divisior register
    }
}

//2440A usage enable
void Uart_Pclk_En(int ch, int baud)
{
    if(ch == 0) {
    	rUCON0 &= ~(3<<10);	// Select PCLK
		rUBRDIV0=( (int)(Pclk/16./baud+0.5) -1 );	//Baud rate divisior register
   }
    else if(ch==1){
    	rUCON1 &= ~(3<<10);	// Select PCLK
		rUBRDIV1=( (int)(Pclk/16./baud+0.5) -1 );	//Baud rate divisior register
   }
    else {
    	rUCON2 &= ~(3<<10);	// Select PCLK
	   	rUBRDIV2=( (int)(Pclk/16./baud+0.5) -1 );	//Baud rate divisior register
   }
}

void Uart_Fclkn_En(int ch, int baud) // for 2440A
{	
	int clock = PCLK;//Pclk;

	Uart_Printf("Current FCLK is %d\n", Fclk);
#if 1
	// input clock divider setting.
	if ( (Fclk>290000000) && (Fclk<300000000) ) // for 296MHz
	{
		rUCON0 = (rUCON0 & ~(0xf<<12)) | (0xe<<12);  // FCLK divider 14(n=20), for max 921.6kbps
		rUCON1 &= ~(0xf<<12); // 0 setting
		rUCON2 &= ~(0xf<<12); // 0 setting
		clock = Fclk / 20;
		Uart_Printf("1 : %d\n", clock);
	}
	else if ( (Fclk>395000000) && (Fclk<405000000) ) // for 399MHz
	{
		rUCON1 = (rUCON1 & ~(0xf<<12)) | (0x6<<12);  // FCLK divider 6(n=27), for max 921.6kbps
		rUCON0 &= ~(0xf<<12); // 0 setting
		rUCON2 &= ~(0xf<<12); // 0 setting
		clock = Fclk / 27;
		Uart_Printf("2 : %d\n", clock);
	}
	else if ( (Fclk>525000000) && (Fclk<535000000) ) // for 530MHz
	{
		rUCON1 |= (0xf<<12);  // FCLK divider 15(n=36), for max. 921.6kbps
		rUCON0 &= ~(0xf<<12); // 0 setting
		rUCON2 &= ~(0xf<<12); // 0 setting
		clock = Fclk / 36;
		Uart_Printf("3 : %d\n", clock);
	}
	rUCON2 |= (1<<15); // enable FCLK/n
#else
	// In 921.6kbps case of following code, Fclk must be 296352000
	rUCON0 = rUCON0 & ~(0xf<<12) | (0xe<<12);  // FCLK divider 14(n=20), for max 921.6kbps
	rUCON1 &= ~(0xf<<12); // 0 setting
	rUCON2 &= ~(0xf<<12); // 0 setting
	clock = Fclk / 20;
	rUCON2 |= (1<<15); // enable FCLK/n
#endif 

	// select buadrate.
    if(ch == 0) {
    	rUCON0 |= (3<<10);	// Select FCLK/n
		rUBRDIV0=( (int)(clock/16./baud+0.5) -1 );	//Baud rate divisior register
   }
    else if(ch==1){
    	rUCON1 |= (3<<10);	// Select FCLK/n
		rUBRDIV1=( (int)(clock/16./baud+0.5) -1 );	//Baud rate divisior register
   }
    else {
    	rUCON2 |= (3<<10);	// Select FCLK/n
	   	rUBRDIV2=( (int)(clock/16./baud+0.5) -1 );	//Baud rate divisior register
   }

	// S/W work-around for using FCLK/n
	rGPHCON = rGPHCON & ~(3<<16); //GPH8(UEXTCLK) input 
	Delay(1);
	rGPHCON = rGPHCON & ~(3<<16) | (1<<17); //GPH8(UEXTCLK) UEXTCLK
}

void Uart_Fclkn_Dis(void) // for 2440A
{
	// S/W work-around for using FCLK/n
	rGPHCON = rGPHCON & ~(3<<16); //GPH8(UEXTCLK) input 
	Delay(1);
	rGPHCON = rGPHCON & ~(3<<16) | (1<<17); //GPH8(UEXTCLK) UEXTCLK
}

//---------------------------------------UART0 test function-------------------------------------
void __irq Uart0_TxInt(void)
{
    rINTSUBMSK|=(BIT_SUB_RXD0|BIT_SUB_TXD0|BIT_SUB_ERR0);	// Just for the safety
    if(*uart0TxStr != '\0') 
    {
        WrUTXH0(*uart0TxStr++);
	    ClearPending(BIT_UART0);		// Clear master pending
	    rSUBSRCPND=(BIT_SUB_TXD0);		// Clear Sub int pending
	    rINTSUBMSK&=~(BIT_SUB_TXD0);	// Unmask sub int
    }
    else
    {
    	isTxInt=0;
    	ClearPending(BIT_UART0);		// Clear master pending
        rSUBSRCPND=(BIT_SUB_TXD0);		// Clear Sub int pending
        rINTMSK|=(BIT_UART0);
    }
}

void __irq Uart0_RxIntOrErr(void)
{
    rINTSUBMSK|=(BIT_SUB_RXD0|BIT_SUB_TXD0|BIT_SUB_ERR0);
    if(rSUBSRCPND&BIT_SUB_RXD0) __sub_Uart0_RxInt();
    else __sub_Uart0_RxErrInt();
    ClearPending(BIT_UART0); 
    rSUBSRCPND=(BIT_SUB_RXD0|BIT_SUB_ERR0);	// Clear Sub int pending    
    rINTSUBMSK&=~(BIT_SUB_RXD0|BIT_SUB_ERR0);    
}

void __sub_Uart0_RxInt(void)
{
    if(RdURXH0()!='\r') 
    {
    	Uart_Printf("%c",RdURXH0());
    	*uart0RxStr++ =(char)RdURXH0();
    }
    else
    {
    	isRxInt=0;
    	*uart0RxStr='\0';
    	Uart_Printf("\n");
    }
}

void __sub_Uart0_RxErrInt(void)
{
	U32 iStatus;

	iStatus = rUERSTAT0;
	
    switch(iStatus)//to clear and check the status of register bits
    {
	case 1:
	    Uart_Printf("Overrun error!\n");
	    break;
	case 2:
	    Uart_Printf("Parity error!\n");
	    break;
	case 4:
	    Uart_Printf("Frame error!\n");
	    break;
	case 6:
	    Uart_Printf("Parity, Frame error!\n");
	    break;
	case 8:
		Uart_Printf("Breake detect\n");
		break;
	case 0xa:
		Uart_Printf("Parity error & Break detect!\n");
		break;
	case 0xc:
		Uart_Printf("Frame error & Breake detect\n");
		break;
	case 0xe:
		Uart_Printf("Parity, Frame error & Break detect!\n");
		break;
	default :
		Uart_Printf("Unknown error : 0x%x\n", iStatus);
	    break;
    }
	
   	isRxInt=0;
}


void Test_Uart0_Int(void)
{
	U8 ch;
	int iBaud;
	
    Uart_Port_Set(); //UART port configuration
    Uart_Select(0);	//UART channel seclet
    Uart_Printf("\nConnect PC[COM1 or COM2] and UART0 of MBA2440 with a serial cable!!! \n");
    Uart_Printf("Then, press any key........\n\n");
    Uart_Getch();

	/******** For operating clock test *********/
	Uart_Printf("[Uart channel 0 Interrupt test]\n");
	Uart_Printf("Select operating clock 1. PCLK(D)  2. UCLK  3. FCLK\nChoose : ");
	ch = Uart_Getch();	
	switch (ch)
	{
	case '2' :
		rMISCCR = rMISCCR & ~(7<<8) | (1<<10); // CLKOUT1 = PCLK
		Uart_Uextclk_En(0, 115200, Pclk);
		break;
	case '3' :
		Uart_Printf("Type the baudrate and then change the same baudrate of host, too.\n");
			 Uart_Printf("Baudrate (ex 9600, 115200[D], 921600) : ");
		iBaud = Uart_GetIntNum();
		if (iBaud == -1) iBaud = 115200;
		Uart_Fclkn_En(0, iBaud);
		Uart_Getch();
		break;
	default :
		Uart_Pclk_En(0, 115200);
	}

#if 0       
	/******** Select UART or IrDA *********/
	Uart_Printf("Select 1. UART(D) or  2. IrDA mode\nChoose : ");
	if (Uart_Getch() == '2')
		rULCON0 |= (1<<6); // IrDA mode
	else
		rULCON0 &= ~(1<<6); // UART mode
#endif

	/*********** UART0 Tx test with interrupt ***********/  
    isTxInt=1;
    uart0TxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890->UART0 Tx interrupt test is good!!!!\r\n";
    Uart_Printf("\n\n[Uart channel 0 Tx Interrupt Test]\n");

    pISR_UART0=(unsigned)Uart0_TxInt;

    rULCON0=(0<<6)|(0<<3)|(0<<2)|(3);	// Normal,No parity,One stop bit, 8bit
    rUCON0 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
    //Clock,Tx:Def,Rx:Def,Rx timeout:x,Rx error int:x,Loop-back:x,Send break:x,Tx:int,Rx:int
    Uart_TxEmpty(1); //wait until tx buffer is empty.
    rINTMSK=~(BIT_UART0);
    rINTSUBMSK=~(BIT_SUB_TXD0);

    while(isTxInt);
    
    /*********** UART0 Rx test with interrupt ***********/
    isRxInt=1;
    uart0RxStr=(char *)UARTBUFFER;
    Uart_Printf("\n[Uart channel 0 Rx Interrupt Test]\n");
    Uart_Printf("After typing characters and ENTER key\nyou will see the characters which was typed by you.");
    Uart_Printf("\n(To quit, press ENTER key.!!!)\n\n");
	
    Uart_TxEmpty(1); //wait until tx buffer is empty.
    pISR_UART0 =(unsigned)Uart0_RxIntOrErr;
    rULCON0=(0<<6)|(0<<3)|(0<<2)|(3);	// Normal,No parity,One stop bit, 8bit
    rUCON0 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(1<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
    //Clock,Tx:pulse,Rx:pulse,Rx timeout:x,Rx error int:o,Loop-back:x,Send break:x,Tx:int,Rx:int

    // Clear Int Pending and Unmask    
    ClearPending(BIT_UART0);
    rINTMSK=~(BIT_UART0);
    rSUBSRCPND=(BIT_SUB_TXD0|BIT_SUB_RXD0|BIT_SUB_ERR0);    
    rINTSUBMSK=~(BIT_SUB_RXD0|BIT_SUB_ERR0);
    
    while(isRxInt);
    
    rINTSUBMSK|=(BIT_SUB_RXD0|BIT_SUB_ERR0);
    rINTMSK|=(BIT_UART0);

	Uart_Printf("\nReceived data: ");
    Uart_Printf("%s\n\n\n",(char *)UARTBUFFER);

    Uart_Port_Return();
}


void __irq Uart0_TxDmaDone(void)
{
    rDMASKTRIG0=0x0;	// Stop Dma0
    isDone=0;
    rINTMSK |= BIT_DMA0;
    ClearPending(BIT_DMA0);
}

void __irq Uart0_RxDmaOrErr(void)
{
    rINTSUBMSK|=(BIT_SUB_RXD0|BIT_SUB_TXD0|BIT_SUB_ERR0);
    if(rSUBSRCPND&BIT_SUB_ERR0)  __sub_Uart0_RxErrInt();
    
    ClearPending(BIT_UART0);
    rSUBSRCPND=(BIT_SUB_ERR0);	// Clear Sub int pending    
    rINTSUBMSK&=~(BIT_SUB_ERR0);    
}

void __irq Uart0_RxDmaDone(void)
{
    rDMASKTRIG0=0x0;	//DMA0 Channel Off
    isDone=0;
    *(uart0RxStr+5)='\0';
    rINTMSK|=(BIT_DMA0);
    ClearPending(BIT_DMA0);
}

void Test_Uart0_Dma(void)
{
    Uart_Port_Set(); 
    Uart_Select(0);    
    /*********** UART0 Tx test with DMA0 ***********/ 
    isDone=1;
    uart0TxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890->UART0 Tx Test by DMA0 is good!!!!\r\n";
    Uart_Printf("\n[Uart channel 0 DMA0 Tx Test]\n");
    Uart_TxEmpty(0);

    Uart_Printf("Connect PC[COM1 or COM2] and UART0 of MBA2440 with a serial cable!!! \n");
    Uart_Printf("Then, press any key........\n");
   	
    Uart_Select(0);
    Uart_Getch();

   
    pISR_DMA0  =(unsigned)Uart0_TxDmaDone;

    rULCON0=(0<<6)|(0<<3)|(0<<2)|(3);	// Normal,No parity,One stop bit, 8bit
    rUCON0 = (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(2<<2)|(0);
    //Clock,Tx:Def,Rx:Def,Rx timeout:x,Rx error int:x,Loop-back:x,Send break:x,Tx:dma0,Rx:x

    /***DMA0 init***/
    rDISRC0=(U32)uart0TxStr;	// Start address
    rDISRCC0=(0<<1)|(0);		// AHB,Increment
    rDIDST0=(U32)UTXH0;			// Memory buffer Address
    rDIDSTC0=(1<<1)|(1);		// APB,Fixed
    rDCON0=(1<<31)|(0<<30)|(1<<29)|(0<<28)|(0<<27)|(1<<24)|(1<<23)|(1<<22)|(0<<20)|strlen((char*)uart0TxStr);
    //handshake, sync PCLK, TC int, single tx, single service, Uart0, H/W request,auto-reload off, Byte size Tx, Tx count value
    rINTMSK=~(BIT_DMA0);
    rDMASKTRIG0=(0<<2)|(1<<1)|(0);    //no-stop, DMA0 channel on, no-SW trigger 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一二三区精品视频| 亚洲自拍偷拍麻豆| www.爱久久.com| 成人午夜在线视频| 亚洲欧美国产高清| 欧美mv和日韩mv国产网站| 国产69精品久久777的优势| 亚洲午夜激情av| 欧美videossexotv100| 99国产欧美久久久精品| 免费精品99久久国产综合精品| 国产拍欧美日韩视频二区| 国产精品99久久久久久久vr | 日韩欧美黄色影院| 成人av网站在线观看免费| 午夜视频一区二区| 精品少妇一区二区三区在线视频| 99综合影院在线| 亚洲国产va精品久久久不卡综合| 欧美电影在哪看比较好| 亚洲私人黄色宅男| 欧美丰满高潮xxxx喷水动漫| 精品午夜一区二区三区在线观看| 亚洲精品成人天堂一二三| 日韩欧美高清一区| 色域天天综合网| 国产一区二区三区国产| 成人午夜视频福利| 国产精品网站在线| 日韩欧美黄色影院| 欧美日韩一区二区三区在线 | 一本大道av一区二区在线播放| 亚洲国产精品久久不卡毛片| 国产精品欧美精品| 精品国产乱码久久久久久图片| 日本高清免费不卡视频| 丁香啪啪综合成人亚洲小说 | 欧美综合一区二区三区| 成人av在线资源| 国产另类ts人妖一区二区| 欧美aaaaaa午夜精品| 亚洲人吸女人奶水| 国产精品欧美经典| 全部av―极品视觉盛宴亚洲| 亚欧色一区w666天堂| 中文字幕人成不卡一区| 国产欧美日韩视频在线观看| 精品国产伦一区二区三区观看体验| 欧美日韩在线一区二区| 在线影视一区二区三区| 成人午夜精品在线| 国产成人精品一区二区三区网站观看| 国精产品一区一区三区mba视频| 日韩精品亚洲专区| 午夜精品久久久久久| 午夜成人免费电影| 亚洲资源中文字幕| 一区二区激情小说| 亚洲一区二区四区蜜桃| 亚洲精品菠萝久久久久久久| 亚洲女爱视频在线| 亚洲欧美日韩国产手机在线| 亚洲欧美日韩国产综合在线| 国产欧美日本一区二区三区| wwww国产精品欧美| 欧美一区二区三区在线| 欧美亚洲国产一区在线观看网站| 国产精品中文有码| 岛国精品在线播放| 国产视频一区在线观看| 亚洲欧洲99久久| 国产色91在线| 久久久精品国产免大香伊| 国产午夜精品在线观看| 国产一区二区三区国产| 国产成人亚洲综合色影视| 激情综合五月婷婷| 国产成人在线免费| 色综合天天在线| 欧美男男青年gay1069videost| 91色porny| 7777精品伊人久久久大香线蕉的 | 中文字幕免费在线观看视频一区| 日韩三级伦理片妻子的秘密按摩| 久久久久久亚洲综合| 国产精品色呦呦| 亚洲国产精品久久一线不卡| 免费av成人在线| 国产91露脸合集magnet| 在线欧美日韩国产| 精品久久久久久久久久久久包黑料 | 中文字幕日韩一区| 日韩高清在线观看| 97久久精品人人爽人人爽蜜臀 | 久久男人中文字幕资源站| 亚洲欧美日韩久久精品| 久久99久久99精品免视看婷婷 | 免费成人美女在线观看.| 99国产精品久久久久久久久久久| 欧美大片一区二区三区| 亚洲尤物视频在线| 国产一区二区三区电影在线观看| 欧美色图在线观看| 一区在线观看免费| 精品一区二区三区香蕉蜜桃| 欧洲人成人精品| 亚洲国产精品t66y| 九九九精品视频| 欧美性xxxxxx少妇| 综合色中文字幕| 国产成人亚洲综合a∨猫咪| 日韩一区二区在线看片| 亚洲v中文字幕| 一本久道久久综合中文字幕| 中文字幕欧美区| 国产成人精品免费网站| 精品国产免费一区二区三区香蕉| 婷婷综合另类小说色区| 欧美三级视频在线播放| 亚洲视频精选在线| jlzzjlzz亚洲日本少妇| 4438x亚洲最大成人网| 亚洲欧美色图小说| 国产在线精品视频| 欧美日韩一区二区在线观看| 亚洲欧洲成人精品av97| 天堂va蜜桃一区二区三区漫画版| av成人免费在线观看| 久久女同精品一区二区| 精品一区二区三区不卡| 日韩欧美成人激情| 久久狠狠亚洲综合| 精品久久人人做人人爽| 国产呦萝稀缺另类资源| 久久久99精品免费观看| 国产乱码精品一品二品| 久久午夜电影网| 国产一区二区三区在线观看免费视频 | 欧美日韩激情一区二区三区| 亚洲一线二线三线视频| 欧美日韩精品免费| 日日骚欧美日韩| 日韩精品中文字幕一区二区三区 | 日本91福利区| 精品av综合导航| 国产精品一区二区男女羞羞无遮挡 | 国产盗摄一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 国产不卡在线一区| 亚洲女同一区二区| 欧美日韩免费在线视频| 欧美a级理论片| 国产亚洲精品中文字幕| 99精品桃花视频在线观看| 亚洲在线视频免费观看| 欧美一区二区三区喷汁尤物| 久久国产精品色婷婷| 中文字幕乱码日本亚洲一区二区| 97久久精品人人爽人人爽蜜臀| 一区二区三区在线观看网站| 欧美挠脚心视频网站| 国产在线精品免费av| 18涩涩午夜精品.www| 在线观看免费视频综合| 免费av网站大全久久| 国产精品婷婷午夜在线观看| 在线观看日韩国产| 久久国产精品露脸对白| 国产精品高清亚洲| 欧美日韩在线电影| 韩国视频一区二区| 亚洲女同女同女同女同女同69| 91精品国产福利| 成人黄色在线网站| 日日摸夜夜添夜夜添国产精品| 久久色视频免费观看| 91丝袜美腿高跟国产极品老师| 舔着乳尖日韩一区| 国产欧美日韩麻豆91| 欧美日韩在线播放一区| 精品在线免费视频| 亚洲美女视频一区| 精品人伦一区二区色婷婷| 国产91露脸合集magnet| 婷婷六月综合网| 欧美激情中文不卡| 91精品国产乱| 色菇凉天天综合网| 国产成人aaa| 日本不卡在线视频| 日韩理论片中文av| 久久久91精品国产一区二区精品| 欧美色综合网站| 成人av网址在线观看| 经典三级在线一区| 偷拍一区二区三区| 亚洲日穴在线视频| 国产欧美一区二区三区鸳鸯浴| 在线播放91灌醉迷j高跟美女 | 青椒成人免费视频|