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

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

?? sromc_test.c

?? 三星 s3c6400測試代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**************************************************************************************
* 
*	Project Name : S3C6400 Validation
*
*	Copyright 2006 by Samsung Electronics, Inc.
*	All rights reserved.
*
*	Project Description :
*		This software is only for validating functions of the S3C6400.
*		Anybody can use this software without our permission.
*  
*--------------------------------------------------------------------------------------
* 
*	File Name : SROMC_test.c
*  
*	File Description : This file implements the functons for SROM controller test.
*
*	Author : Sunil Roe
*	Dept. : AP Development Team
*	Created Date : 2007/02/22
*	Version : 0.1 
* 
*	History
*	- Created(sunil.roe 2007/02/22)
*  
**************************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#include "def.h"
#include "option.h"
#include "library.h"
#include "sfr6400.h"
#include "system.h"
#include "sysc.h"
#include "dma.h"
#include "intc.h"
#include "sromc.h"
#include "nand.h"
#include "onenand.h"
#include "cf.h"
#include "ata.h"
#include "timer.h"

#include "am29f800.h"
#include "cs8900.h"

#define SRAM_DATA_SIZE	0x1000
#define NAND_DATA_SIZE	NAND_PAGE_512

EBI_oInform	g_oaEBIInform[MEMIF_NUM];
u8 aBuffer[NAND_PAGE_MAX];
u8 aSpareBuffer[NAND_SPARE_MAX];
u32 aReadData[ONENAND_PAGESIZE/4] = {0, };

u32	g_uLLIBaseAddr = _DRAM_BaseAddress + 0x00100000;

volatile u32 Nand_DmaTestDone;

u32 g_uOneNANDSrcAddr = 0;

void EBI_Test_Assem(void);
void EBI_Test(void);
void SMC_Test(void);
void SMC_TestATABug(void);
void SMC_TestATAResetBug(void);

void AMD_Test(void)
{
	Disp("\n[Check AM29LVxxx]\n");
	switch(AM29F800_CheckId())
	{
		case 1 :
			printf("This device is AM29LV200B!\n");	
			break;
		case 2 :
			printf("This device is AM29LV400B!\n");	
			break;
		case 3 :
			printf("This device is AM29LV800B!\n");	
			break;
		case 4 :
			printf("This device is AM29LV160B!\n");	
			break;
		case 5 :
			printf("This device is AM29LV320B!\n");	
			break;
		default:
			printf("ID Check Error!!!\n");
			return;          		
	}
	
}

/*---------------------------------- ISR Routines ---------------------------------*/
//////////
// Function Name : ISR_EBIDMC0
// Function Description : This function implements the ISR of DMC0's DMA Interrupt.
// Input : 	NONE
// Output : 	NONE
// Version : v0.1
void __irq ISR_EBIDMC0(void)
{
	Disp("ISR_EBIDMC0\n");
	
	INTC_Disable(g_oaEBIInform[eMEM_DMC0].ucIntNum);

	// Interrupt Clear
	DMACH_ClearIntPending(&g_oaEBIInform[eMEM_DMC0].oEBIDma);
	DMACH_ClearErrIntPending(&g_oaEBIInform[eMEM_DMC0].oEBIDma);

        // Channel Set-up
	DMACH_Setup(	g_oaEBIInform[eMEM_DMC0].eDMACh, 0x0, 
					g_oaEBIInform[eMEM_DMC0].uSrcAddr, g_oaEBIInform[eMEM_DMC0].bSrcFixed, 
					g_oaEBIInform[eMEM_DMC0].uDstAddr, g_oaEBIInform[eMEM_DMC0].bDstFixed, 
					g_oaEBIInform[eMEM_DMC0].eDataSz, g_oaEBIInform[eMEM_DMC0].uDataCnt, DEMAND, 
					g_oaEBIInform[eMEM_DMC0].eSrcReq, g_oaEBIInform[eMEM_DMC0].eDstReq, 
					g_oaEBIInform[eMEM_DMC0].eBurstMode, &g_oaEBIInform[eMEM_DMC0].oEBIDma);

	DMACH_Start(&g_oaEBIInform[eMEM_DMC0].oEBIDma);	// DMA Re-Start

	INTC_Enable(g_oaEBIInform[eMEM_DMC0].ucIntNum);

	INTC_ClearVectAddr();

}

