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

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

?? iis.c

?? MBA2440(s3c2440)的 源代碼文件 ARM920T內核。
?? C
字號:
/***********************************************************
 *
 * File Name: Iis.c
 * Description: S3C2440A IIS controller Function Test
 * Version: 0.2 

 * History:
 * 		0.0: 2002. 03. 06, Programming Start by SOP.
 * 		0.1: 2004. 02. 04, Modified by Y. H. Lee.
 * 		- IIS Master Tx: Play Sample Wave File.
 * 		- IIS Master Rx: Record Sound using MIC and Play it.
 * 		- IIS maser clock selection (PCLK or MPLLin) is supported.
 * 		0.2: 2004. 04. 26, Modified by Y. H. Lee.
 * 		- Recording Sound via Line-In is available in the MBA24402440 base board (Rev 0.19).
************************************************************/

#include "2440addr.h"
#include "2440lib.h"
#include "def.h"
#include "iis.h"

#define REC_LEN_IIS 	0xfffff*2
#define PLAY_IIS		0
#define RECORD_MICIn	1
#define RECORD_LineIn	2 
 
#define L3C (1<<4)		  //GPB4 = L3CLOCK
#define L3D (1<<3)		  //GPB3 = L3DATA
#define L3M (1<<2)		  //GPB2 = L3MODE

#define DOWNLOAD_ADDR				0x31000000

#define WAV_FMT_wChannels			*(unsigned short *)(DOWNLOAD_ADDR + 4 + 0x16)
#define WAV_FMT_dwSamplePerSec		*(unsigned int   *)(DOWNLOAD_ADDR + 4 + 0x18)
#define WAV_FMT_wBitsPerSample		*(unsigned int   *)(DOWNLOAD_ADDR + 4 + 0x22)
#define WAV_FMT_chunk_Size			*(unsigned int   *)(DOWNLOAD_ADDR + 4 + 0x28)



char mute = 1;
//char which_Buf = 1;
char Rec_Done = 0;

unsigned char *Buf,*_temp;
unsigned char *rec_buf = (unsigned char *)DOWNLOAD_ADDR;


unsigned short wchannel, wbps;
unsigned int size, fs; 
unsigned int save_B, save_E, save_PB, save_PE;

extern U32 Hclk, Pclk;
float IIS_Codec_CLK;


void IIS_Port_Init(void);
void IIS_Port_Return(void);
void Download_Wave_File(void);
void IIS_RecSound_DMA1( int mode, U32 rec_size);
void IIS_PlayWave_DMA2(unsigned char *start_addr, U32 play_size);

void _WrL3Addr(U8 data);
void _WrL3Data(U8 data,int halt);

void __irq RxInt(void);
void __irq Muting(void);
void __irq DMA2_Done(void);
void __irq DMA1_Rec_Done(void);


void * func_iis_test[][2]=
{	
	//IIS Function Test Item
	(void *)Play_Wave_IIS,				"Play Wave File. ",
   	(void *)RecordSound_ViaMICIn_IIS,	"Record Sound via MIC-In and Play it. ",
   	(void *)RecordSound_ViaLineIn_IIS, 	"Record Sound via Line-In and Play it. ",
   	0,0
};

void IIS_Test(void)
{
	int i, sel;
		
	while(1)
	{
		i=0;
		Uart_Printf("+------------------[ IIS test ]-------------------+\n");
		while(1)
		{   //display menu
			Uart_Printf("| %2d:%s\n",i+1,func_iis_test[i][1]);
			i++;
			if((int)(func_iis_test[i][0])==0)	break;
		}
		Uart_Printf("| %2d:Previous menu\n", i+1);
		Uart_Printf("+-------------------------------------------------+\n");
		Uart_Printf(" Select the number to test : ");
		sel = Uart_GetIntNum();
		sel--;
		Uart_Printf("+-------------------------------------------------+\n\n\n");
		if(sel == i){
			return;
		}if(sel>=0 && (sel<((sizeof(func_iis_test)-1)/8)) ){
			( (void (*)(void)) (func_iis_test[sel][0]) )();
		}else{
			Uart_Printf("Wrong number seleted.. Try again!!\n\n\n");
		}
	}
	
}

