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

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

?? nand_drv.c

?? Nand Flash low driver。
?? C
?? 第 1 頁 / 共 5 頁
字號:
	//EnableNAND();
	ErrorCode = NandWriteNoEcc(udAddress,udLenght,Buffer);
	//DisableNAND();

	return ErrorCode ;
}
#endif

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

	//EnableNAND();
	ErrorCode = NandReadOOB(udAddress,udLenght,pOobBuf);
	//DisableNAND();
	return ErrorCode ;
}
#endif

#if 0
NAND_Ret NAND_SpareProgram(UINT32 udAddress, dataWidth *pOobBuf, UINT32 udLenght)
{
	UINT8 ErrorCode ;
	
	//EnableNAND();
	ErrorCode = NandWriteOOB(udAddress,udLenght,pOobBuf);
	//DisableNAND();
	return ErrorCode ;
}
#endif

#if (NFLASH_TYPE == TYPE_IS_K9F1208X0B) 

static NAND_Ret ChipFastErase(void)
{
	UINT32 erase_address0  ;
	UINT32 erase_address1;
	UINT32 erase_address2 ;
	UINT32 erase_address3 ;
	UINT8 tmp, device_status ;
	UINT32 i ;
	
	HD_NFlashInit() ;

	/*if Write protection is valid*/
	if (!IsWriteProtect())
	{
		DEBUG_OUT("Erase NAND_WRPRT_ERR\n\r") ;
		return NAND_WRPRT_ERR;
	}

	for (i = 0 ; i < FLASH_SIZE_64MB; i += 0x10000)
	{
		erase_address0 = i | 0x80000000 ;
		erase_address1 = erase_address0 + 0x4000 ;
		erase_address2 = erase_address1 + 0x4000 ;
		erase_address3 = erase_address2 + 0x4000 ;

		WRITE_REG32(NFLASH_NFINTP_ADDR,1) ;
		mNandWrite_SET_CLE(BLOCK_ERASE_CMD1);
		mNandWrite_SET_ALE(erase_address0) ; /*Plane 0*/
		mNandWrite_SET_CLE(BLOCK_ERASE_CMD1);
		mNandWrite_SET_ALE(erase_address1) ; /*Plane 1*/
		mNandWrite_SET_CLE(BLOCK_ERASE_CMD1);
		mNandWrite_SET_ALE(erase_address2) ; /*Plane 2*/
		mNandWrite_SET_CLE(BLOCK_ERASE_CMD1);
		mNandWrite_SET_ALE(erase_address3) ; /*Plane 3*/
		mNandWrite_SET_CLE(BLOCK_ERASE_CMD2);

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

		mNandWrite_SET_CLE(READ_MULTI_PLANE_STATUS_CMD);
		tmp = (UINT8) mNand_Read_Data();
		device_status = (UINT8) (tmp & 0x1f) ;

		if ((device_status & MULTI_PASS_BIT) != 0)
		{	
			return NAND_PRG_FAIL ;
		} /* 1 is sucess*/
	}
	return NAND_PASS ;
}

NAND_Ret NandChipFastErase(void)
{
	UINT8 ErrorCode ;
	EnableNAND();
	ErrorCode = ChipFastErase();
	DisableNAND();

	return ErrorCode ;
}
#endif/*(NFLASH_TYPE == TYPE_IS_K9F1208X0B) */

