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

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

?? s3c6410_fil.c

?? 6410BSP3
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
///////////////////////////////////////////////////////////////
//
//	MODULE		: FIL
//	NAME		: S3C6410X Flash Interface Layer
//	FILE			: S3C6410_FIL.c
//	PURPOSE		:
//
///////////////////////////////////////////////////////////////
//
//		COPYRIGHT 2003-2006 SAMSUNG ELECTRONICS CO., LTD.
//					ALL RIGHTS RESERVED
//
//	Permission is hereby granted to licensees of Samsung Electronics
//	Co., Ltd. products to use or abstract this computer program for the
//	sole purpose of implementing a product based on Samsung
//	Electronics Co., Ltd. products. No other rights to reproduce, use,
//	or disseminate this computer program, whether in part or in whole,
//	are granted.
//
//	Samsung Electronics Co., Ltd. makes no representation or warranties
//	with respect to the performance of this computer program, and
//	specifically disclaims any responsibility for any damages,
//	special or consequential, connected with the use of this program.
//
///////////////////////////////////////////////////////////////
//
//	REVISION HISTORY
//
//	2006.10.19	dodan2(gabjoo.lim@samsung.com)
//				Draft Version
//	2007.03.25	ksk
//				Support 4KByte/Page NAND Flash Device
//
///////////////////////////////////////////////////////////////

///////////////////////////////////////////////
// Header File
///////////////////////////////////////////////
#include <windows.h>
#include <WMRConfig.h>
#include <WMRTypes.h>
#include <OSLessWMROAM.h>
#include <FIL.h>
#include <string.h>
#include "S3C6410_FIL.h"
#include "S3C6410.h"
//#include "s3c6410_dma.h"
//#include "s3c6410_nand.h"
//#include "s3c6410_syscon.h"
//#include "s3c6410_matrix.h"

//#define USE_SETKMODE
#define USE_2CE_NAND

///////////////////////////////////////////////
// Transfer Mode
///////////////////////////////////////////////
#define ASM					(0)		// Assembly Code
#define DMA					(1)		// DMA Transfer

///////////////////////////////////////////////
// NAND DMA Buffer
///////////////////////////////////////////////
//#define NAND_DMA_BUFFER_UA	(0xA0100000+0x25800)		// LCD Frame Buffer
//#define NAND_DMA_BUFFER_PA	(0x30100000+0x25800)
#ifdef USING_DMA
#define NAND_DMA_BUFFER_UA	(0xB0700000)		// Stepping Stone (Check Oemaddrtab_cgf.inc !!!!)
#define NAND_DMA_BUFFER_PA	(0x40000000)
#endif
///////////////////////////////////////////////
// Debug Print Macro
///////////////////////////////////////////////
#define RETAILMSG(cond, printf_exp)	((cond)?(NKDbgPrintfW printf_exp),1:0)
#define NAND_ERR(x)	RETAILMSG(TRUE, x)
//#define NAND_ERR(x)
//#define NAND_MSG(x)	RETAILMSG(TRUE, x)
#define NAND_MSG(x)
#define NAND_LOG(x)	RETAILMSG(TRUE, x)
//#define NAND_LOG(x)

///////////////////////////////////////////////
// Device type context definitions
///////////////////////////////////////////////
typedef struct
{
	UINT8	nDevID;				// Device ID
	UINT8	nHidID;				// Hidden ID
	UINT32	nNumOfBlocks;		// Number of Blocks
	UINT32	nPagesPerBlock;		// Pages per block
	UINT32	nSectorsPerPage;	// Sectors per page
	BOOL32	b2XProgram;		// 2 plane program
	BOOL32	b2XRead;						/* 2 plane read	 	 */	
	BOOL32	b2XReadStatus;						/* 2 plane read status	 	 */	
	BOOL32	bDualDie;			// internal interleaving
	BOOL32	bMLC;				// MLC
	BOOL32  b8BitECC;	
} DEVInfo;

typedef struct
{
	UINT32	n8MECC0;				// 8MECC0
	UINT32	n8MECC1;				// 8MECC1
	UINT32	n8MECC2;				// 8MECC2
	UINT8	n8MECC3;				// 8MECC3
} MECC8;


typedef struct
{
	UINT8	nBadBlock;				// bad block marker;
	MECC8	t8MECC[8];				// 8MECC0 ~ 8
} SECCInfo;