//Play Wave File
void Play_Wave_IIS(void)
{
	Uart_Printf("\nPlay Wave File.\n");

	IIS_Port_Init();
	Download_Wave_File();

	Init1341(PLAY_IIS);
	IIS_PlayWave_DMA2(Buf+0x30, size);

	IIS_Port_Return();
    
	mute = 1;
}

//Record Sound via MIC-In
void RecordSound_ViaMICIn_IIS(void)
{
	Uart_Printf("\nRecord Sound via MIC-In.\n");

	IIS_Port_Init(); 
	
	Init1341(RECORD_MICIn);
	IIS_RecSound_DMA1(RECORD_MICIn, REC_LEN_IIS);
	Init1341(PLAY_IIS);
	IIS_PlayWave_DMA2(rec_buf, REC_LEN_IIS);

	IIS_Port_Return();
	
	mute = 1;
	Uart_Printf("\n\n");
}

//Record Sound via Line-In 
void RecordSound_ViaLineIn_IIS(void)
{
	Uart_Printf("\nRecord Sound via Line-In.\n");

	IIS_Port_Init(); 
	
	Init1341(RECORD_LineIn);
	IIS_RecSound_DMA1(RECORD_LineIn, REC_LEN_IIS);
	Init1341(PLAY_IIS);
	IIS_PlayWave_DMA2(rec_buf, REC_LEN_IIS);

	IIS_Port_Return();
	
	mute = 1;
}


/* Sub-Routines */ 

//Setting Port related to IIS  
void IIS_Port_Init(void)
{
	Uart_Select(0);
	Uart_TxEmpty(0);
	Delay(0);	//calibrate Delay()

	save_B  = rGPBCON;	 
	save_E  = rGPECON;	 
	save_PB = rGPBUP;
	save_PE = rGPEUP;
    	
	//----------------------------------------------------------
	//   PORT B GROUP
	//Ports  :   GPB4    GPB3   GPB2  
	//Signal :  L3CLOCK L3DATA L3MODE
	//Setting:   OUTPUT OUTPUT OUTPUT 
	//	        [9:8]   [7:6}  [5:4]
	//Binary :     01  ,   01    01 
	//----------------------------------------------------------    
	rGPBUP  = rGPBUP  & ~(0x7<<2) | (0x7<<2);   //The pull up function is disabled GPB[4:2] 1 1100    
	rGPBCON = rGPBCON & ~(0x3f<<4) | (0x15<<4); //GPB[4:2]=Output(L3CLOCK):Output(L3DATA):Output(L3MODE)

	//----------------------------------------------------------
	//   PORT E GROUP
	//Ports  :  GPE4    GPE3   GPE2  GPE1    GPE0 
	//Signal : I2SSDO  I2SSDI CDCLK I2SSCLK I2SLRCK 
	//Binary :   10  ,   10     10 ,  10	10    
	//----------------------------------------------------------
	rGPEUP  = rGPEUP  & ~(0x1f)  | 0x1f;    //The pull up function is disabled GPE[4:0] 1 1111
	rGPECON = rGPECON & ~(0x3ff) | 0x2aa;   //GPE[4:0]=I2SSDO:I2SSDI:CDCLK:I2SSCLK:I2SLRCK

	rGPFUP   = ((rGPFUP   & ~(1<<0)) | (1<<0));     //GPF0
	rGPFCON  = ((rGPFCON  & ~(3<<0)) | (1<<1));     //GPF0=EINT0    
	rEXTINT0 = ((rEXTINT0 & ~(7<<0)) | (2<<0));     //EINT0=falling edge triggered  
}

void IIS_Port_Return(void)
{
	rGPBCON = save_B;
	rGPECON = save_E;
	rGPBUP  = save_PB;
	rGPEUP  = save_PE;
}

