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

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

?? nand_drv.c

?? Nand Flash low driver。
?? C
?? 第 1 頁 / 共 5 頁
字號:
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 			 	
		}while((++mi)<temp);

		GenerateEcc(&EccBuf[0]);

		 	*pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 			
                      *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ;
 			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ;
 			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ;
 			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ;
 			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
			 *pd++ = (UINT8) (mNand_Read_Data() & 0xff) ; 
		
		error_code = CompareEcc(&EccBuf[0],pReadBuf + SECTOR_SIZE);
	}

#endif /*_NFLASH_DMA_*/	

	return error_code ;
}



 NAND_Ret NAND_PageProgramWithEcc(UINT32 udAddress, dataWidth *pWritebuf,UINT32 len )
{
#ifdef _NAND_DEBUG_
	DEBUG_OUT("NandWriteWithEcc\n\r") ;
	if ((pWritebuf == NULL) || (len > PAGE_SIZE))
	{
		DEBUG_OUT("Write NAND_SW_ERR\n\r") ;
		return NAND_SW_ERR ;
	}
	if (udAddress >= FLASH_SIZE_64MB)
	{
		DEBUG_OUT("Write NAND_ADDR_OVERFLOW\n\r") ;
		return NAND_ADDR_OVERFLOW;
	}
	/*if Write protection is valid*/
	if (!IsWriteProtect())
	{
		DEBUG_OUT("Write NAND_WRPRT_ERR\n\r") ;
		return NAND_WRPRT_ERR;
	}
#endif /*_NAND_DEBUG_*/

	WRITE_REG32(NFLASH_NFINTP_ADDR,1) ;
	mNandWrite_SET_CLE(READ1_CMD_00H);  /*reset  pointer to 'a' area*/
	mNandWrite_SET_CLE(PAGE_PRO_TRUE_CMD1);
	mNandWrite_SET_ALE(udAddress&0x03ffffff) ;

	EccClear() ;

	/*********Write  the main data area***********/
#ifdef _NFLASH_DMA_
	{
		UINT32 temp = 0;
		UINT32 TimeOut = 0;
		OS_DRIVER_ObtainSemaphore(DMA_SEMAPHORE_ID);  	 
	#if (DMA_TYPE==TYPE_IS_MOSE_DMA)
		EnablePDClk(PD_CCKEN_DMAC_BIT);
		/*start ,byte width ,length is len, source inc ,dst fix*/
		/*temp = 1 << 0 | 0 << 4 | (SECTOR_SIZE - 1) << 8 | 0 << 20 | 1 << 21 ; */
		temp = 0x21FF01 ;
		ProgramDMAChannel((UINT32) pWritebuf,NFLASH_NFDOUT_ADDR,temp) ;
		#ifndef _STAND_ALONE_
			{
				UINT32 EventResult; 	   /* The 32-bit variable to where the set bits is copied*/
				UINT16 EventStatus; 	   /* Event status*/
				
				EventStatus = OS_DRIVER_WaitEventOR(PERIPH_EVENT_ID,PERIPH_DMA_EVTBIT,
								&EventResult,NAND_DMA_TIMEOUT_VALUE);   
				if (EventStatus == OS_DRIVER_WAIT_EVENT_TIMEOUT)
				{
					DEBUG_OUT("Write NAND_DMA_TIMEOUT\n\r") ;
					OS_DRIVER_ReleaseSemaphore(DMA_SEMAPHORE_ID);
					return NAND_DMA_TIMEOUT;
				}
			}
		#else
			temp = READ_REG32(DMA_DCR_ADDR);
			while (temp & 0x10000000)
			{
				temp = READ_REG32(DMA_DCR_ADDR);
				TimeOut++ ;
				if (TimeOut == NAND_TIMEOUT_VALUE)
				{
					OS_DRIVER_ReleaseSemaphore(DMA_SEMAPHORE_ID);
					return NAND_DMA_TIMEOUT ;
				}
			}
		#endif/*_STAND_ALONE_*/
		DisablePDClk(PD_CCKEN_DMAC_BIT);
	#elif(DMA_TYPE==TYPE_IS_GPRS_DMA)
		{
			UINT32 CtlrParam = 0, CfgrParam = 0;
			UINT32 ErrorCode ;

			/*src busrt size 0 |dst burst size 0|src width 8bits|dst width 8bits|src inc,dst fix*/
			CtlrParam = 1 << 22 ;
			/*src dst peripheral is ignored | src master 0 | dst master 1| memory to memory | len bytes*/
			CfgrParam = (1 << 7) | (512 << 12);
			ProgramDMAChannel((UINT32) pWritebuf,NFLASH_NFDOUT_ADDR,CtlrParam,CfgrParam);
		#ifndef  _STAND_ALONE_
			{
				UINT32 EventResult; 	   /* The 32-bit variable to where the set bits is copied*/
				UINT16 EventStatus; 	   /* Event status*/
				
				EventStatus = OS_DRIVER_WaitEventOR(PERIPH_EVENT_ID,PERIPH_DMA_EVTBIT,
								&EventResult,NAND_DMA_TIMEOUT_VALUE);   
				if (EventStatus == OS_DRIVER_WAIT_EVENT_TIMEOUT)
				{
					DEBUG_OUT("Write NAND_DMA_TIMEOUT\n\r") ;
					OS_DRIVER_ReleaseSemaphore(DMA_SEMAPHORE_ID); 
					return NAND_DMA_TIMEOUT;
				}
			}
		#else
			temp = READ_REG32(DMA_ISR_ADDR);
			while ((temp & 0x4) == 0)//default to channel 2
			{
				temp = READ_REG32(DMA_ISR_ADDR);
				TimeOut++ ;
				if (TimeOut == NAND_TIMEOUT_VALUE)
				{
					WRITE_REG32(DMA_ISR_ADDR, 0x4);
					OS_DRIVER_ReleaseSemaphore(DMA_SEMAPHORE_ID);
					return NAND_DMA_TIMEOUT ;
				}
			}
			WRITE_REG32(DMA_ISR_ADDR, 0x4);
		#endif/* _STAND_ALONE_*/
		}
	#endif/*(DMA_TYPE==TYPE_IS_MOSE_DMA)*/

		OS_DRIVER_ReleaseSemaphore(DMA_SEMAPHORE_ID);

		GenerateEcc(&pWritebuf[SECTOR_SIZE]);

		/*start ,byte width ,length is len, source inc ,dst fix*/

		OS_DRIVER_ObtainSemaphore(DMA_SEMAPHORE_ID);  
		/*temp = 1 << 0 | 0 << 4 | (16 - 1) << 8 | 0 << 20 | 1 << 21 ; */
	#if (DMA_TYPE==TYPE_IS_MOSE_DMA)
		EnablePDClk(PD_CCKEN_DMAC_BIT);
		temp = 0x200F01 ;  
		ProgramDMAChannel((UINT32) (pWritebuf + SECTOR_SIZE),NFLASH_NFDOUT_ADDR,temp) ;
		#ifndef _STAND_ALONE_
			{
				UINT32 EventResult; 	   /* The 32-bit variable to where the set bits is copied*/
				UINT16 EventStatus; 	   /* Event status*/
				EventStatus = OS_DRIVER_WaitEventOR(PERIPH_EVENT_ID,PERIPH_DMA_EVTBIT,
								&EventResult,NAND_DMA_TIMEOUT_VALUE);   
				if (EventStatus == OS_DRIVER_WAIT_EVENT_TIMEOUT)
				{
					DEBUG_OUT("Write NAND_DMA_TIMEOUT\n\r") ;
					OS_DRIVER_ReleaseSemaphore(DMA_SEMAPHORE_ID);
					return NAND_DMA_TIMEOUT;
				}
			}
		#else
			TimeOut = 0;
			temp = READ_REG32(DMA_DCR_ADDR);
			while (temp & 0x10000000)
			{
				temp = READ_REG32(DMA_DCR_ADDR);
				TimeOut++ ;
				if (TimeOut == NAND_TIMEOUT_VALUE)
				{
					OS_DRIVER_ReleaseSemaphore(DMA_SEMAPHORE_ID);
					return NAND_DMA_TIMEOUT ;
				}
			}
		#endif/*_STAND_ALONE_*/
		DisablePDClk(PD_CCKEN_DMAC_BIT);
	#elif(DMA_TYPE==TYPE_IS_GPRS_DMA)
		{
			UINT32 CtlrParam = 0, CfgrParam = 0;
			UINT32 ErrorCode ;

			/*src busrt size 0 |dst burst size 0|src width 8bits|dst width 8bits|src inc,dst fix*/
			CtlrParam = 1 << 22 ;
			/*src dst peripheral is ignored | src master 0 | dst master 1| memory to memory | len bytes*/
			CfgrParam = (1 << 7) | (16 << 12);
			ProgramDMAChannel((UINT32) (pWritebuf + SECTOR_SIZE),NFLASH_NFDOUT_ADDR,
				CtlrParam,CfgrParam);
		#ifndef  _STAND_ALONE_
			{
				UINT32 EventResult; 	   /* The 32-bit variable to where the set bits is copied*/
				UINT16 EventStatus; 	   /* Event status*/
				EventStatus = OS_DRIVER_WaitEventOR(PERIPH_EVENT_ID,PERIPH_DMA_EVTBIT,
								&EventResult,NAND_DMA_TIMEOUT_VALUE);   
				if (EventStatus == OS_DRIVER_WAIT_EVENT_TIMEOUT)
				{
					DEBUG_OUT("Write NAND_DMA_TIMEOUT\n\r") ;
					OS_DRIVER_ReleaseSemaphore(DMA_SEMAPHORE_ID); 
					return NAND_DMA_TIMEOUT;
				}
			}
		#else
			temp = READ_REG32(DMA_ISR_ADDR);
			while ((temp & 0x4) == 0)//default to channel 2
			{
				temp = READ_REG32(DMA_ISR_ADDR);
				TimeOut++ ;
				if (TimeOut == NAND_TIMEOUT_VALUE)
				{
					WRITE_REG32(DMA_ISR_ADDR, 0x4);
					OS_DRIVER_ReleaseSemaphore(DMA_SEMAPHORE_ID);
					return NAND_DMA_TIMEOUT ;
				}
			}
			WRITE_REG32(DMA_ISR_ADDR, 0x4);
		#endif /*_STAND_ALONE_*/
		}
	#endif/* (DMA_TYPE==TYPE_IS_MOSE_DMA)	*/
		OS_DRIVER_ReleaseSemaphore(DMA_SEMAPHORE_ID);
	}
#else    /*_NFLASH_DMA_*/
	{

	   	 UINT8  mi,*pd;
		 UINT16 temp = SECTOR_SIZE>>4 ;
		 pd=(unsigned char *)pWritebuf;
		 mi=0;
		do
		{
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ; 
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			 
		}while((++mi)<temp);

		GenerateEcc(&pWritebuf[SECTOR_SIZE]);
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ; 
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
			mNand_Write_Data(*pd++) ;
	}
#endif  /*_NFLASH_DMA_*/

	mNandWrite_SET_CLE(PAGE_PRO_TRUE_CMD2);

	if (!IsReadyToRW())
	{
		DEBUG_OUT("Write NAND_HW_ERR\n\r") ;
		return NAND_HW_ERR ;
	}

	/*if failure it need to block placement*/
	if (!IsSucessProgram())
	{
		DEBUG_OUT("Write NAND_PRG_FAIL\n\r") ;
		return NAND_FAIL ;
	}
#ifdef _NAND_VERIFY_WRITE_
	{
		UINT16 k;

		NAND_PageReadWithEcc(udAddress,len,ReadBackBuf) ;
		for (k = 0; k < len; k++)
		{
			if (ReadBackBuf[k] != pWritebuf[k])
			{
				DEBUG_OUT("Write NAND_VERIFY_ERR\n\r") ;
				return NAND_VERIFY_ERR;
			}
		}
	}
#endif/*_NAND_VERIFY_WRITE_*/

	return NAND_PASS ;
}