//////////
// Function Name : ISR_EBISROMC
// Function Description : This function implements the ISR of DMC0's DMA Interrupt.
// Input : 	NONE
// Output : 	NONE
// Version : v0.1
void __irq ISR_EBISROMC(void)
{
//	Disp("ISR_EBISROMC\n");
	
	INTC_Disable(g_oaEBIInform[eMEM_SROMC].ucIntNum);

	// Interrupt Clear
	DMACH_ClearIntPending(&g_oaEBIInform[eMEM_SROMC].oEBIDma);
	DMACH_ClearErrIntPending(&g_oaEBIInform[eMEM_SROMC].oEBIDma);

	if (CompareDMA(g_oaEBIInform[eMEM_SROMC].uSrcAddr, g_oaEBIInform[eMEM_SROMC].uDstAddr, (DATA_SIZE)WORD, SRAM_DATA_SIZE-1))
	{
//		Disp(" >> Test Tx&Rx -> Ok << \n");
		Disp("!");

	        // Channel Set-up
		DMACH_Setup(	g_oaEBIInform[eMEM_SROMC].eDMACh, 0x0, 
						g_oaEBIInform[eMEM_SROMC].uSrcAddr, g_oaEBIInform[eMEM_SROMC].bSrcFixed, 
						g_oaEBIInform[eMEM_SROMC].uDstAddr, g_oaEBIInform[eMEM_SROMC].bDstFixed, 
						g_oaEBIInform[eMEM_SROMC].eDataSz, g_oaEBIInform[eMEM_SROMC].uDataCnt, DEMAND, 
						g_oaEBIInform[eMEM_SROMC].eSrcReq, g_oaEBIInform[eMEM_SROMC].eDstReq, 
						g_oaEBIInform[eMEM_SROMC].eBurstMode, &g_oaEBIInform[eMEM_SROMC].oEBIDma);

		DMACH_Start(&g_oaEBIInform[eMEM_SROMC].oEBIDma);	// DMA Re-Start

		INTC_Enable(g_oaEBIInform[eMEM_SROMC].ucIntNum);

		INTC_ClearVectAddr();
	}
	else
	{
		Disp(" >>*** Tx-data & Rx-data mismatch ***<< \n");
	}
}

//////////
// Function Name : ISR_EBINAND
// Function Description : This function implements the ISR of NAND's DMA Interrupt.
// Input : 	NONE
// Output : 	NONE
// Version : v0.1
void __irq ISR_EBINAND(void)
{
	Disp("N ");
	
	INTC_Disable(g_oaEBIInform[eMEM_NAND].ucIntNum);

	// Interrupt Clear
	DMACH_ClearIntPending(&g_oaEBIInform[eMEM_NAND].oEBIDma);
	DMACH_ClearErrIntPending(&g_oaEBIInform[eMEM_NAND].oEBIDma);

        // Channel Set-up
	DMACH_Setup(	g_oaEBIInform[eMEM_NAND].eDMACh, 0x0, 
					g_oaEBIInform[eMEM_NAND].uSrcAddr, g_oaEBIInform[eMEM_NAND].bSrcFixed, 
					g_oaEBIInform[eMEM_NAND].uDstAddr, g_oaEBIInform[eMEM_NAND].bDstFixed, 
					g_oaEBIInform[eMEM_NAND].eDataSz, g_oaEBIInform[eMEM_NAND].uDataCnt, DEMAND, 
					g_oaEBIInform[eMEM_NAND].eSrcReq, g_oaEBIInform[eMEM_NAND].eDstReq, 
					g_oaEBIInform[eMEM_NAND].eBurstMode, &g_oaEBIInform[eMEM_NAND].oEBIDma);

	NAND_ReadPageSLCSetup(0, 50, 0);
	DMACH_Start(&g_oaEBIInform[eMEM_NAND].oEBIDma);	// DMA Re-Start
	INTC_Enable(g_oaEBIInform[eMEM_NAND].ucIntNum);

	INTC_ClearVectAddr();

//	DelayfrTimer(milli, 1);

}