void Download_Wave_File(void)
{
	unsigned int temp, i;

	pISR_UART0 = (unsigned)RxInt;
	rINTMSK    = ~(BIT_UART0);
	rINTSUBMSK = ~(BIT_SUB_RXD0);

	Buf   = (unsigned char *)DOWNLOAD_ADDR;
	_temp = Buf;

	Uart_Printf("\nDownload the PCM(no ADPCM) file by DNW serial port(With header)!!\n");
	Uart_Printf("Download Start Address: 0x%x\n", Buf);
	Uart_Printf("in DNW, select 'Serial Port->Transmit', and choose the file you wanna send\n");
	
	while(((unsigned int)_temp - (unsigned int)Buf) == 0)
	{
		Led_Display(1);
		i = 1;
		while(i != 3){
			Delay(1500);
			Led_Display(1<<i);
			i++;
		}
		while(i != 0){
			Delay(1500);
			Led_Display(1<<i);
			i--;
		}
		Delay(1500);
	}
    
    //size value defined by DNW Serial tranmit
	size = *(Buf) | *(Buf + 1)<<8 | *(Buf + 2)<<16 | *(Buf + 3)<<24;
	Uart_Printf("\nNow, Downloading... [ File Size : %7d  	    0bytes]", size);
      
	while(((unsigned int)_temp - (unsigned int)Buf) < size) 
		Uart_Printf("\b\b\b\b\b\b\b\b%7d ",(unsigned int)_temp - (unsigned int)Buf);
	
	Uart_Printf("\b\b\b\b\b\b\b\b%7d ]\n",(unsigned int)_temp - (unsigned int)Buf);

	rINTSUBMSK |= BIT_SUB_RXD0;

	wchannel = WAV_FMT_wChannels;
	if(wchannel == 1)		Uart_Printf("This wave file is MONO\n");
	else if(wchannel == 2)	Uart_Printf("This wave file is STEREO\n");
	
	fs   = WAV_FMT_dwSamplePerSec;
	Uart_Printf("Sample rate per sec = %d Hz\n", fs);

	wbps = WAV_FMT_wBitsPerSample;
	Uart_Printf("bit resolution of sample = %d bits\n", wbps);

	size = WAV_FMT_chunk_Size;
	Uart_Printf("Sample PCM Data Size = %d\n", size);
}

void IIS_RecSound_DMA1(int mode, U32 rec_size)
{
	pISR_DMA1  = (unsigned)DMA1_Rec_Done;

	rIISCON = (1<<4) + (1<<3) + (1<<1);	   
	rIISMOD = (0<<9)+(0<<8) + (1<<6) + (0<<5) + (0<<4) + (1<<3) + (0<<2) + (1<<0);
	rIISFCON = (1<<14) + (1<<12);	  
    	
	Uart_Printf("\nIISLRCK = %d Hz", (int) IIS_Codec_CLK/384);

 	rINTMSK = ~(BIT_DMA1);

	//--- DMA1 Initialize
	rDISRCC1 = (1<<1) + (1<<0);   
	rDISRC1  = ((U32)IISFIFO);    
	rDIDSTC1 = (0<<1) + (0<<0);     
	rDIDST1  = (int)rec_buf;                            
	rDCON1   = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(2<<24)+(1<<23)+(1<<22)+(1<<20)+(rec_size/2);
	rDMASKTRIG1 = (0<<2) + (1<<1) + 0;    //No-stop, DMA1 channel on, No-sw trigger

	if(mode ==1)
	Uart_Printf("\n\nAre you ready to record sound via MIC-In on MBA24402440?");
	if(mode ==2)
	Uart_Printf("\n\nAre you ready to record sound via Line-In on MBA24402440?");
	
	Uart_Printf("\nPress any key to start record!\n");
	Uart_Getch();
	Uart_Printf("Recording...\n");
   
   	//IIS Rx start
	rIISCON |= 0x1;
   
	while(!Rec_Done)
	{
		Uart_Printf(".");
		Delay(2000);
	}
   
	Rec_Done = 0;

	//IIS Rx stop
	Delay(10);				//For end of H/W Rx
	rIISCON     = 0x0;			//IIS stop
	rDMASKTRIG1 = (1<<2);	//DMA1 stop
	rIISFCON    = 0x0;			//For FIFO flush
	
	rINTMSK  |= (BIT_DMA1);
	Uart_Printf("\nEnd of Record!\n");	
}


