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

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

?? nandflash.c

?? AT91SAM9261啟動代碼。SPI DATAFLASH。
?? C
字號:
/* ---------------------------------------------------------------------------- *         ATMEL Microcontroller Software Support  -  ROUSSET  - * ---------------------------------------------------------------------------- * Copyright (c) 2006, Atmel Corporation * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the disclaimer below. * * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the disclaimer below in the documentation and/or * other materials provided with the distribution. * * Atmel's name may not be used to endorse or promote products derived from * this software without specific prior written permission. * * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ---------------------------------------------------------------------------- * File Name           : nandflash.c * Object              : * Creation            : NLe Sep 28th 2006 *----------------------------------------------------------------------------- */#include "../include/part.h"#include "../include/main.h"#include "../include/debug.h"#ifdef CFG_NANDFLASH#include "../include/nandflash.h"#include "../include/nand_ids.h"/*----------------------------------------------------------------------------*//* NAND Commands							      *//*----------------------------------------------------------------------------*//* 8 bits devices */#define WRITE_NAND_COMMAND(d) do{ *(volatile unsigned char *)((unsigned long)AT91C_SMARTMEDIA_BASE | AT91_SMART_MEDIA_CLE) = (unsigned char)(d); } while(0)#define WRITE_NAND_ADDRESS(d) do{ *(volatile unsigned char *)((unsigned long)AT91C_SMARTMEDIA_BASE | AT91_SMART_MEDIA_ALE) = (unsigned char)(d); } while(0)#define WRITE_NAND(d) do{ *(volatile unsigned char *)((unsigned long)AT91C_SMARTMEDIA_BASE) = (unsigned char)d; } while(0)#define READ_NAND() ((unsigned char)(*(volatile unsigned char *)(unsigned long)AT91C_SMARTMEDIA_BASE))/* 16 bits devices */#define WRITE_NAND16(d) do{ *(volatile unsigned short *)((unsigned long)AT91C_SMARTMEDIA_BASE) = (unsigned short)d; } while(0)#define READ_NAND16() ((volatile unsigned short)(*(volatile unsigned short *)(unsigned long)AT91C_SMARTMEDIA_BASE))/*------------------------------------------------------------------------------*//* \fn    AT91F_NandInit							*//* \brief Initialize NandFlash informations					*//* 										*//* TCL_PAGE_BUF[1] = NF_NbBlocks						*//* TCL_PAGE_BUF[2] = NF_BlockSize						*//* TCL_PAGE_BUF[3] = NF_SectorSize						*//* TCL_PAGE_BUF[4] = NF_SpareSize						*//* TCL_PAGE_BUF[5] = NF_DataBusWidth						*//*------------------------------------------------------------------------------*/static void AT91F_NandInit(PSNandInfo pNandInfo, PSNandInitInfo pNandInitInfo){	unsigned int uSectorSize, i=0;	pNandInfo->uNbBlocks 	  = pNandInitInfo->uNandNbBlocks;	/* Nb of blocks in device */	pNandInfo->uBlockNbData	  = pNandInitInfo->uNandBlockSize;	/* Nb of DataBytes in a block */	pNandInfo->uDataNbBytes	  = pNandInitInfo->uNandSectorSize;	/* Nb of bytes in data section */	pNandInfo->uSpareNbBytes  = pNandInitInfo->uNandSpareSize;	/* Nb of bytes in spare section */	pNandInfo->uSectorNbBytes = pNandInfo->uDataNbBytes +								pNandInfo->uSpareNbBytes;	/* Total nb of bytes in a sector */	pNandInfo->uBlockNbSectors = pNandInfo->uBlockNbData / pNandInfo->uDataNbBytes;		/* Nb of sector in a block */	pNandInfo->uBlockNbSpares = pNandInfo->uSpareNbBytes * pNandInfo->uBlockNbSectors;	/* Nb of SpareBytes in a block */	pNandInfo->uBlockNbBytes = pNandInfo->uSectorNbBytes * pNandInfo->uBlockNbSectors;	/* Total nb of bytes in a block */	pNandInfo->uNbSectors = pNandInfo->uBlockNbSectors * pNandInfo->uNbBlocks;	/* Total nb of sectors in device */	pNandInfo->uNbData = pNandInfo->uBlockNbBytes * pNandInfo->uNbBlocks;		/* Nb of DataBytes in device */	pNandInfo->uNbSpares = pNandInfo->uBlockNbSpares * pNandInfo->uNbBlocks;	/* Nb of SpareBytes in device */	pNandInfo->uNbBytes	= pNandInfo->uNbData + pNandInfo->uNbSpares;		/* Total nb of bytes in device */	pNandInfo->uDataBusWidth = pNandInitInfo->uNandBusWidth;			/* Data Bus Width (8/16 bits) */			uSectorSize = pNandInfo->uDataNbBytes - 1;	pNandInfo->uOffset = 0;	while (uSectorSize >> i)	{		pNandInfo->uOffset++;		i++;	}}/*------------------------------------------------------------------------------*//* \fn    AT91F_NandReadID							*//* \brief Read Nand ID								*//*------------------------------------------------------------------------------*/static PSNandInitInfo AT91F_NandReadID(void){	unsigned int uChipID, i=0;	unsigned char bManufacturerID, bDeviceID;		/* Enable chipset */	NAND_ENABLE_CE();	/* Ask the Nand its IDs */	WRITE_NAND_COMMAND(CMD_READID);	WRITE_NAND_ADDRESS(0x00);	/* Read answer */	bManufacturerID	= READ_NAND();    	bDeviceID	= READ_NAND();	/* Disable chipset before returning */	NAND_DISABLE_CE();	uChipID = (bManufacturerID << 8) | bDeviceID;		/* Search in NandFlash_InitInfo[] */	while (NandFlash_InitInfo[i].uNandID != 0)	{		if (NandFlash_InitInfo[i].uNandID == uChipID)			return &NandFlash_InitInfo[i];				i++;	}		return 0;}/*------------------------------------------------------------------------------*//* \fn    AT91F_NandEraseBlock0							*//* \brief Erase Block 0								*//*------------------------------------------------------------------------------*/BOOL AT91F_NandEraseBlock0(void){	unsigned int uPhySecNb = 0;	BOOL bRet = TRUE;	/* Chip enable */	NAND_ENABLE_CE();	/* Push Erase_1 command */	WRITE_NAND_COMMAND(CMD_ERASE_1);	/* Push sector address in three cycles */	WRITE_NAND_ADDRESS((uPhySecNb >>  0) & 0xFF);	WRITE_NAND_ADDRESS((uPhySecNb >>  8) & 0xFF);	WRITE_NAND_ADDRESS((uPhySecNb >> 16) & 0xFF);	/* Push Erase_2 command */	WRITE_NAND_COMMAND(CMD_ERASE_2);	/* Wait for nand to be ready */	NAND_WAIT_READY();	NAND_WAIT_READY();		/* Check status bit for error notification */	WRITE_NAND_COMMAND(CMD_STATUS);	NAND_WAIT_READY();	if (READ_NAND() & STATUS_ERROR)	{		/* Error during block erasing */		bRet = FALSE;		goto exit;		}exit:	/* Chip disable */	NAND_DISABLE_CE();	return bRet;}#ifdef NANDFLASH_SMALL_BLOCKS/*------------------------------------------------------------------------------*//* \fn    AT91F_NandReadSector							*//* \brief Read a Sector								*//*------------------------------------------------------------------------------*/BOOL AT91F_NandReadSector(PSNandInfo pNandInfo, unsigned int uSectorAddr, char *pOutBuffer, unsigned int fZone){	BOOL		bRet = TRUE;	unsigned int	uBytesToRead, i;	unsigned char   Cmd;	/* WARNING : During a read procedure you can't call the ReadStatus flash cmd */	/* The ReadStatus fill the read register with 0xC0 and then corrupt the read.*/	/* Push offset address */	switch(fZone)	{		case ZONE_DATA:			uBytesToRead = pNandInfo->uDataNbBytes;			Cmd = CMD_READ_A;			break;		case ZONE_INFO:			uBytesToRead = pNandInfo->uSpareNbBytes;			pOutBuffer += pNandInfo->uDataNbBytes;			Cmd = CMD_READ_C;			break;		case ZONE_DATA | ZONE_INFO:			uBytesToRead = pNandInfo->uSectorNbBytes;			Cmd = CMD_READ_A;			break;		default:			bRet = FALSE;			goto exit;	}	/* Enable the chip */	NAND_ENABLE_CE();	/* Write specific command, Read from start */	WRITE_NAND_COMMAND(Cmd);	/* Push sector address */	uSectorAddr >>= pNandInfo->uOffset;			WRITE_NAND_ADDRESS(0x00);	WRITE_NAND_ADDRESS((uSectorAddr >>  0) & 0xFF);	WRITE_NAND_ADDRESS((uSectorAddr >>  8) & 0xFF);	WRITE_NAND_ADDRESS((uSectorAddr >> 16) & 0xFF);	/* Wait for flash to be ready (can't pool on status, read upper WARNING) */	NAND_WAIT_READY();	NAND_WAIT_READY();	/* Need to be done twice, READY detected too early the first time? */		/* Read loop */	if (pNandInfo->uDataBusWidth)	{	/* 16 bits */		for(i=0; i<uBytesToRead/2; i++) // Div2 because of 16bits		{			*((short*)pOutBuffer) = READ_NAND16();			pOutBuffer+=2;		}	} else {		for(i=0; i<uBytesToRead; i++)		{			*pOutBuffer = READ_NAND();			pOutBuffer++;		}	}exit:	/* Disable the chip */	NAND_DISABLE_CE();	return bRet;}#else /* NANDFLASH_LARGE_BLOCKS *//*------------------------------------------------------------------------------*//* \fn    AT91F_NandReadSector							*//* \brief Read a Sector								*//*------------------------------------------------------------------------------*/static BOOL AT91F_NandReadSector(PSNandInfo pNandInfo, unsigned int uSectorAddr, char *pOutBuffer, unsigned int fZone){	BOOL		bRet = TRUE;	unsigned int	uBytesToRead, i;	/* WARNING : During a read procedure you can't call the ReadStatus flash cmd */	/* The ReadStatus fill the read register with 0xC0 and then corrupt the read.*/	/* Enable the chip */	NAND_ENABLE_CE();	/* Write specific command, Read from start */	WRITE_NAND_COMMAND(CMD_READ_1);	/* Push offset address */	switch(fZone)	{		case ZONE_DATA:			uBytesToRead = pNandInfo->uDataNbBytes;			WRITE_NAND_ADDRESS(0x00);			WRITE_NAND_ADDRESS(0x00);			break;		case ZONE_INFO:			uBytesToRead = pNandInfo->uSpareNbBytes;			pOutBuffer += pNandInfo->uDataNbBytes;			if (pNandInfo->uDataBusWidth)			{	/* 16 bits */				WRITE_NAND_ADDRESS(((pNandInfo->uDataNbBytes/2) >>  0) & 0xFF); /* Div 2 is because we address in word and not				in byte */				WRITE_NAND_ADDRESS(((pNandInfo->uDataNbBytes/2) >>  8) & 0xFF);			} else { /* 8 bits */				WRITE_NAND_ADDRESS((pNandInfo->uDataNbBytes >>  0) & 0xFF);				WRITE_NAND_ADDRESS((pNandInfo->uDataNbBytes >>  8) & 0xFF);						}			break;		case ZONE_DATA | ZONE_INFO:			uBytesToRead = pNandInfo->uSectorNbBytes;			WRITE_NAND_ADDRESS(0x00);			WRITE_NAND_ADDRESS(0x00);			break;		default:			bRet = FALSE;			goto exit;	}	/* Push sector address */	uSectorAddr >>= pNandInfo->uOffset;			WRITE_NAND_ADDRESS((uSectorAddr >>  0) & 0xFF);	WRITE_NAND_ADDRESS((uSectorAddr >>  8) & 0xFF);	WRITE_NAND_ADDRESS((uSectorAddr >> 16) & 0xFF);	WRITE_NAND_COMMAND(CMD_READ_2);	/* Wait for flash to be ready (can't pool on status, read upper WARNING) */	NAND_WAIT_READY();	NAND_WAIT_READY();	/* Need to be done twice, READY detected too early the first time? */		/* Read loop */	if (pNandInfo->uDataBusWidth)	{	/* 16 bits */		for(i=0; i<uBytesToRead/2; i++) /* Div2 because of 16bits */		{			*((short*)pOutBuffer) = READ_NAND16();			pOutBuffer+=2;		}	} else {		for(i=0; i<uBytesToRead; i++)		{			*pOutBuffer++ = READ_NAND();		}	}exit:	/* Disable the chip */	NAND_DISABLE_CE();	return bRet;}#endif/*------------------------------------------------------------------------------*//* \fn    AT91F_NandRead							*//* \brief Read Sector Algorithm							*//*------------------------------------------------------------------------------*/static BOOL AT91F_NandRead(PSNandInfo pNandInfo, unsigned int uBlockNb, unsigned int uSectorNb, unsigned int uSpareValue, char *pOutBuffer){	PSSectorInfo pSectorInfo;	unsigned int uSectorAddr = uBlockNb * pNandInfo->uBlockNbData + uSectorNb * pNandInfo->uDataNbBytes;	/* If uSectorNb = 0 -> First sector of the Block so read Spare bytes */	if (!uSectorNb)	{		/* Read First Page Spare zone */		AT91F_NandReadSector(pNandInfo, uSectorAddr, pOutBuffer, ZONE_INFO);		pSectorInfo = (PSSectorInfo)&pOutBuffer[pNandInfo->uDataNbBytes];		if (pSectorInfo->bBadBlock != 0xFF)		{			return FALSE;		}				/* Read Second Page Spare zone */		AT91F_NandReadSector(pNandInfo, uSectorAddr + pNandInfo->uDataNbBytes, pOutBuffer, ZONE_INFO);		pSectorInfo = (PSSectorInfo)&pOutBuffer[pNandInfo->uDataNbBytes];		if (pSectorInfo->bBadBlock != 0xFF)		{			return FALSE;		}		}	return AT91F_NandReadSector(pNandInfo, uSectorAddr, pOutBuffer, ZONE_DATA);}/*------------------------------------------------------------------------------*//* \fn    load_nandflash							*//* \brief load from nandflash 							*//*------------------------------------------------------------------------------*/int load_nandflash(unsigned int img_addr, unsigned int img_size){	SNandInfo sNandInfo;	PSNandInitInfo pNandInitInfo;	unsigned char *pOutBuffer = (unsigned char*)JUMP_ADDR;	unsigned int blockIdx, badBlock, blockRead, length, sizeToRead, nbSector, newBlock, sectorIdx, blockError, sectorSize;	nandflash_hw_init();		/* Read Nand Chip ID */    	pNandInitInfo = AT91F_NandReadID();	if (!pNandInitInfo) 	{#ifdef CFG_DEBUG		   	dbg_print("\n\r-E- No NandFlash detected !!!\n\r");#endif		return -1;    	}	/* Initialize NandInfo Structure */	AT91F_NandInit(&sNandInfo, pNandInitInfo);	if (sNandInfo.uDataBusWidth)		nandflash_cfg_16bits_dbw_init();    	/* Initialize the block offset */    	blockIdx = img_addr / sNandInfo.uBlockNbData;	/* Initialize the number of bad blocks */    	badBlock = 0;	blockRead = 0;    	length = img_size;    	while (length > 0)	{        	/* Read a buffer corresponding to a block in the origin file */		if (length < sNandInfo.uBlockNbData)		{			sizeToRead = length;		}		else		{			sizeToRead = sNandInfo.uBlockNbData;		}		/* Adjust the number of sectors to read */        	nbSector = sizeToRead / sNandInfo.uDataNbBytes;        	if (sizeToRead % sNandInfo.uDataNbBytes)		{            		nbSector++;        	}        	newBlock = 1;		/* Loop until a valid block has been read */		while (newBlock == 1)		{			/* Reset the error flag */			blockError = 0;            			/* Read the sectors */			for (sectorIdx=0; (sectorIdx < nbSector) && (blockError == 0); sectorIdx++)			{				sectorSize = sizeToRead - (sectorIdx * sNandInfo.uDataNbBytes);				if (sectorSize < sNandInfo.uDataNbBytes)				{					sectorSize = sizeToRead - (sectorIdx * sNandInfo.uDataNbBytes);				}				else				{					sectorSize = sNandInfo.uDataNbBytes;				}	                	/* Read the sector */        	        	if (AT91F_NandRead(&sNandInfo, blockIdx, sectorIdx, ZONE_DATA, pOutBuffer) == FALSE)				{					blockError = 1;				}				else				{					pOutBuffer+=sNandInfo.uDataNbBytes;				}			}            			if (blockError == 0)			{                		/* If the block is valid exit */	                	newBlock = 0;        	    	}			blockIdx++;		}        	/* Decrement length */	        length -= sizeToRead;		blockRead++;	}	return 0;}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀91精品一区二区三区 | 日韩视频一区二区| 亚洲黄色av一区| 91蝌蚪porny| 国产精品天干天干在线综合| 国产精品一区免费在线观看| 26uuu国产一区二区三区 | 欧美日韩一区二区在线视频| 亚洲成人精品影院| 精品美女在线观看| 91蜜桃在线观看| 国产精品一区在线观看乱码| 久久亚洲综合色一区二区三区 | 正在播放一区二区| 国产成人精品一区二区三区四区 | 日韩激情一区二区| 精品久久一区二区| 北条麻妃国产九九精品视频| 午夜国产精品一区| 国产农村妇女精品| 在线日韩国产精品| 国产精品白丝jk黑袜喷水| 日韩毛片一二三区| 久久只精品国产| 日韩欧美国产综合| 成人小视频在线| 国产一区二区精品在线观看| 久久综合久久综合亚洲| 国产综合色在线| 日韩在线播放一区二区| 亚洲一区视频在线| 美腿丝袜亚洲色图| 国产精品自拍一区| 欧美三级日韩三级国产三级| 午夜精品久久久久影视| 日韩一区二区在线免费观看| 精品亚洲成a人在线观看| 久久精品男人的天堂| 99精品视频在线观看| 亚洲欧美二区三区| 6080日韩午夜伦伦午夜伦| 寂寞少妇一区二区三区| 欧美激情一区二区三区全黄| 91精品欧美一区二区三区综合在| 日韩一级成人av| 色综合天天在线| 91亚洲大成网污www| 国产99精品视频| 精品综合久久久久久8888| 日韩av高清在线观看| 天天综合天天做天天综合| 亚洲午夜久久久久久久久电影院| 国产精品传媒在线| 国产精品久线观看视频| 国产精品久久久久久久浪潮网站| 久久综合五月天婷婷伊人| 日韩精品一区二区三区swag| 欧美裸体一区二区三区| 91精品免费观看| 91精品久久久久久久91蜜桃| 91精品欧美久久久久久动漫| 91精品婷婷国产综合久久| 欧美一区二区在线不卡| 欧美精品一二三四| 欧洲日韩一区二区三区| 欧美丰满少妇xxxxx高潮对白| 亚洲精品一区二区三区精华液| 亚洲乱码一区二区三区在线观看| 亚洲色图欧美激情| 久久伊99综合婷婷久久伊| 久久久精品2019中文字幕之3| 精品久久国产老人久久综合| 国产日韩欧美精品电影三级在线 | 亚洲va欧美va天堂v国产综合| 欧美另类z0zxhd电影| 丁香天五香天堂综合| 午夜精品久久久久影视| 欧美国产精品一区二区| 制服丝袜亚洲精品中文字幕| www.欧美.com| 精品中文字幕一区二区小辣椒| 一区二区不卡在线视频 午夜欧美不卡在| 国产精品入口麻豆九色| 国产成人在线观看免费网站| 成人免费视频视频在线观看免费| 在线观看国产精品网站| 日本一区二区视频在线| 亚洲免费成人av| 久久精品噜噜噜成人av农村| 国产一区二区精品在线观看| 色欧美片视频在线观看在线视频| 欧美成人在线直播| 午夜精品久久一牛影视| 精品日本一线二线三线不卡| 91搞黄在线观看| 久久99精品国产麻豆婷婷洗澡| 伊人夜夜躁av伊人久久| 国产欧美精品一区二区三区四区| 欧美一区二区三区在线观看视频 | 久久精品国产久精国产爱| 亚洲最新视频在线播放| 综合在线观看色| 日本一区免费视频| 久久综合九色综合欧美98| 91精品国产一区二区三区蜜臀 | 国产精品拍天天在线| 久久久久久久一区| 日韩欧美激情在线| 91精品欧美综合在线观看最新 | 91精品国产综合久久久久久久久久 | 97久久精品人人做人人爽| 国产成人福利片| 九九在线精品视频| 久久国产人妖系列| 日本欧美一区二区三区| 午夜久久久久久| 亚洲成人av电影| 亚洲小说欧美激情另类| 亚洲精品视频在线| 亚洲欧美日韩中文播放| 中文字幕亚洲欧美在线不卡| 欧美精彩视频一区二区三区| 国产拍揄自揄精品视频麻豆| 久久久久国色av免费看影院| 久久综合色之久久综合| 精品成人一区二区三区| 26uuuu精品一区二区| 久久久久久久综合色一本| 久久久综合九色合综国产精品| 五月天激情小说综合| 亚洲福利电影网| 亚洲国产aⅴ成人精品无吗| 日韩欧美中文字幕一区| 久久99蜜桃精品| 精品美女一区二区| 狠狠色伊人亚洲综合成人| 久久久久综合网| 99精品欧美一区二区三区小说| 亚洲日本中文字幕区| 日本高清成人免费播放| 亚洲v中文字幕| 日韩女同互慰一区二区| 国产盗摄一区二区| 亚洲永久精品国产| 精品88久久久久88久久久| 国产精品99久久久久久久女警 | 一本色道久久综合亚洲91| 麻豆一区二区99久久久久| 国产女主播在线一区二区| 26uuu另类欧美| 91一区二区三区在线观看| 亚洲国产成人高清精品| 91精品国产一区二区三区香蕉| 激情综合色丁香一区二区| 亚洲欧洲www| 欧美极品少妇xxxxⅹ高跟鞋| 国产女人18毛片水真多成人如厕| 1区2区3区精品视频| 综合激情成人伊人| 一区二区三区波多野结衣在线观看| 亚洲午夜电影网| 蜜臀av性久久久久蜜臀aⅴ四虎 | 色综合久久88色综合天天免费| 欧美亚洲国产一区二区三区| 欧美一区二区三区四区视频| 久久久久国产一区二区三区四区| 亚洲天堂网中文字| 婷婷久久综合九色综合伊人色| 毛片av中文字幕一区二区| 夫妻av一区二区| 欧美性生交片4| 精品国产免费人成电影在线观看四季| 国产亚洲精品aa午夜观看| 亚洲欧美色图小说| 美女视频黄 久久| 99精品欧美一区二区蜜桃免费| 在线播放/欧美激情| 国产欧美精品一区二区色综合 | 中日韩av电影| 亚洲综合区在线| 蜜桃一区二区三区四区| 不卡的电视剧免费网站有什么| 欧美美女喷水视频| 国产日韩av一区| 日日摸夜夜添夜夜添国产精品| 国产精品亚洲午夜一区二区三区 | 成人性视频免费网站| 在线观看精品一区| 精品999在线播放| 一区二区三区精品| 国产一区在线观看麻豆| 91国模大尺度私拍在线视频| 精品国产区一区| 亚洲一级不卡视频| 国产成人综合亚洲91猫咪| 欧美性xxxxxx少妇| 欧美极品aⅴ影院| 免费在线一区观看| 色视频一区二区| 久久精品男人天堂av|