//////////
// Function Name : ISR_EBINANDLLI
// Function Description : This function implements the ISR of NAND's DMA Interrupt.
// Input : 	NONE
// Output : 	NONE
// Version : v0.1
void __irq ISR_EBINANDLLI(void)
{
	INTC_Disable(g_oaEBIInform[eMEM_NAND].ucIntNum);
	Disp(".");

//	NAND_WritePageSLCClose(0, aSpareBuffer);

	// Interrupt Clear
	DMACH_ClearIntPending(&g_oaEBIInform[eMEM_NAND].oEBIDma);
	DMACH_ClearErrIntPending(&g_oaEBIInform[eMEM_NAND].oEBIDma);

	Nand_DmaTestDone++;

	INTC_Enable(g_oaEBIInform[eMEM_NAND].ucIntNum);

	INTC_ClearVectAddr();

}

//////////
// Function Name : ISR_EBIOneNAND
// Function Description : This function implements the ISR of OneNAND's DMA Interrupt.
// Input : 	NONE
// Output : 	NONE
// Version : v0.1
void __irq ISR_EBIOneNAND(void)
{
	Disp("ISR_EBIOneNAND\n");
	
	INTC_Disable(g_oaEBIInform[eMEM_OneNAND].ucIntNum);

	// Interrupt Clear
	DMACH_ClearIntPending(&g_oaEBIInform[eMEM_OneNAND].oEBIDma);
	DMACH_ClearErrIntPending(&g_oaEBIInform[eMEM_OneNAND].oEBIDma);

        // Channel Set-up
	DMACH_Setup(	g_oaEBIInform[eMEM_OneNAND].eDMACh, 0x0, 
					g_oaEBIInform[eMEM_OneNAND].uSrcAddr, g_oaEBIInform[eMEM_OneNAND].bSrcFixed, 
					g_oaEBIInform[eMEM_OneNAND].uDstAddr, g_oaEBIInform[eMEM_OneNAND].bDstFixed, 
					g_oaEBIInform[eMEM_OneNAND].eDataSz, g_oaEBIInform[eMEM_OneNAND].uDataCnt, DEMAND, 
					g_oaEBIInform[eMEM_OneNAND].eSrcReq, g_oaEBIInform[eMEM_OneNAND].eDstReq, 
					g_oaEBIInform[eMEM_OneNAND].eBurstMode, &g_oaEBIInform[eMEM_OneNAND].oEBIDma);

	NAND_ReadPageSLCSetup(0, 50, 0);
	DMACH_Start(&g_oaEBIInform[eMEM_OneNAND].oEBIDma);	// DMA Re-Start
	INTC_Enable(g_oaEBIInform[eMEM_OneNAND].ucIntNum);

	INTC_ClearVectAddr();

//	DelayfrTimer(milli, 1);

}