/*********************************************************************************/
/******************************Interface to NFTL*************************************/
/*********************************************************************************/

 void EnableNAND(void)
{

#ifdef NAND_POWER_SAVING
	//NAND_ObtainSleepSema();
#endif /*NAND_POWER_SAVING*/

	OS_DRIVER_ObtainSemaphore(NAND_SEMAPHORE_ID);
	NFlashSelect() ;
	
#ifdef NAND_POWER_SAVING
	EnableNANDClock();
	EnableNANDControler();
#endif/*NAND_POWER_SAVING*/
}
void DisableNAND(void)
{

#ifdef NAND_POWER_SAVING
	DisableNANDClock();
	DisableNANDControler();
#endif /*NAND_POWER_SAVING*/

	NFlashDeselect() ;
	OS_DRIVER_ReleaseSemaphore(NAND_SEMAPHORE_ID);
	
#ifdef NAND_POWER_SAVING
	//NAND_ReleaseSleepSema();
#endif /*NAND_POWER_SAVING*/

}

NAND_Ret NAND_Init(void)
{
	UINT8 ErrorCode ;

	//EnableNAND();
	ErrorCode = HD_NFlashInit();
	//DisableNAND();
	

	return ErrorCode ;
}

NAND_Ret NAND_CopyBack(UINT32 udSourceAddr, UINT32 udDestinationAddr)
{
	udSourceAddr &= 0x01ffff00 ;
	udDestinationAddr &= 0x01ffff00 ;

	mNandWrite_SET_CLE(COPY_BACK_PRO_TRUE_CMD1); 
	mNandWrite_SET_ALE(udSourceAddr) ;

	if (!IsReadyToRW())
	{
		return NAND_HW_ERR ;
	}

	mNandWrite_SET_CLE(COPY_BACK_PRO_TRUE_CMD2); 
	mNandWrite_SET_ALE(udDestinationAddr) ;
	mNandWrite_SET_CLE(COPY_BACK_PRO_TRUE_CMD3); 

	if (!IsReadyToRW())
	{
		return NAND_HW_ERR ;
	}

	/*if failure it need to block placement*/
	return(IsSucessProgram()) ;
}