void IIS_PlayWave_DMA2(unsigned char *start_addr, U32 play_size)
{
	pISR_DMA2  = (unsigned)DMA2_Done;
	pISR_EINT0 = (unsigned)Muting;

	Uart_Printf("\nIIS Master CLK(PCLK) = %4.2f MHz", Pclk/MEGA);

	if(fs==44100)
    {
        rIISPSR = (3<<5) + 3;
		IIS_Codec_CLK = (float)Pclk/4;
		Uart_Printf("\nIIS Codec CLK = %4.2f MHz", IIS_Codec_CLK/MEGA);
    }
    else if(fs==22050)
    {
        rIISPSR = (11<<5) + 11;
		IIS_Codec_CLK = (float)Pclk/12;
		Uart_Printf("\nIIS Codec CLK = %4.2f MHz", IIS_Codec_CLK/MEGA);
    }
    
   	//TX DMA service enable, Rx channel idle, IIS prescaler enable
	rIISCON = (1<<5)+(1<<2)+(1<<1);
	rIISMOD = (0<<9)+(0<<8)+(2<<6)+(0<<5)+(0<<4)+(0<<2)+(1<<0);
	if(wbps == 8)			rIISMOD |= (0<<3);
	else if(wbps == 16)		rIISMOD |= (1<<3);
	rIISFCON = (1<<15)+(1<<13);

	Uart_Printf("\nIISLRCK = %d Hz", (int) IIS_Codec_CLK/256);

	rINTMSK    = ~(BIT_EINT0 | BIT_DMA2);
	
	//DMA2 Register Setting 
	rDISRC2  = (int)(start_addr);
	rDISRCC2 = (0<<1) + (0<<0);
	rDIDST2  = ((U32)IISFIFO);
	rDIDSTC2 = (0<<2) + (1<<1) + (1<<0);
	rDCON2   = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(0<<24)+(1<<23)+(0<<22)+(1<<20)+(play_size/2);
	rDMASKTRIG2 = (0<<2) + (1<<1) + (0<<0);	    //No-stop, DMA2 channel On, and No-sw trigger 
    
	Uart_Printf("\nIf you want to mute or no mute, Push the 'EIN0' button repeatedly.\n");
	Uart_Printf("Press any key to exit!\n");
	Uart_Printf("\nPlay...\n");
  
	//IIS Tx Start
	rIISCON |= 0x1;		 //IIS Interface start
		
	while(!Uart_GetKey());
    	
	//IIS Tx Stop
	Delay(10);			 //For end of H/W Tx
	rIISCON	&= ~(1<<0);	    //IIS Interface stop

	rDMASKTRIG2  = (1<<2);	 //DMA2 stop
	rIISFCON = 0x0;	    //For FIFO flush
		
	rINTMSK |= (BIT_EINT0 | BIT_DMA2);
	 	
	Uart_Printf("\nEnd of Play!\n");
}

//Initialization of UDA1341 Audio Codec using L3 Interface 
void Init1341(int mode)
{
 	//Port Initialize
	//----------------------------------------------------------
	//   PORT B GROUP
	//Ports  :   GPB4    GPB3   GPB2  
	//Signal :  L3CLOCK L3DATA   L3MODE
	//Setting:  OUTPUT   OUTPUT  OUTPUT 
	//	          [9:8]       [7:6]      [5:4]
	//Binary :    01,          01,        01 
	//----------------------------------------------------------    
	rGPBDAT = rGPBDAT & ~(L3M|L3C|L3D) |(L3M|L3C); //Start condition : L3M=H, L3C=H
	rGPBUP  = rGPBUP  & ~(0x7<<2) |(0x7<<2);	 //The pull up function is disabled GPB[4:2] 1 1100    
	rGPBCON = rGPBCON & ~(0x3f<<4) |(0x15<<4);     //GPB[4:2]=Output(L3CLOCK):Output(L3DATA):Output(L3MODE)

	//L3 Interface
	_WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
 	_WrL3Data(0x60,0);	 //0,1,01, 000,0 : Status 0,Reset, 384fs,IIS-bus,no DC-filtering
	
	_WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
    _WrL3Data(0x20,0);       //0,0,10,000,0 : No reset,256fs,no DCfilter,iis
    
  	_WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
	_WrL3Data(0x81,0);	 //bit[7:0] => 1,0,0,0, 0,0,01 

	//Record Sound via MIC In
	if(mode == RECORD_MICIn)
	{
		_WrL3Addr(0x14 + 2);    //STATUS (000101xx+10)
		_WrL3Data(0xa2,0);	//bit[7:0] => 1,0,1,0,0,0,10
		
		_WrL3Addr(0x14 + 0);    //DATA0 (000101xx+00)
		_WrL3Data(0xc2, 0);	//1100 0,010  : Extended addr(3bits), 010 
		_WrL3Data(0xf2, 0);	//111,100,10 : DATA0, MIC Amplifier Gain 21dB, input channel 2 select (input channel 1 off)
	}
    	
	//Record Sound via Line In
	if(mode == RECORD_LineIn)
	{
		_WrL3Addr(0x14 + 2);    //STATUS (000101xx+10)
		_WrL3Data(0xa2,0);	//bit[7:0] => 1,0,1,0, 0,0,10 
		
		_WrL3Addr(0x14 + 0);    //DATA0 (000101xx+00)
		_WrL3Data(0xc2, 0);	//1100 0,010  : Extended addr(3bits), 010 
		_WrL3Data(0xf1, 0);	//111,100,01 : DATA0, MIC Amplifier Gain 21dB, input channel 1 select (input channel 2 off)
	}	    	
}