PRIVATE const DEVInfo stDEVInfo[] = {
		/*****************************************************************************/
		/* Device ID																 */
		/*	   Hidden ID															 */
		/*			 Blocks															 */
		/*				   Pages per block											 */
		/*						Sectors per page									 */
		/*						   2X program										 */
		/*						   			2X read									 */
		/*											 2x status 						 */		
		/*											 		  internal Interleaving	 */		
		/*												               MLC			 */
		/*												               		   8bit ECC */
		/*****************************************************************************/
		/* MLC NAND ID TABLE */
		{0xDC, 0x14, 2048, 128, 4, TRUE32,  FALSE32, FALSE32, FALSE32, TRUE32, FALSE32},	/* 4Gb MLC(K9G4G08) Mono */
		{0xD3, 0x55, 4096, 128, 4, TRUE32,  FALSE32, FALSE32, TRUE32,  TRUE32, FALSE32},	/* 8Gb MLC(K9L8G08) DDP  */
		{0xD3, 0x14, 4096, 128, 4, TRUE32,  FALSE32, FALSE32, FALSE32, TRUE32, FALSE32},	/* 8Gb MLC(K9G8G08) Mono */
		{0xD5, 0x55, 8192, 128, 4, TRUE32,  FALSE32, FALSE32, TRUE32,  TRUE32, FALSE32},	/* 16Gb MLC(K9LAG08) DDP  */
		{0xD5, 0x14, 4096, 128, 8, TRUE32,  TRUE32,  TRUE32,  FALSE32, TRUE32, FALSE32},	/* 16Gb MLC(K9GAG08) Mono */	
		{0xD5, 0x94, 4096, 128, 8, TRUE32,  TRUE32,  TRUE32,  FALSE32, TRUE32, TRUE32},		/* 16Gb MLC(K9GAG08) Mono */ // hsjang 080922				
		{0xD7, 0x55, 8192, 128, 8, TRUE32,  TRUE32,  TRUE32,  TRUE32,  TRUE32, FALSE32},	/* 32Gb MLC(K9LBG08) DDP  */						
		{0xD7, 0xD5, 8192, 128, 8, TRUE32,  TRUE32,  TRUE32,  TRUE32,  TRUE32, TRUE32},	    /* 32Gb MLC(K9LBG08) DDP  */
};

///////////////////////////////////////////////
// PRIVATE variables definitions
///////////////////////////////////////////////
PRIVATE BOOL32 bInternalInterleaving	= FALSE32;
PRIVATE 	BOOL32 aNeedSync[WMR_MAX_DEVICE * 2];
BOOL32 bReadSafeMode = FALSE32;
UINT32 gnPpn;
BOOL32 bECCEngineError = FALSE32;

PRIVATE volatile S3C6410_NAND_REG *pNANDFConReg = NULL;
//volatile S3C6410_NAND_REG *pNANDFConReg = NULL;
PRIVATE volatile S3C6410_SYSCON_REG *pSYSConReg = NULL;
//volatile S3C6410_SYSCON_REG *pSYSConReg = NULL;
//PRIVATE volatile S3C6410_MATRIX_REG *pMatrixConReg = NULL;
PRIVATE volatile S3C6410_WATCHDOG_REG *pWTDogReg = NULL;      // VA for Watchdog base

PRIVATE UINT8 aTempSBuf[NAND_SPAREPAGE_SIZE] =
{
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};