/******************************************************************************
				  NAND_BlockErase

Function:   	  NAND_Ret NAND_BlockErase(udword udAddress)
Arguments:  	 udAddress
				   The address inside the block to erase.
Return Value: 	
				 NAND_FLASH_SIZE_OVERFLOW:
				   The address is not within the flash
				 NAND_PASS
				   The operation are successfully executed
				 NAND_FAIL 
				   The operation are not successfully executed,
Description:	 This function issue a Block Erase Command as explained in the
				 datasheet of the 528 byte/264 word page family.

******************************************************************************/

#if 0
NAND_Ret NAND_BlockErase(UINT32 udAddress)
{
	UINT8 ErrorCode ;

	//EnableNAND();
	ErrorCode = NFlashBlockErase(udAddress);
	//DisableNAND();
	return ErrorCode ;
}
#endif

#if 0
NAND_Ret NAND_PageReadWithEcc(UINT32 udAddress, dataWidth *pReadBuf, UINT32 len)
{
	UINT8 ErrorCode ;

//	EnableNAND();
	ErrorCode = NandReadWithEcc(udAddress,len,pReadBuf);
//	DisableNAND();

	return ErrorCode ;
}
#endif

#if 0
NAND_Ret NAND_PageProgramWithEcc(UINT32 udAddress, dataWidth *Buffer, UINT32 udLenght)
{
	UINT8 ErrorCode ;

	//EnableNAND();
	ErrorCode = NandWriteWithEcc(udAddress,udLenght,Buffer);
	//DisableNAND();
	return ErrorCode ;
}
#endif