void _WrL3Addr(U8 data)
{	 
 	S32 i,j;

	rGPBDAT  = rGPBDAT & ~(L3D | L3M | L3C) | L3C;	//L3D=L, L3M=L(in address mode), L3C=H

	for(j=0;j<4;j++);	 //tsu(L3) > 190ns

	//GPB[4:2]=L3C:L3D:L3M
	for(i=0;i<8;i++)	//LSB first
	{
	  	if(data & 0x1)	//If data's LSB is 'H'
	  	{
			rGPBDAT &= ~L3C;	 //L3C=L
			rGPBDAT |= L3D;		 //L3D=H		 
			for(j=0;j<4;j++);	        //tcy(L3) > 500ns
			rGPBDAT |= L3C;		 //L3C=H
			rGPBDAT |= L3D;		 //L3D=H
			for(j=0;j<4;j++);	        //tcy(L3) > 500ns
	  	}
	  	else		//If data's LSB is 'L'
	  	{
			rGPBDAT &= ~L3C;	//L3C=L
			rGPBDAT &= ~L3D;	//L3D=L
			for(j=0;j<4;j++);	       //tcy(L3) > 500ns
			rGPBDAT |= L3C;	       //L3C=H
			rGPBDAT &= ~L3D;	//L3D=L
			for(j=0;j<4;j++);	       //tcy(L3) > 500ns		
	  	}
	  	data >>= 1;
	}

	rGPBDAT  = rGPBDAT & ~(L3D | L3M | L3C) | (L3C | L3M);	 //L3M=H,L3C=H   
}


void _WrL3Data(U8 data,int halt)
{
 	S32 i,j;

	if(halt)
	{
	  	rGPBDAT  = rGPBDAT & ~(L3D | L3M | L3C) | L3C;   //L3C=H(while tstp, L3 interface halt condition)	  
	  	for(j=0;j<4;j++);		//tstp(L3) > 190ns
    }

	rGPBDAT  = rGPBDAT & ~(L3D | L3M | L3C) | (L3C | L3M);   //L3M=H(in data transfer mode)	  
	for(j=0;j<4;j++);		//tsu(L3)D > 190ns

	//GPB[4:2]=L3C:L3D:L3M
	for(i=0;i<8;i++)
	{
	  	if(data & 0x1)	//if data's LSB is 'H'
	  	{
	     		rGPBDAT &= ~L3C;		//L3C=L
	     		rGPBDAT |= L3D;			//L3D=H

	     		for(j=0;j<4;j++);			//tcy(L3) > 500ns
	     		rGPBDAT |= (L3C | L3D);	//L3C=H,L3D=H
	     		for(j=0;j<4;j++);		 	//tcy(L3) > 500ns
	  	}
	  	else		//If data's LSB is 'L'
	  	{
	     		rGPBDAT &= ~L3C;	//L3C=L
	     		rGPBDAT &= ~L3D;	//L3D=L
	     		for(j=0;j<4;j++);		//tcy(L3) > 500ns
	     		rGPBDAT |= L3C;		//L3C=H
	     		rGPBDAT &= ~L3D;	//L3D=L
	     		for(j=0;j<4;j++);		//tcy(L3) > 500ns
	  	}
		data >>= 1;		//For check next bit
	}

	rGPBDAT  = rGPBDAT & ~(L3D | L3M | L3C) | (L3C | L3M);    //L3M=H,L3C=H
}