//static NAND_Ret NandReadOOBNoDMA(UINT32 udAddress, UINT32 len, UINT8 *pOobBuf)
 NAND_Ret NAND_SpareReadRandom(UINT32 udAddress,  UINT8 *pOobBuf,UINT32 len)
{
#ifdef _NAND_DEBUG_
	DEBUG_OUT("NandReadOOB\n\r") ;
	if ((pOobBuf == NULL) || (len > 16))
	{
		DEBUG_OUT("Roob NAND_SW_ERR\n\r") ;
		return NAND_SW_ERR ;
	}
	if (udAddress >= FLASH_SIZE_64MB)
	{
		DEBUG_OUT("Roob NAND_ADDR_OVERFLOW\n\r") ;
		return NAND_ADDR_OVERFLOW;
	}
	/* Control if the address is the buffer size is within the page*/   
	if (((udAddress % PAGE_SPARE_SIZE) + len) > PAGE_SPARE_SIZE)
	{
		DEBUG_OUT("Woob NAND_PAGE_OVERFLOW\n\r") ;
		return NAND_PAGE_OVERFLOW;
	}
#endif /*_NAND_DEBUG_*/

	//udAddress &= 0x03ffff0f ; /*a0-a3:valid address ,a4-a7:dont care*/
	WRITE_REG32(NFLASH_NFINTP_ADDR,1) ;
	mNandWrite_SET_CLE(READ2_CMD); 
	mNandWrite_SET_ALE((udAddress &0x03ffff0f)) ;

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


	{
		UINT8 *pd = pOobBuf ;

		 	 *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) ; 
	}


	return NAND_PASS;
}
#if 0
NAND_Ret NAND_SpareReadRandom(UINT32 udAddress, dataWidth *pOobBuf, UINT32 udLenght)
{
	UINT8 ErrorCode ;
	//EnableNAND();
	ErrorCode = NandReadOOBNoDMA(udAddress,udLenght,pOobBuf);
	//DisableNAND();
	return ErrorCode ;
}
#endif