#if 0
NAND_Ret NAND_PageRead(UINT32 udAddress, dataWidth *pReadBuf, UINT32 len)
{
	UINT8 ErrorCode ;

	//EnableNAND();
	ErrorCode = NandReadNoEcc(udAddress,len,pReadBuf);
	//DisableNAND();
	return ErrorCode ;
}
#endif

#if 0
NAND_Ret NAND_PageProgram(UINT32 udAddress, dataWidth *Buffer, UINT32 udLenght)
{
	UINT8 ErrorCode ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品卡一卡二| 日本系列欧美系列| 午夜精品久久久久久久| 国产综合色在线视频区| 欧美午夜电影网| 中文字幕亚洲精品在线观看| 麻豆精品一区二区三区| 91猫先生在线| 中文字幕欧美日本乱码一线二线| 美女任你摸久久| 欧美日韩精品免费| 依依成人精品视频| 不卡视频一二三四| 欧美激情资源网| 国产麻豆一精品一av一免费| 91精品国产乱码| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲少妇中出一区| 国产精品中文字幕一区二区三区| 在线成人高清不卡| 亚洲动漫第一页| 欧洲亚洲国产日韩| 亚洲精品欧美综合四区| 99久久精品99国产精品| 亚洲国产精品激情在线观看| 国产麻豆午夜三级精品| 久久精品在线观看| 国产夫妻精品视频| 国产人成亚洲第一网站在线播放| 国产一区二区伦理片| 久久午夜国产精品| 国产精品一区二区视频| 国产午夜精品一区二区三区视频| 激情综合一区二区三区| 久久精品人人做人人爽人人| 国产精品一区二区不卡| 久久久精品天堂| 成人综合婷婷国产精品久久免费| 国产亚洲美州欧州综合国| 成人午夜在线视频| 亚洲日本护士毛茸茸| 欧美丝袜丝nylons| 日韩av一级电影| 欧美一区二区三区喷汁尤物| 久久精品国产一区二区三区免费看| 91精品国产免费久久综合| 精品一区二区三区av| 中文字幕第一页久久| 94-欧美-setu| 亚洲电影一区二区三区| 91精品国产综合久久香蕉的特点| 美国十次综合导航| 久久精品视频在线免费观看| 91小视频免费观看| 午夜精品一区二区三区电影天堂 | 88在线观看91蜜桃国自产| 婷婷久久综合九色综合伊人色| 4438x成人网最大色成网站| 国产在线看一区| 18成人在线视频| 91精品国产一区二区人妖| 国产精品一区专区| 亚洲精品成人精品456| 91麻豆精品国产综合久久久久久| 国产激情精品久久久第一区二区 | 九色综合狠狠综合久久| 中文字幕免费不卡在线| 欧美日韩中文国产| 国产精品羞羞答答xxdd| 五月婷婷久久丁香| 欧美国产欧美综合| 91精品国产综合久久精品麻豆| 国产精品一区免费在线观看| 亚洲乱码中文字幕| 久久亚洲二区三区| 欧美体内she精高潮| 国产高清久久久久| 免费成人在线网站| 亚洲女女做受ⅹxx高潮| 久久久久久久久久看片| 欧美日韩国产在线播放网站| proumb性欧美在线观看| 麻豆成人在线观看| 亚洲国产欧美日韩另类综合| 中文一区一区三区高中清不卡| 91精品国产欧美一区二区18| 色婷婷av一区二区三区软件| 国产乱人伦偷精品视频免下载| 亚洲.国产.中文慕字在线| 亚洲欧洲色图综合| 国产偷v国产偷v亚洲高清| 91精品国产综合久久久久久久| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 99久久久精品| 国产精品白丝av| 久久99久国产精品黄毛片色诱| 亚洲国产精品久久不卡毛片 | 91香蕉国产在线观看软件| 国产一区二区导航在线播放| 日韩国产一二三区| 亚洲伊人色欲综合网| 亚洲欧洲综合另类在线| 国产精品嫩草久久久久| 国产欧美日韩另类一区| www国产亚洲精品久久麻豆| 日韩亚洲国产中文字幕欧美| 欧美群妇大交群中文字幕| 95精品视频在线| 色综合久久88色综合天天免费| 99精品在线免费| 97精品视频在线观看自产线路二| 成人毛片视频在线观看| av午夜一区麻豆| 成人ar影院免费观看视频| av一区二区三区| jlzzjlzz亚洲女人18| 成人av午夜电影| 成人少妇影院yyyy| 99精品欧美一区二区三区综合在线| 国产成人综合在线播放| 国产v日产∨综合v精品视频| 粉嫩aⅴ一区二区三区四区五区| 国产精品99久久久久久久女警| 国产宾馆实践打屁股91| 国产成人精品亚洲777人妖 | 亚洲视频免费在线| 亚洲免费观看在线观看| 亚洲影院久久精品| 免费看黄色91| 国产福利91精品一区| 91美女在线看| 制服丝袜av成人在线看| 日韩欧美色综合| 亚洲国产成人在线| 洋洋成人永久网站入口| 日韩国产一区二| 成人一区二区三区视频在线观看 | 亚洲欧美另类久久久精品| 一区二区三区日韩精品| 午夜婷婷国产麻豆精品| 狠狠久久亚洲欧美| 色综合久久久久久久| 欧美一区二区三区影视| 欧美国产1区2区| 亚洲成人av电影在线| 国产精品伊人色| 欧美综合视频在线观看| 精品日韩成人av| 亚洲三级电影网站| 蜜臀91精品一区二区三区 | 国产精品国产成人国产三级| 亚洲国产精品久久一线不卡| 国产综合一区二区| 91精品91久久久中77777| 欧美一区二区三区小说| 亚洲婷婷在线视频| 久久99精品国产| 91久久精品一区二区三| 欧美成人精精品一区二区频| 亚洲视频一区二区免费在线观看| 免费成人在线视频观看| 99re8在线精品视频免费播放| 日韩一区二区麻豆国产| 亚洲欧美日韩小说| 国产揄拍国内精品对白| 欧美三级三级三级爽爽爽| 国产精品美女一区二区三区| 久久丁香综合五月国产三级网站| 91麻豆免费观看| 国产日韩v精品一区二区| 日本欧美大码aⅴ在线播放| 91视频观看免费| 国产精品久久久久影院色老大| 日韩精品一二区| 欧美视频在线观看一区| 中文一区二区在线观看| 国产一区视频在线看| 日韩欧美美女一区二区三区| 一区二区三区免费在线观看| 国产福利精品一区二区| 欧美mv日韩mv| 蜜芽一区二区三区| 制服.丝袜.亚洲.另类.中文| 亚洲国产wwwccc36天堂| 99re免费视频精品全部| 国产精品久久久久精k8 | 视频一区二区国产| 99这里只有精品| 国产色产综合产在线视频| 九色综合狠狠综合久久| 日韩欧美色综合| 九九在线精品视频| 日韩欧美国产综合在线一区二区三区 | 国产一区二区在线影院| 日韩欧美亚洲一区二区| 裸体在线国模精品偷拍| 精品国产一区二区三区四区四| 久久国产精品99精品国产| 久久久精品免费网站| 国产成人精品免费一区二区|