///////////////////////////////////////////////
// Private Function Prototype
///////////////////////////////////////////////
PRIVATE INT32	Read_DeviceID(UINT32 nBank, UINT8 *pDID, UINT8 *pHID);
PRIVATE UINT32	Read_Sector(UINT32 nBank, UINT32 nPpn, UINT32 nSctOffset, UINT8* pBuf, UINT32* pSpareCxt, BOOL32 bCheckAllFF);
PRIVATE UINT32	Read_Sector_8BitECC(UINT32 nBank, UINT32 nPpn, UINT32 nSctOffset, UINT8* pBuf, UINT32* pSpareCxt, BOOL32 bCheckAllFF);
PRIVATE UINT32	Read_Spare(UINT32 nBank, UINT32 nPpn, UINT32* pSpareCxt);
PRIVATE UINT32	Read_Spare_Separate(UINT32 nBank, UINT32 nPpn, UINT32* pSpareCxt);
PRIVATE UINT32	Read_Spare_8BitECC(UINT32 nBank, UINT32 nPpn, UINT32* pSpareCxt);
PRIVATE VOID	Write_Sector(UINT32 nPpn, UINT32 nSctOffset, UINT8* pBuf);
PRIVATE VOID	Write_Sector_8BitECC(UINT32 nPpn, UINT32 nSctOffset, UINT8* pBuf);
PRIVATE VOID	Write_Spare(UINT32 nBank, UINT32 nPpn, pSECCCxt pSpareCxt);
PRIVATE VOID	Write_Spare_Separate(UINT32 nBank, UINT32 nPpn, pSECCCxt pSpareCxt);
PRIVATE VOID	Write_Spare_8BitECC(UINT32 nBank, UINT32 nPpn, pSECCCxt pSpareCxt);
PRIVATE UINT32	Decoding_MainECC(UINT8* pBuf);
PRIVATE UINT32	Decoding_Main8BitECC(UINT8* pBuf);
PRIVATE UINT32	Decoding_SpareECC(UINT8* pBuf);
PRIVATE UINT32	Decoding_Spare8BitECC(UINT8* pBuf, UINT32 nEffectiveByte);
PRIVATE UINT32	_IsAllFF(UINT8* pBuf, UINT32 nSize);
PRIVATE UINT32	_TRDelay(UINT32 nNum);
PRIVATE UINT32	_TRDelay2(UINT32 nNum);


///////////////////////////////////////////////
// ECC Decoding Function Return Value
///////////////////////////////////////////////
#define ECC_CORRECTABLE_ERROR					(0x1)
#define ECC_UNCORRECTABLE_ERROR				(0x2)
#define ECC_NEED_DECODING_AGAIN					(0x4)
//#define PAGE_CORRECTABLE_ERROR_MASK			(0x11111)  // for 2KByte/Page
//#define PAGE_UNCORRECTABLE_ERROR_MASK		(0x22222)  // for 2KByte/Page
#define PAGE_CORRECTABLE_ERROR_MASK			(0x15555)  // for 4KByte/Page
#define PAGE_UNCORRECTABLE_ERROR_MASK		(0x2AAAA)  // for 4KByte/Page
#define ECCVAL_ALLFF0  (0xFFFFFFFF)
#define ECCVAL_ALLFF1  (0xFFFFFFFF)
#define ECCVAL_ALLFF2  (0xFFFFFFFF)
#define ECCVAL_ALLFF3  (0xFFFFFFFF)

extern void _Read_512Byte(UINT8* pBuf);
extern void _Read_512Byte_Unaligned(UINT8* pBuf);
extern void _Write_512Byte(UINT8* pBuf);
extern void _Write_512Byte_Unaligned(UINT8* pBuf);
extern void _Write_Dummy_500Byte_AllFF(void);
extern void _Write_Dummy_492Byte_AllFF(void);
extern void _Write_Dummy_480Byte_AllFF(void);
extern void _Write_Dummy_468Byte_AllFF(void);
extern void _Write_Dummy_448Byte_AllFF(void);
extern void _Write_Dummy_428Byte_AllFF(void);
extern void _Write_Dummy_364Byte_AllFF(void);
extern void _STOP_FOR_BREAK(void);

// WTCON - control register, bit specifications
#define WTCON_PRESCALE(x)        (((x)&0xff)<<8)    // bit 15:8, prescale value, 0 <= (x) <= 27
#define WTCON_ENABLE            (1<<5)            // bit 5, enable watchdog timer
#define WTCON_CLK_DIV16        (0<<3)
#define WTCON_CLK_DIV32        (1<<3)
#define WTCON_CLK_DIV64        (2<<3)
#define WTCON_CLK_DIV128        (3<<3)
#define WTCON_INT_ENABLE        (1<<2)
#define WTCON_RESET            (1<<0)


// WTCNT - watchdog counter register
#define WTCNT_CNT(x)            ((x)&0xffff)
// WTDAT - watchdog reload value register
#define WTDAT_CNT(x)            ((x)&0xffff)
// WTCLRINT - watchdog interrupt clear register
#define WTCLRINT_CLEAR            (1<<0)
// Watchdog Clock
// PCLK : 25MHz
// PCLK/PRESCALER : 25/25 = 1MHz
// PCLK/PRESCALER/DIVIDER : 1MHz/128 = 7.812 KHz
// MAX Counter = 0xffff = 65535
// Period = 65535/7812 =~ 8.4 sec
#define WD_PRESCALER            (25-1)
#define WD_REFRESH_PERIOD        3000    // tell the OS to refresh watchdog every 3 second.