/* ISRs */
void __irq DMA1_Rec_Done(void)
{
    ClearPending(BIT_DMA1);     //Clear pending bit
    Rec_Done = 1;
} 

void __irq DMA2_Done(void)
{
	rIISCON	&= ~(1<<0);
	rIISCON |= 0x1;
	
    ClearPending(BIT_DMA2); //Clear pending bit
	Uart_Printf("\n~~~");
	//Uart_Printf("\nrIISMOD=0x%x\n",rIISMOD);
}

void __irq RxInt(void)
{
	rSUBSRCPND = BIT_SUB_RXD0;	    //Clear pending bit (Requested)
	rSUBSRCPND;
	ClearPending(BIT_UART0);

	*_temp++ = RdURXH0(); 
}

void __irq Muting(void)
{
    ClearPending(BIT_EINT0);		//Clear pending bit

    if(mute)    //Mute
    {
	  _WrL3Addr(0x14 + 0);		//DATA0 (000101xx+00)
	  _WrL3Data(0xa4,0);		  //10,1,00,1,00 : after, no de-emp, mute, flat 
	  mute = 0;
	  Uart_Printf("\nMute on...\n");
    }
    else	  //No mute
    {
	  _WrL3Addr(0x14 + 0);		//DATA0 (000101xx+00)
	  _WrL3Data(0xa0,0);		  //10,1,00,0,00 : after, no de-emp, no mute, flat 
	  mute = 1;
	  Uart_Printf("\nMute off...\n");
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产精品第一页| 亚洲1区2区3区视频| 91片黄在线观看| 久久se这里有精品| 亚洲精品乱码久久久久久久久| 欧美视频一区在线观看| av福利精品导航| 久久不见久久见免费视频1| 亚洲资源在线观看| 国产精品你懂的| 久久精品视频网| 欧美一级欧美一级在线播放| 色综合天天做天天爱| 国产麻豆欧美日韩一区| 日本视频一区二区三区| 一区二区三区在线影院| 中文字幕中文字幕在线一区| 精品久久人人做人人爽| 欧美年轻男男videosbes| 一本在线高清不卡dvd| 成人av在线影院| 粉嫩久久99精品久久久久久夜| 蜜桃免费网站一区二区三区| 亚洲国产日产av| 一片黄亚洲嫩模| 亚洲欧洲日韩av| 中文字幕巨乱亚洲| 国产日产欧美一区二区三区| 久久夜色精品国产噜噜av | 欧美日韩午夜精品| 99久久精品免费观看| 国产成人精品一区二区三区四区| 毛片av一区二区| 紧缚捆绑精品一区二区| 九九精品一区二区| 久久精品久久久精品美女| 麻豆成人免费电影| 久久精品国产一区二区三| 青草av.久久免费一区| 精品一区二区三区免费观看| 九九九精品视频| 国产精品资源网站| 国产成人亚洲综合a∨婷婷 | 欧美亚日韩国产aⅴ精品中极品| 成人综合激情网| 大尺度一区二区| 精品国产制服丝袜高跟| 成人18精品视频| 成人听书哪个软件好| 成人av中文字幕| 91蝌蚪porny| 欧美日韩国产在线观看| 欧美精品视频www在线观看| 欧美一区午夜精品| 久久久精品一品道一区| 国产欧美精品日韩区二区麻豆天美| 国产日韩欧美精品在线| 国产精品传媒在线| 亚洲一级二级在线| 日韩不卡一区二区| 国产在线一区二区综合免费视频| 国产精品1区二区.| 色偷偷成人一区二区三区91| 欧美日韩午夜在线| 精品粉嫩超白一线天av| 18欧美亚洲精品| 亚洲午夜日本在线观看| 秋霞午夜鲁丝一区二区老狼| 狠狠色丁香婷综合久久| 99riav久久精品riav| 69堂国产成人免费视频| 久久蜜桃香蕉精品一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲精品成人精品456| 男人的天堂亚洲一区| 国产成人日日夜夜| 欧美网站一区二区| 久久久国产综合精品女国产盗摄| 国产精品第一页第二页第三页| 香蕉影视欧美成人| 国产不卡一区视频| 欧美三级视频在线观看| 国产欧美视频一区二区三区| 亚洲综合无码一区二区| 国产一区二区三区综合| 91福利在线观看| 久久精品亚洲麻豆av一区二区 | 91 com成人网| 国产精品久久久久精k8| 男女视频一区二区| 91免费看`日韩一区二区| 欧美videos中文字幕| 亚洲综合成人在线| 成人毛片在线观看| 欧美成人猛片aaaaaaa| 亚洲一区二区三区四区在线观看| 久久99精品国产.久久久久久 | 日本一区二区三区国色天香 | 国产精品白丝jk黑袜喷水| 欧美在线综合视频| 国产清纯白嫩初高生在线观看91| 日韩国产欧美在线观看| 91在线观看免费视频| 久久久久国产精品麻豆ai换脸| 亚洲成av人综合在线观看| 成人av资源在线观看| 精品国产乱码久久久久久老虎| 亚洲精品国产a| 成人午夜激情影院| 久久婷婷综合激情| 日本伊人午夜精品| 欧美体内she精高潮| 亚洲国产精品ⅴa在线观看| 国内久久精品视频| 日韩欧美在线网站| 日韩电影在线一区二区| 欧美日韩免费一区二区三区| 亚洲日穴在线视频| 9色porny自拍视频一区二区| 久久网这里都是精品| 激情亚洲综合在线| 欧美草草影院在线视频| 日日夜夜免费精品视频| 欧美色综合网站| 一区二区三区不卡在线观看| www.99精品| 国产精品美女久久久久高潮| 国产精品亚洲综合一区在线观看| 欧美成人免费网站| 国精产品一区一区三区mba视频 | 日本强好片久久久久久aaa| 欧美性色综合网| 亚洲自拍另类综合| 欧美视频日韩视频在线观看| 亚洲综合免费观看高清在线观看| 色综合久久中文字幕综合网| 亚洲欧美另类在线| 色狠狠一区二区三区香蕉| 亚洲免费看黄网站| 欧美在线视频不卡| 五月天网站亚洲| 日韩一级免费一区| 激情综合色播激情啊| 亚洲国产高清在线观看视频| 粉嫩嫩av羞羞动漫久久久| 亚洲欧洲国产专区| 在线亚洲人成电影网站色www| 亚洲最新视频在线观看| 欧美亚洲综合在线| 蜜桃av一区二区| 久久人人爽爽爽人久久久| 国产河南妇女毛片精品久久久| 日本一区二区久久| 91国偷自产一区二区三区观看| 亚洲二区在线视频| 日韩免费高清电影| 成人国产精品免费观看| 亚洲一区二区偷拍精品| 日韩一区二区免费电影| 国产一区二区三区久久久| 国产精品美日韩| 3d成人h动漫网站入口| 韩国在线一区二区| 亚洲免费av在线| 日韩电影免费在线观看网站| 欧美在线观看视频一区二区| 日本午夜精品视频在线观看| 2021中文字幕一区亚洲| av毛片久久久久**hd| 日韩精品免费专区| 欧美国产综合一区二区| 欧美午夜宅男影院| 国产精品综合在线视频| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲一区视频在线| 欧美va日韩va| 99精品久久免费看蜜臀剧情介绍| 午夜久久电影网| 久久久久久电影| 欧美性色欧美a在线播放| 国产一区二区三区综合| 一二三四区精品视频| 精品国产免费人成在线观看| 色综合久久中文综合久久牛| 久久99精品一区二区三区三区| 亚洲免费大片在线观看| 国产亚洲欧美一区在线观看| 在线精品观看国产| 丰满白嫩尤物一区二区| 日本成人在线网站| 一区二区三区色| 国产日韩欧美精品一区| 日韩一级免费观看| 欧美自拍丝袜亚洲| 成人深夜在线观看| 久久99精品久久久久久久久久久久| 一区二区三区91| 亚洲欧洲一区二区在线播放| 欧美成人aa大片| 91精品国产综合久久国产大片|