void EBI_SetDMAParams(Mem_eType eMemType)
{
	u32	uLoopCnt = 0;
	u32	uTotTxferBytes = 0;
	s32	iBankSel = 0;
	
	//------- Init DMA params
	switch(eMemType)
	{
		case eMEM_DMC0 :			
			Disp("Selected DMAC 0 ..... \n");
			g_oaEBIInform[eMemType].ucIntNum		= NUM_DMA0;
			g_oaEBIInform[eMemType].eDMACon 		= DMA0;
			g_oaEBIInform[eMemType].eDMACh 		= DMA_A;
			g_oaEBIInform[eMemType].uSrcAddr 		= _DRAM_BaseAddress + 0x01000000;
			g_oaEBIInform[eMemType].uDstAddr 		= _DRAM_BaseAddress + 0x04000000;
			g_oaEBIInform[eMemType].bSrcFixed		= eINCREMENT;
			g_oaEBIInform[eMemType].bDstFixed		= eINCREMENT;
			g_oaEBIInform[eMemType].eDataSz		= WORD;		// Set DMA Data Width
			g_oaEBIInform[eMemType].uDataCnt		= 0x10000;		// Set DMA Transfer Count	
			g_oaEBIInform[eMemType].eSrcReq		= MEM;
			g_oaEBIInform[eMemType].eDstReq		= MEM;
			g_oaEBIInform[eMemType].eBurstMode		= SINGLE;	
			g_oaEBIInform[eMemType].pHandler		= ISR_EBIDMC0;

			uTotTxferBytes	= g_oaEBIInform[eMemType].uDataCnt * g_oaEBIInform[eMemType].eDataSz;

			// 0. Clear the rx buf.
			for (uLoopCnt = 0; uLoopCnt<uTotTxferBytes; uLoopCnt++)
				*(u8 *)(g_oaEBIInform[eMemType].uDstAddr+uLoopCnt) = 0;

			// 1. Set up the tx buf.
			for (uLoopCnt = 0; uLoopCnt<uTotTxferBytes; uLoopCnt++)
				*(u8 *)(g_oaEBIInform[eMemType].uSrcAddr+uLoopCnt) = (u8)(uLoopCnt+2)%0xff;	
			
			break;
		case eMEM_NAND :
			g_oaEBIInform[eMemType].ucIntNum		= NUM_DMA1;
			g_oaEBIInform[eMemType].eDMACon 		= DMA1;
			g_oaEBIInform[eMemType].eDMACh 		= DMA_A;
//			g_oaEBIInform[eMemType].uLLIBaseAddr	= 0x0;
			g_oaEBIInform[eMemType].uLLIBaseAddr	= g_uLLIBaseAddr+0x20;
			g_oaEBIInform[eMemType].uSrcAddr 		= 0x52000000;		
			g_oaEBIInform[eMemType].uDstAddr 		= (u32)(NFCON_BASE + 0x10);	// NFDATA register address
			g_oaEBIInform[eMemType].bSrcFixed		= eINCREMENT;
			g_oaEBIInform[eMemType].bDstFixed		= eFIX;
			g_oaEBIInform[eMemType].eDataSz		= WORD;					// Set DMA Data Width
//			g_oaEBIInform[eMemType].uDataCnt		= NAND_DATA_SIZE;		// Set DMA Transfer Count	
			g_oaEBIInform[eMemType].uDataCnt		= 64;		// Set DMA Transfer Count	
			g_oaEBIInform[eMemType].eSrcReq		= MEM;
			g_oaEBIInform[eMemType].eDstReq		= DMA1_NAND_RX;
			g_oaEBIInform[eMemType].eBurstMode		= SINGLE;	
//			g_oaEBIInform[eMemType].eBurstMode		= BURST128;	
			g_oaEBIInform[eMemType].pHandler		= ISR_EBINANDLLI;			
			break;

		case eMEM_SROMC :			
			Disp("Selected SDMAC 0 ..... \n");
			Disp("0)nCS0	1)nCS1	4)nCS4	5)nCS5\n");
			Disp("\nSelect SROM Bank(\"0\" to exit) : ");
			iBankSel = GetIntNum();
			if( (iBankSel < 0) || (iBankSel == 2) || (iBankSel == 3) || (iBankSel > 5)) 
			    return;		// return.

			SROMC_SetBank((u8)iBankSel, eEn_CTL, eEn_WAIT, e16bit, eNor_Mode, (Bank_eTiming)0, (Bank_eTiming)3, (Bank_eTiming)20, (Bank_eTiming)0, (Bank_eTiming)0, (Bank_eTiming)2);
			
			g_oaEBIInform[eMemType].ucIntNum		= NUM_SDMA0;
			g_oaEBIInform[eMemType].eDMACon 		= SDMA0;
			g_oaEBIInform[eMemType].eDMACh 		= DMA_A;
			g_oaEBIInform[eMemType].uSrcAddr 		= _SMC_BaseAddress + 0x08000000*iBankSel;
			g_oaEBIInform[eMemType].uDstAddr 		= _DRAM_BaseAddress + 0x04000000;
			g_oaEBIInform[eMemType].bSrcFixed		= eINCREMENT;
			g_oaEBIInform[eMemType].bDstFixed		= eINCREMENT;
			g_oaEBIInform[eMemType].eDataSz		= WORD;		// Set DMA Data Width
			g_oaEBIInform[eMemType].uDataCnt		= SRAM_DATA_SIZE;	// Set DMA Transfer Count	
			g_oaEBIInform[eMemType].eSrcReq		= MEM;
			g_oaEBIInform[eMemType].eDstReq		= MEM;
			g_oaEBIInform[eMemType].eBurstMode		= SINGLE;	
			g_oaEBIInform[eMemType].pHandler		= ISR_EBISROMC;

			uTotTxferBytes	= g_oaEBIInform[eMemType].uDataCnt * g_oaEBIInform[eMemType].eDataSz;

			// 0. Clear the rx buf.
			for (uLoopCnt = 0; uLoopCnt<uTotTxferBytes; uLoopCnt++)
				*(u8 *)(g_oaEBIInform[eMemType].uDstAddr+uLoopCnt) = 0;

			// 1. Set up the tx buf.
			for (uLoopCnt = 0; uLoopCnt<uTotTxferBytes; uLoopCnt++)
				*(u8 *)(g_oaEBIInform[eMemType].uSrcAddr+uLoopCnt) = (u8)(uLoopCnt+2)%0xff;	
			
			break;
		case eMEM_OneNAND :
			Disp("Selected SDMAC 1 ..... \n");
			g_oaEBIInform[eMemType].ucIntNum		= NUM_SDMA1;
			g_oaEBIInform[eMemType].eDMACon 		= SDMA1;
			g_oaEBIInform[eMemType].eDMACh 		= DMA_A;
			g_oaEBIInform[eMemType].uSrcAddr 		= g_uOneNANDSrcAddr;		// NFDATA register address
			g_oaEBIInform[eMemType].uDstAddr 		= (u32)aReadData;
			g_oaEBIInform[eMemType].bSrcFixed		= eFIX;
			g_oaEBIInform[eMemType].bDstFixed		= eINCREMENT;
			g_oaEBIInform[eMemType].eDataSz		= WORD;					// Set DMA Data Width
			g_oaEBIInform[eMemType].uDataCnt		= ONENAND_PAGESIZE/4;		// Set DMA Transfer Count	
			g_oaEBIInform[eMemType].eSrcReq		= MEM;
			g_oaEBIInform[eMemType].eDstReq		= MEM;
			g_oaEBIInform[eMemType].eBurstMode		= BURST128;	
			g_oaEBIInform[eMemType].pHandler		= ISR_EBIOneNAND;

			uTotTxferBytes	= g_oaEBIInform[eMemType].uDataCnt * g_oaEBIInform[eMemType].eDataSz;

			// 0. Clear the rx buf.
//			for (uLoopCnt = 0; uLoopCnt<uTotTxferBytes; uLoopCnt++)
//				*(u8 *)(g_oaEBIInform[eMemType].uDstAddr+uLoopCnt) = 0;

			// 1. Set up the tx buf.
			for (uLoopCnt = 0; uLoopCnt<uTotTxferBytes; uLoopCnt++)
				*(u8 *)(g_oaEBIInform[eMemType].uSrcAddr+uLoopCnt) = (u8)(uLoopCnt+2)%0xff;	
			
			break;
	}
	
	DMAC_InitCh(g_oaEBIInform[eMemType].eDMACon, g_oaEBIInform[eMemType].eDMACh, &g_oaEBIInform[eMemType].oEBIDma);
	INTC_SetVectAddr(g_oaEBIInform[eMemType].ucIntNum,  g_oaEBIInform[eMemType].pHandler);
	INTC_Enable(g_oaEBIInform[eMemType].ucIntNum);

        // Channel, LLI_Address, SrcAddr, Src Type, DstAddr, Dst Type, Transfer Width, Transfer Size, OpMode(DEMAND), Src Req, Dst Req, Burst
        // Channel Set-up
	DMACH_Setup(	g_oaEBIInform[eMemType].eDMACh, g_oaEBIInform[eMemType].uLLIBaseAddr, 
					g_oaEBIInform[eMemType].uSrcAddr, g_oaEBIInform[eMemType].bSrcFixed, 
					g_oaEBIInform[eMemType].uDstAddr, g_oaEBIInform[eMemType].bDstFixed, 
					g_oaEBIInform[eMemType].eDataSz, g_oaEBIInform[eMemType].uDataCnt, DEMAND, 
					g_oaEBIInform[eMemType].eSrcReq, g_oaEBIInform[eMemType].eDstReq, 
					g_oaEBIInform[eMemType].eBurstMode, &g_oaEBIInform[eMemType].oEBIDma);
	
}