///////////////////////////////////////////////
// Code Implementation
///////////////////////////////////////////////
#pragma optimize ("",off)

BOOL32 NF_WAIT_ECC_DEC_DONE(S3C6410_NAND_REG *pNANDFConReg)
{
    volatile int timeout;
    
	for ( timeout = 0; timeout < 1000; timeout++ )   // It need 155 cycle, but set it to enough value.
	{
	    if ( (pNANDFConReg->NFSTAT&NF_ECC_DEC_DONE) == NF_ECC_DEC_DONE )
	    {
	        return TRUE32;
	    }
	}

    bECCEngineError = TRUE32;

    return FALSE32;
}

#pragma optimize ("",on)


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      NAND_Init		                                                     */
/* DESCRIPTION                                                               */
/*      This function inits NAND device.							 		 */
/* PARAMETERS                                                                */
/*      None													             */
/* RETURN VALUES                                                             */
/*		FIL_SUCCESS															 */
/*					NAND_Init is success.									 */
/*		FIL_CRITICAL_ERROR													 */
/*					NAND_Init is failed.									 */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
INT32
NAND_Init(VOID)
{
	UINT32 nDevIdx;
	UINT32 nScanIdx = 0, nCompIdx = 0;
	UINT8 nDevID, nHiddenID;
	UINT32 nDevCnt = 0;
	BOOL32 bComp = FALSE32;

	NAND_MSG((_T("[FIL]++NAND_MLC_Init()\r\n")));

	pNANDFConReg = (volatile S3C6410_NAND_REG *)0xB0200000;			// 0x4E000000 : 0x70200000
	//pSYSConReg   = (volatile S3C6410_SYSCON_REG *)0x92A00000;                // 0x7E00F000
	pSYSConReg   = (volatile S3C6410_SYSCON_REG *)0xB2A0F000;
	pWTDogReg    = (volatile S3C6410_WATCHDOG_REG *)0xB2A04000;
	
	// Initialize EBICON for 2nd nCE pin (nFCE1)
//#ifdef	USE_2CE_NAND
//	pMatrixConReg->EBICON |= (0x1<<8);	// Bank1_Cfg -> NAND
//#endif

/*---------------------------------------------------------
/ 2007.08.04 D.Baek
/ To fix up the malfunction of PocketMory
/---------------------------------------------------------*/
	// Configure BUS Width and Chip Select for NAND Flash
#if 1
	//pSYSConReg->MEM_SYS_CFG &= ~(1<<12);		// NAND Flash BUS Width -> 8 bit
    //pSYSConReg->MEM_SYS_CFG &= ~(0x1<<1);	// Xm0CS2 -> NFCON CS0
    pSYSConReg->MEM_SYS_CFG = (pSYSConReg->MEM_SYS_CFG & ~(0x1000)); // 8-bit data width
    pSYSConReg->MEM_SYS_CFG = (pSYSConReg->MEM_SYS_CFG & ~(0x3F)) | (0x00); // Xm0CSn[2] = NFCON CS0
/****************************************************************************/
#else
	// NAND Chip Selection Signal in the S3C6410
	pSYSConReg->MEM_SYS_CFG &= ~(0xA);
#endif
	// Initialize NAND Flash Controller for MLC NAND Flash
	pNANDFConReg->NFCONF = NF_4BIT_ECC | NF_TACLS(DEFAULT_TACLS) | NF_TWRPH0(DEFAULT_TWRPH0) | NF_TWRPH1(DEFAULT_TWRPH1);
	pNANDFConReg->NFCONT = NF_MAIN_ECC_LOCK | NF_SPARE_ECC_LOCK | NF_INIT_MECC | NF_INIT_SECC | NF_NFCE1 | NF_NFCE0 | NF_NFCON_EN;
	pNANDFConReg->NFSTAT = NF_RNB_READY;	// Clear RnB Transition Detect Bit
	// Set up initial flash controller configuration.
	//
	//s6410NAND->NFCONF = (NAND_TACLS  <<  12) | (NAND_TWRPH0 <<  8) | (NAND_TWRPH1 <<  4);
	//s6410NAND->NFCONT = (0<<17)|(0<<16)|(0<<10)|(0<<9)|(0<<8)|(1<<7)|(1<<6)|(1<<5)|(1<<4)|(0x3<<1)|(1<<0);
	//s6410NAND->NFSTAT = (1<<4);
		
	/* Device's ID must be available and equal to each other */
	for(nDevIdx = 0; nDevIdx < WMR_MAX_DEVICE; nDevIdx++)
	{
		nScanIdx = Read_DeviceID(nDevIdx, &nDevID, &nHiddenID);

		if (nScanIdx == FIL_CRITICAL_ERROR)
		{
			nScanIdx = nCompIdx;
			break;
		}
		if ((nCompIdx != nScanIdx) && (bComp))
		{
			return FIL_CRITICAL_ERROR;
		}

		nCompIdx = nScanIdx;
		bComp = TRUE32;
		nDevCnt++;
	}
	
	if(stDEVInfo[nScanIdx].bMLC)
	{
		SET_DevType(WMR_MLC);
	}
	else
	{
		SET_DevType(WMR_SLC);
	}

	if(stDEVInfo[nScanIdx].bDualDie && nDevCnt <= 2)
	{
		/* multi chip dual die (DDP) */
		BLOCKS_PER_BANK = stDEVInfo[nScanIdx].nNumOfBlocks >> 1;
		BANKS_TOTAL = nDevCnt * 2;
		bInternalInterleaving = TRUE32;
	}
	else
	{
		BLOCKS_PER_BANK = stDEVInfo[nScanIdx].nNumOfBlocks;
		BANKS_TOTAL = nDevCnt;
		bInternalInterleaving = FALSE32;
	}

	SECTORS_PER_PAGE = stDEVInfo[nScanIdx].nSectorsPerPage;

	TWO_PLANE_PROGRAM = stDEVInfo[nScanIdx].b2XProgram;

	if (TWO_PLANE_PROGRAM == TRUE32)
	{
		BLOCKS_PER_BANK /= 2;
	}

	TWO_PLANE_READ = stDEVInfo[nScanIdx].b2XRead;

	TWO_PLANE_READ_STATUS = stDEVInfo[nScanIdx].b2XReadStatus;

	PAGES_PER_BLOCK = stDEVInfo[nScanIdx].nPagesPerBlock;

	ECC_8BIT_SPPORT = stDEVInfo[nScanIdx].b8BitECC; // hsjang 080923 to support 8Bit ecc

	if (ECC_8BIT_SPPORT == TRUE32)
	{
        NF_SETREG_8BITECC();
    }
    
	// FS_SCAN_RATIO means scan percentage of Total FTL size.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品成人网| 亚洲国产日韩a在线播放 | 色综合久久综合网97色综合| 午夜视频在线观看一区二区 | 国产凹凸在线观看一区二区| 一区二区三区成人| 国产欧美日韩麻豆91| 91麻豆精品国产自产在线 | 欧美成人激情免费网| 色婷婷精品大视频在线蜜桃视频| 麻豆专区一区二区三区四区五区| 一区二区三区在线视频免费观看| 久久日一线二线三线suv| 欧美日韩高清不卡| 色国产综合视频| av网站免费线看精品| 国产激情一区二区三区| 91免费精品国自产拍在线不卡| 青青草精品视频| 一区二区三区欧美视频| 亚洲欧洲精品一区二区精品久久久| 精品盗摄一区二区三区| 制服丝袜av成人在线看| 欧美色手机在线观看| 91丝袜国产在线播放| 成人免费毛片a| 国产91精品欧美| 国产精品正在播放| 国产一区二区视频在线| 久久国产欧美日韩精品| 免费人成在线不卡| 奇米精品一区二区三区在线观看 | 日本亚洲视频在线| 亚洲国产美女搞黄色| 有坂深雪av一区二区精品| 亚洲视频免费看| 亚洲欧美乱综合| 亚洲人成网站在线| 1024成人网| 亚洲欧美成人一区二区三区| 亚洲色图丝袜美腿| 亚洲三级在线看| 一区二区免费看| 亚洲一区二区中文在线| 亚洲高清不卡在线| 视频一区欧美日韩| 蜜臀91精品一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 日本怡春院一区二区| 毛片av中文字幕一区二区| 国模一区二区三区白浆| 国产精品一区在线观看你懂的| 国产盗摄精品一区二区三区在线| 国产成人aaa| 91蜜桃免费观看视频| 在线看日本不卡| 欧美一区二区三区视频免费播放| 日韩综合一区二区| 日韩高清不卡一区二区| 激情五月激情综合网| 国产不卡在线视频| 色婷婷国产精品| 91精品国产免费| 日本一区二区免费在线 | 国产精品午夜电影| 亚洲欧美日韩一区| 视频一区视频二区中文| 国产一区二区精品久久99| av在线不卡电影| 欧美日韩www| 久久综合狠狠综合久久综合88| 国产精品久久午夜夜伦鲁鲁| 亚洲成av人片在线观看无码| 麻豆专区一区二区三区四区五区| 大美女一区二区三区| 欧美视频一区二区在线观看| 亚洲精品在线观| 亚洲色欲色欲www| 首页欧美精品中文字幕| 国产成人精品免费视频网站| 色8久久精品久久久久久蜜| 欧美成人精品1314www| 亚洲色图欧美激情| 精一区二区三区| 色呦呦日韩精品| 精品久久免费看| 亚洲综合成人在线视频| 国产一区三区三区| 欧美三级韩国三级日本三斤| 欧美高清在线精品一区| 丝袜美腿一区二区三区| 成+人+亚洲+综合天堂| 日韩欧美中文字幕一区| 亚洲免费成人av| 国产一区二区久久| 欧美剧在线免费观看网站| 国产精品网友自拍| 久久国产精品一区二区| 在线免费精品视频| 国产精品久久免费看| 黄色日韩网站视频| 欧美日韩另类一区| 亚洲欧美区自拍先锋| 国产成人午夜电影网| 日韩一区二区三区高清免费看看| 综合久久国产九一剧情麻豆| 国产露脸91国语对白| 91精品国产综合久久福利软件| 亚洲欧美另类久久久精品2019| 国产精品伊人色| 日韩欧美123| 爽好多水快深点欧美视频| 在线一区二区三区做爰视频网站| 久久久久久久免费视频了| 青青草国产成人av片免费| 欧美三级电影在线观看| 亚洲欧美色图小说| 99久久婷婷国产| 国产精品美女久久久久久久网站| 久久国产福利国产秒拍| 7777精品伊人久久久大香线蕉| 亚洲一区二区三区爽爽爽爽爽| 高潮精品一区videoshd| 久久九九久精品国产免费直播| 久久精品99久久久| 日韩色视频在线观看| 日韩不卡在线观看日韩不卡视频| 在线一区二区视频| 亚洲国产另类av| 欧美午夜不卡在线观看免费| 亚洲人成亚洲人成在线观看图片 | 国产福利一区二区三区视频在线| 欧美成人bangbros| 黄色小说综合网站| 久久噜噜亚洲综合| 高清视频一区二区| 国产精品毛片a∨一区二区三区| 国产精华液一区二区三区| 国产拍揄自揄精品视频麻豆| 国产综合一区二区| 亚洲国产精品t66y| 不卡av在线网| 一区二区三区四区在线| 色欲综合视频天天天| 亚洲成人在线网站| 91精品国产高清一区二区三区 | 精品一区二区在线观看| 日韩精品在线网站| 国产精品99久久久久久似苏梦涵| 国产午夜亚洲精品理论片色戒| 丰满少妇在线播放bd日韩电影| 美国十次了思思久久精品导航| 精品国产乱码久久久久久久久| 国产精品亚洲视频| 国产精品伦理一区二区| 色哟哟一区二区在线观看| 亚洲va韩国va欧美va精品| 欧美一级高清大全免费观看| 国产一区二区电影| 中文字幕制服丝袜一区二区三区 | 视频一区在线播放| 欧美xxxxxxxx| 99视频在线观看一区三区| 亚洲最大成人综合| 日韩一区二区免费高清| 高清在线观看日韩| 亚洲国产综合色| 日韩久久久精品| 不卡的电视剧免费网站有什么| 亚洲午夜精品网| 26uuu亚洲综合色欧美| av在线不卡免费看| 日韩高清电影一区| 亚洲国产精品二十页| 在线国产电影不卡| 国内久久精品视频| 亚洲综合色成人| 久久精品亚洲乱码伦伦中文| 欧美综合久久久| 国产美女在线精品| 亚洲成av人片一区二区| 国产亚洲一区二区在线观看| 欧美在线一二三四区| 国产曰批免费观看久久久| 一区二区三区不卡视频| 久久精品一区四区| 91麻豆精品国产| 91在线观看免费视频| 久88久久88久久久| 一区二区三区资源| 国产亚洲女人久久久久毛片| 欧美亚洲国产一卡| 福利一区在线观看| 麻豆高清免费国产一区| 成人免费一区二区三区在线观看 | 国产拍欧美日韩视频二区| 欧美高清视频不卡网| 99精品视频一区| 国产精品91一区二区| 青草av.久久免费一区|