NAND_Ret NAND_ChipErase(void)
{
	UINT8 ErrorCode ;
	UINT32 i ;

	NAND_Init();

	EnableNAND();
	for (i=0;i<FLASH_SIZE_64MB;i+=0x4000)
	{
	   ErrorCode = NAND_BlockErase(i);
	   if( ErrorCode != NAND_PASS)
	   	return ErrorCode ;
	}
	DisableNAND();
	return ErrorCode ;
}


  NAND_Ret NAND_PageRead512(UINT32 udAddress,dataWidth *pReadBuf)
{
	UINT8 error_code = NAND_PASS ;
	UINT8 EccBuf[3];
	UINT8 SpareBuf[16];

#ifdef _NAND_DEBUG_
	DEBUG_OUT("NandReadWithEcc\n\r") ;

	if (pReadBuf == NULL) 
	{
		DEBUG_OUT("Read NAND_SW_ERR\n\r") ;
		return NAND_SW_ERR ;
	}

	if (udAddress >= FLASH_SIZE_64MB)
	{
		DEBUG_OUT("Read NAND_ADDR_OVERFLOW\n\r") ;
		return NAND_ADDR_OVERFLOW;
	}
#endif /*_NAND_DEBUG_*/

	WRITE_REG32(NFLASH_NFINTP_ADDR,1) ;
	mNandWrite_SET_CLE(READ1_CMD_00H);
	mNandWrite_SET_ALE(udAddress&0x03ffffff) ;

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

	EccClear();
	/**************Read 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 fix ,dst increment*/
		/*temp = (1 << 0) | (0 << 4) | (SECTOR_SIZE- 1) << 8 | (1 << 20) | (0 << 21) ;  */
		temp = 0x11FF01;
		ProgramDMAChannel(NFLASH_NFDIN_ADDR + 1,(UINT32) pReadBuf,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("Read 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 fix,dst inc*/
			CtlrParam = 1 << 23 ;
			/*src dst peripheral is ignored | src master 0 | dst master 1| memory to memory | 512 bytes*/
			CfgrParam = (1 << 7) | (512 << 12);

			ProgramDMAChannel(NFLASH_NFDIN_ADDR,(UINT32) pReadBuf,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("Roob 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(&EccBuf[0]);
		
		/*start ,byte width ,length is len, source fix ,dst increment*/
		OS_DRIVER_ObtainSemaphore(DMA_SEMAPHORE_ID);  
		/*temp = (1 << 0) | (0 << 4) | (16 - 1) << 8 | (1 << 20) | (0 << 21) ;  */
	#if (DMA_TYPE==TYPE_IS_MOSE_DMA)
		EnablePDClk(PD_CCKEN_DMAC_BIT);
		temp = 0x100F01;  
		ProgramDMAChannel(NFLASH_NFDIN_ADDR + 1,(UINT32) (&SpareBuf[0]),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("Read 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 fix,dst inc*/
			CtlrParam = 1 << 23 ;
			/*src dst peripheral is ignored | src master 0 | dst master 1| memory to memory | 512 bytes*/
			CfgrParam = (1 << 7) | (16 << 12);

			ProgramDMAChannel(NFLASH_NFDIN_ADDR,(&SpareBuf[0]),
				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("Roob 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);
		error_code = CompareEcc(&EccBuf[0],&SpareBuf[0]);
	}
#else   /*_NFLASH_DMA_*/
	{
	   	 UINT8  mi,*pd;
		 UINT16 temp = SECTOR_SIZE>>4 ;
		 pd=(UINT8 *)pReadBuf;
		 mi=0;
		do
		{
			 *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) ; 			 	
		}while((++mi)<temp);

			GenerateEcc(&EccBuf[0]);
			pd = SpareBuf ;
		 	*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],&SpareBuf[0]);
	}

#endif /*_NFLASH_DMA_*/	

	return error_code ;
}

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

	ErrorCode = NandRead512(udAddress,512,pReadBuf);

	return ErrorCode ;
}
#endif
  NAND_Ret NANDReset(void)
{
	EnableNAND();
	NFlashReset() ;
	DisableNAND();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲日韩av| 亚洲色图在线播放| 色88888久久久久久影院野外| 亚洲国产中文字幕在线视频综合 | 在线观看日韩电影| 精品系列免费在线观看| 夜夜爽夜夜爽精品视频| 国产日本一区二区| 91精品国产免费| 色婷婷av久久久久久久| 国产福利一区二区| 久久精品国产澳门| 亚洲国产精品视频| 亚洲精品国久久99热| 国产丝袜美腿一区二区三区| 欧美一区二区三区在线视频| 91蜜桃免费观看视频| 国产91精品精华液一区二区三区| 日本伊人午夜精品| 一区二区三区中文字幕精品精品 | av在线播放不卡| 极品瑜伽女神91| 婷婷六月综合网| 亚洲国产色一区| 亚洲一区二区三区在线看| 国产精品卡一卡二| 欧美国产精品v| 久久久久综合网| 久久久久久亚洲综合影院红桃| 91精品国产免费| 欧美日韩在线播| 欧美午夜精品久久久久久超碰 | 欧美一二三四在线| 欧美区在线观看| 欧美午夜一区二区三区| 色婷婷综合中文久久一本| aaa亚洲精品| www.欧美日韩国产在线| 成人app在线| 99国产精品久久久久久久久久 | 国产精品区一区二区三区| 久久久亚洲欧洲日产国码αv| 久久综合资源网| 国产网站一区二区三区| 国产精品美日韩| 综合激情网...| 一区二区三区四区精品在线视频| 亚洲靠逼com| 五月开心婷婷久久| 日本成人在线不卡视频| 久久精品国产精品青草| 国产精品99久久久久久宅男| 国产精品18久久久久久久网站| 国产寡妇亲子伦一区二区| 懂色av一区二区在线播放| 不卡高清视频专区| 一本到高清视频免费精品| 欧美日韩你懂得| 欧美一区二区黄| 久久精品亚洲国产奇米99| 综合久久久久久| 视频一区欧美日韩| 激情综合色综合久久| 懂色av一区二区三区免费看| 一本久久精品一区二区| 91 com成人网| 久久久久亚洲蜜桃| 亚洲精品成人a在线观看| 天堂蜜桃91精品| 国产一区二区不卡在线| 不卡视频在线看| 欧美精品自拍偷拍动漫精品| 精品欧美黑人一区二区三区| 国产精品理伦片| 日韩精品成人一区二区三区| 蜜桃视频在线观看一区| 成人精品国产免费网站| 精品视频在线视频| 久久综合国产精品| 亚洲猫色日本管| 蜜芽一区二区三区| 99视频精品在线| 欧美一区二区在线视频| 国产精品午夜久久| 天天综合日日夜夜精品| 国产aⅴ综合色| 7777精品久久久大香线蕉| 国产欧美精品日韩区二区麻豆天美| 亚洲精品一二三四区| 激情文学综合丁香| 欧美性三三影院| 国产欧美日韩在线看| 午夜精品久久久久| av中文字幕一区| 久久免费国产精品 | 国内成人精品2018免费看| 色综合天天狠狠| 国产亚洲一区二区在线观看| 亚洲福利国产精品| 成年人午夜久久久| 日韩三区在线观看| 亚洲午夜视频在线观看| 懂色av一区二区三区免费观看| 91麻豆精品国产91久久久久久久久 | 日本不卡视频在线| 日本黄色一区二区| 国产婷婷精品av在线| 捆绑调教一区二区三区| 在线观看国产91| 国产精品大尺度| 国产精品一区二区黑丝| 69堂精品视频| 亚洲大片精品永久免费| 色综合久久久久久久| 国产欧美在线观看一区| 美女www一区二区| 69p69国产精品| 亚洲国产欧美日韩另类综合| 91丝袜美女网| 国产精品视频在线看| 国产在线看一区| 欧美电影免费观看完整版| 视频一区二区三区在线| 欧美色男人天堂| 亚洲自拍偷拍图区| 在线观看三级视频欧美| 亚洲欧美日韩中文播放 | 国产精品久久久久婷婷二区次 | 欧美亚洲综合一区| 亚洲欧美日韩国产综合在线 | 成人高清av在线| 国产三级一区二区三区| 国内精品伊人久久久久av影院| 91精品国产91久久综合桃花| 亚洲第一狼人社区| 欧美精品第一页| 男人的天堂久久精品| 欧美一区2区视频在线观看| 视频一区视频二区在线观看| 制服丝袜av成人在线看| 日韩精品成人一区二区三区| 欧美一级理论片| 老司机精品视频在线| 日韩欧美国产精品| 韩国欧美一区二区| 中文字幕av一区 二区| 成人av网址在线| 一区二区三区加勒比av| 欧美亚洲一区三区| 免费高清在线视频一区·| 日韩网站在线看片你懂的| 久久99国产精品久久99| 久久久99免费| 99这里都是精品| 亚洲一区二区高清| 91精品国产手机| 国产精品一二三在| 一区在线中文字幕| 欧美在线观看18| 日本中文一区二区三区| 久久日韩粉嫩一区二区三区| 成人av在线一区二区| 亚洲精品乱码久久久久久黑人| 欧美性大战久久久| 精品一区二区免费在线观看| 国产网站一区二区三区| 色综合天天在线| 青草av.久久免费一区| 国产亚洲视频系列| 欧美综合一区二区| 免费久久99精品国产| 国产精品美女视频| 欧美日韩视频在线观看一区二区三区| 婷婷中文字幕综合| 国产女人aaa级久久久级 | 一本色道久久综合精品竹菊 | 99久久精品国产观看| 婷婷成人综合网| 久久久91精品国产一区二区精品 | 色综合久久中文字幕| 青青草国产成人av片免费| 国产日产欧美一区| 欧美色图在线观看| 国产精品一区二区在线播放 | 91精品婷婷国产综合久久性色| 国产九色精品成人porny | 美女脱光内衣内裤视频久久影院| 久久久亚洲精品一区二区三区 | 亚洲精品一线二线三线| 91天堂素人约啪| 国产乱子伦视频一区二区三区| 亚洲国产精品影院| 欧美国产日韩a欧美在线观看| 91麻豆精品国产91久久久久久| 97久久超碰精品国产| 久久99精品国产.久久久久久| 亚洲欧美日韩人成在线播放| 欧美精品一区二区三区一线天视频| 色婷婷久久久久swag精品| 激情小说亚洲一区|