void EBI_CloseDMA(Mem_eType eMemType)
{
	INTC_Disable(g_oaEBIInform[eMemType].ucIntNum);
    	DMAC_Close(g_oaEBIInform[eMemType].eDMACon, g_oaEBIInform[eMemType].eDMACh, &g_oaEBIInform[eMemType].oEBIDma);	
}

void SRAM_Test(void)
{
	u32 uLoopCnt = 0;
	u32 uTempAddr = 0;

//	SYSC_CtrlEBIPrio(eEBI_FIX4);

	
#if 1
	EBI_SetDMAParams(eMEM_SROMC);

	//-------- SRAM setting --------------
	uTempAddr = g_oaEBIInform[eMEM_SROMC].uDstAddr;
	for(uLoopCnt=0 ; uLoopCnt<SRAM_DATA_SIZE ; uLoopCnt++)
	{
		*(volatile u32*)(uTempAddr) = 0;
		uTempAddr += 4;
	}

	Disp("* Source       Buffer Address : 0x%x\n", g_oaEBIInform[eMEM_SROMC].uSrcAddr);
	Disp("* Destination Buffer Address : 0x%x\n", g_oaEBIInform[eMEM_SROMC].uDstAddr);
	Disp("If you want to exit, Press the 'x' key.\n");
        // Enable DMAs
	DMACH_Start(&g_oaEBIInform[eMEM_SROMC].oEBIDma);	// SROMC DMA Start
#endif
	while(1)
	{
		if(Getc()=='x')
		{
			break;
		}
	}

	EBI_CloseDMA(eMEM_SROMC);
}

#define SMC_NAND_DMA_TEST 1
#define SMC_SRAM_DMA_TEST 1
#define SMC_UDMA_TEST 1

//////////
// Function Name : SMC_TestEBIUsingNAND

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品77777竹菊影视小说| 午夜电影网一区| 日韩欧美你懂的| 欧美亚洲国产一区二区三区 | 久久综合九色欧美综合狠狠| 在线播放国产精品二区一二区四区| 欧美午夜精品久久久久久孕妇| 欧美在线不卡一区| 欧美午夜精品电影| 日韩欧美一级在线播放| 欧美tickling挠脚心丨vk| 日韩一区二区三区视频在线观看| 欧美伦理影视网| 精品奇米国产一区二区三区| 久久久www成人免费无遮挡大片| 久久久精品国产免费观看同学| 精品少妇一区二区三区在线视频| 久久一区二区视频| 国产精品美女久久久久久久久| 中文字幕一区二区三中文字幕| 亚洲摸摸操操av| 日韩电影免费一区| 韩国av一区二区三区四区| 成人av网站在线观看| 91久久精品一区二区三区| 欧美日韩一区 二区 三区 久久精品| 欧美人妖巨大在线| 久久久午夜精品理论片中文字幕| 中文字幕欧美国产| 18欧美乱大交hd1984| 亚洲444eee在线观看| 国产精品一区2区| 色拍拍在线精品视频8848| 日韩免费电影网站| 中文字幕一区视频| 久久99在线观看| 一本一道久久a久久精品 | 99久久99精品久久久久久 | 强制捆绑调教一区二区| 国产99久久久久久免费看农村| 91美女精品福利| 精品剧情v国产在线观看在线| 国产精品成人免费在线| 欧美三级韩国三级日本一级| 国产麻豆精品在线| 欧美午夜片在线观看| 国产丝袜欧美中文另类| 日韩激情视频在线观看| 91亚洲资源网| 久久色中文字幕| 日本网站在线观看一区二区三区 | 成人av免费观看| 日韩精品一区二区三区中文精品| 亚洲精品视频在线看| 国产99久久久久| 精品久久免费看| 日韩av网站免费在线| 欧美在线观看视频一区二区三区| 国产色产综合产在线视频| 亚洲成精国产精品女| 一道本成人在线| 国产精品久久毛片| 国产精品一区二区不卡| 欧美mv和日韩mv国产网站| 三级久久三级久久| 欧美天天综合网| 亚洲精品一二三四区| 国产精品18久久久久久久久久久久 | 亚洲色图丝袜美腿| 国产一区二区精品久久| 精品日韩99亚洲| 国内成人精品2018免费看| 日韩欧美国产一区在线观看| 日韩av电影一区| 在线电影一区二区三区| 亚洲1区2区3区4区| 欧美日韩1区2区| 午夜精品久久久久久久久| 精品对白一区国产伦| 蜜臂av日日欢夜夜爽一区| 欧美一级片在线看| 激情欧美日韩一区二区| 精品国产一区二区三区久久久蜜月| 五月婷婷久久综合| 欧美一级欧美一级在线播放| 日韩高清不卡在线| 2021国产精品久久精品| 国产精品69久久久久水密桃| 国产亚洲精久久久久久| 成人av集中营| 亚洲三级视频在线观看| 欧美性一二三区| 日韩美女久久久| 色视频欧美一区二区三区| 日韩伦理av电影| 欧美日韩国产首页| 捆绑变态av一区二区三区| 精品国产一区二区三区四区四| 玖玖九九国产精品| 亚洲国产高清在线观看视频| 日本道在线观看一区二区| 日本在线不卡一区| 精品国精品国产尤物美女| 国产成人av一区二区三区在线观看| 国产午夜精品美女毛片视频| 91美女视频网站| 亚洲福利视频一区| 欧美精品一区二区三区在线| 国产.欧美.日韩| 日韩福利视频导航| 国产免费观看久久| 欧美日韩国产一级片| 国产成人免费网站| 亚洲国产一区在线观看| 久久婷婷成人综合色| 欧美视频自拍偷拍| 国产成人精品影视| 日产国产高清一区二区三区| 国产片一区二区三区| 欧美精品xxxxbbbb| 成人毛片在线观看| 九九九精品视频| 一区2区3区在线看| 国产精品色噜噜| 欧美日韩国产美| 国产精品18久久久久久久久| 亚瑟在线精品视频| 日韩理论电影院| 亚洲国产精品精华液2区45| 在线成人午夜影院| 欧美怡红院视频| 97se亚洲国产综合自在线| 国产一二三精品| 日本不卡123| 亚洲综合免费观看高清在线观看| 久久久精品2019中文字幕之3| 欧美日本国产视频| 欧美视频精品在线观看| 成人aaaa免费全部观看| 国产精品主播直播| 国产一区二区精品在线观看| 美女视频一区二区| 日日摸夜夜添夜夜添国产精品 | 三级久久三级久久久| 亚洲区小说区图片区qvod| 久久久久久99久久久精品网站| 日韩一区二区三区高清免费看看| 欧洲av一区二区嗯嗯嗯啊| 99久久精品免费观看| av综合在线播放| 91免费看片在线观看| 91免费在线播放| 91丨porny丨中文| 91麻豆高清视频| 91视视频在线观看入口直接观看www | 成人动漫精品一区二区| 精品在线亚洲视频| 久久99久久精品| 加勒比av一区二区| 国产精品资源在线看| 国产suv精品一区二区883| 懂色av一区二区夜夜嗨| 国产a久久麻豆| av网站一区二区三区| 在线亚洲一区观看| 91精品福利视频| 日韩视频在线一区二区| 精品福利二区三区| 中国av一区二区三区| 亚洲欧美aⅴ...| 肉肉av福利一精品导航| 激情深爱一区二区| 99国产精品久| 欧美群妇大交群的观看方式| 欧美大片一区二区| 欧美国产成人在线| 亚洲精品乱码久久久久久黑人| 亚洲高清在线精品| 麻豆91在线播放| aa级大片欧美| 91精品国产综合久久小美女| 欧美精品一区男女天堂| 亚洲免费av高清| 国产在线播放一区二区三区| 不卡视频一二三四| 欧美久久久久久蜜桃| 欧美韩国一区二区| 性做久久久久久| 成人免费视频caoporn| 欧洲一区二区三区在线| 久久伊人中文字幕| 亚洲成人午夜电影| 国产成人8x视频一区二区| 日本韩国欧美一区二区三区| 精品国产伦一区二区三区观看方式 | 久久综合一区二区| 亚洲一区二区偷拍精品| 国内外成人在线| 欧美日韩成人在线| 亚洲精品免费一二三区|