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

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

?? k9g8g08.c

?? s3c6400(ARM11)的JTAG燒寫軟件
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <stdio.h>
#include "..\include\pin6400.h"
#include "..\include\Jtag.h"
#include "..\include\K9g8g08.h"
#include "..\include\sjf6400.h"


//#define BAD_CHECK	(0)
#define BAD_CHECK	(1)
#define ECC_CHECK	(0)

//#define unsigned char U8

extern void enc_reg(msg_len, fdin, chk_parity);
extern void ECC_GenM(U8 *pEcc, U32 *pBuf, U8 nBW);
void Make_1bit_ECC(int spareBuf_addr);
void Make_4bit_ECC(int spareBuf_addr);
void Make_4bit_ECC2(int spareBuf_addr);
void Make_4bit_SpareECC(int spareBuf_addr);
void Make_4bit_SpareECC2(int spareBuf_addr);
static int NF_2Plane_WritePage(U32 block,U32 page,U8 *buffer,U8 *spareBuf,U8 *spareBuf2);

// 1bit ECC use only 4Byte, 4th Byte is 0xff
U8 chk_parity_1bitECC[4] = {0xff,0xff,0xff,0xff};	// 1bit ECC Data

// 4bit ECC use only 7Byte, 8th Byte is 0x00.
unsigned char chk_parity[8] = {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00};	// 4bit ECC Data


U8 spareBuf[64]=
	{0xff,0x00,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};
	 
U8 spareBuf2[64]=
	{0xff,0x00,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};
	 
U8 spareECC_Buf[512];	
U8 spareECC_Buf2[512];
	 
int msg_len = 512;
U8 *srcPt;
U32 *srcPt32;


//*************** JTAG dependent functions ***************
void K9g8g08_JtagInit(void);
static void NF_CMD(U8 cmd);
static void NF_ADDR(U8 addr);
static void NF_Xm0CSn2_OUT_L(void);
static void NF_Xm0CSn2_OUT_H(void);
static U8 NF_RDDATA(void);
static void NF_WRDATA(U8 data);
static void NF_WAITRB(void);
//*************** H/W dependent functions ***************
static U16 NF_CheckId(void);
static int NF_EraseBlock(U32 blockNum);
static int NF_ReadPage(U32 block,U32 page,U8 *buffer,U8 *spareBuf);
static int NF_WritePage(U32 block,U32 page,U8 *buffer,U8 *spareBuf);
//buffer size is 512 bytes
static int NF_IsBadBlock(U32 block);
static int NF_MarkBadBlock(U32 block);
static void NF_Reset(void);
static void NF_Init(void);
//*******************************************************

void K9g8g08_PrintBlock(void);
void K9g8g08_Program(void);
void K9g8g08_Program_SLC(void);
void K9g8g08_2Plain_Program(void);


static U32 targetBlock;	    // Block number (0 ~ 4095)
static U32 UseBlockNumber;	
static U32 targetSize;	    // Total byte size 
static U32 barcount=0;
static U32 spacecount=0;
static U8 bar[34];
static U8 space[34];

static U8 blockBuf[0x80000]; 

static void *function[][2]=
{
    (void *)K9g8g08_Program,		"K9g8g08 Program",
    (void *)K9g8g08_Program_SLC,	"K9g8g08 Program like SLC (34page fix)",
    (void *)K9g8g08_2Plain_Program, "K9g8g08 two Plain program",
    (void *)K9g8g08_PrintBlock,		"K9g8g08 Print blkPage  ",
    (void *)1,			    	    "Exit                ",
    0,0
};


void K9g8g08_Menu(void)
{
    int i;
    U16 id;

	printf("\n[K9G8G08 NAND Flash JTAG Programmer]\n");
    K9g8g08_JtagInit();
    NF_Init();    
    

    id=NF_CheckId();
    
	if((id!=0xecd3)&&(id!=0xecd5)) // K9g808Q0A Device Id = dc    : msp4 2006/09/27
    {
		printf("ERROR: K9G8G08 or K9LAG08 is not detected.\n Detected ID=0x%x.\n",id);
		return;
    }
    else if (id == 0xecd3)
		printf("K9G8G08 is detected. ID=0x%x\n\n",id);
    else if (id == 0xecd5)
		printf("K9LAG08 is detected. ID=0x%x\n\n",id);

    while(1)
    {

	i=0;
    	while(1)
	{   //display menu
	    printf( "%2d : %s\n",i,function[i][1]);
	    i++;
	    if((int)(function[i][0])==0)
	    {
		printf("\n");
		break;
	    }	    
	}
	
	for(barcount=0;barcount<34;barcount++){
		bar[barcount] = '=';
		space[barcount] = ' ';
	}

	printf("Select the function to test : ");
	scanf("%d",&i);
	if( i>=0 && (i<((sizeof(function)/8)-2)) ) 
	    ( (void (*)(void)) (function[i][0]) )();  
	else
	    break; //Exit menu
    }
}

void K9g8g08_Program(void)
{
    U32 i;
    int programError=0;
    U32 blockIndex;
    int noLoad=0;    
    U32 percent=0;
    U32 progSize=0;

	printf("\n[SMC(K9g8g08Q0M) NAND Flash Writing Program]\n");    
    printf("\nSource size:0h~%xh\n",imageSize-1);
	printf("\nAvailable target block number : 0~4096\n"); // msp4 2006.09.27 
    printf("Input target block number : ");
    scanf("%d",&targetBlock);    
    blockIndex=targetBlock;
    printf("blockIndex = %d\n", blockIndex);
    while(1)
    {
	if(noLoad==0)
	{
		LoadImageFile(blockBuf,imageSize);
	}                                       
	noLoad=0;		
	
#if BAD_CHECK       
	if(NF_IsBadBlock(blockIndex) && blockIndex!=0 )	// 1:bad 0:good
	{
	    blockIndex++;   // for next block
	    noLoad=1;
	    continue;
	}
#endif

	for(i=0;i<(imageSize/(2048*128)+1);i++){
		if(!NF_EraseBlock(blockIndex + i))
		{
		    blockIndex++;   // for next block
		    noLoad=1;
		    continue;
		}
		printf("block #%d erase done\n",blockIndex + i);
	}
		
	srcPt=blockBuf;	

#if 0 // in case of "for(i=0;i<34;i++)", display.
	printf("Page Program |");
#else
	printf("page programing : #0");
#endif
	printf("%c",0x0D);
	

	//for(i=0;i<34;i++)
	for(i=0;i<(imageSize/2048 + 1);i++)
	{						
		/*********** fill 'spareBuf' for SPARE AREA ************/
		// must be added : 4 ~ 15(Spare Context) area. Data is 0xFF now.
		Make_4bit_ECC(16);// 16 ~ 23(Sector 0)
		Make_4bit_ECC(24);// 24 ~ 31(Sector 1)
		Make_4bit_ECC(32);// 32 ~ 39(Sector 2)
		Make_4bit_ECC(40);// 40 ~ 47(Sector 3)
		Make_4bit_SpareECC(48);// 48 ~ 55(Spare ECC)
		Make_4bit_SpareECC(56);// 56 ~ 63(Spare ECC Copy)		
		
		srcPt=blockBuf+(i*2048);// back to the 'srcPt' value.	
		/*******************************************************/	
		
		if(!NF_WritePage(blockIndex,i,srcPt,spareBuf))// block num, page num, buffer
	    {
	        programError=1;
	        break;
	    }

		srcPt+=2048;	// Increase buffer addr one page size

	    //printf("page #%d program done", i);

#if 0	// in case of "for(i=0;i<34;i++)", display.
	    printf("Page Program |");
	    for(barcount=0; barcount<(i+1); barcount++)
	    	printf("%c",bar[barcount]);
	    for(spacecount=0; spacecount<34-(i+1); spacecount++)
	    	printf("%c",space[spacecount]);
	    printf("| %d%% page #0 ~ #%d",(i+1)*3,i);
	    printf("%c",0x0D);
#else
		printf("page programing : #0 ~ #%d", i);
	    printf("%c",0x0D);
#endif
	}
	
	printf("\npage program done\n\n");
	//printf("block %d, %d program complete!\n\n", blockIndex, blockIndex+1);	
	
    if(programError==1)
	{
	    blockIndex++;
	    noLoad=1;
	    programError=0;
	    continue;
	}
	

	progSize+=imageSize;
	if(progSize>=imageSize)
	    break;	// Exit while loop
	    
	blockIndex++;	
    }
}

void K9g8g08_Program_SLC(void)
{
	U32 i, pagenum = 0;
    int programError=0;
    U32 blockIndex;
    int noLoad=0;    
    U32 progSize=0;

	printf("\n[SMC(K9g8g08Q0M) NAND Flash Writing Program]\n");
    
    printf("\nSource size:0h~%xh\n",imageSize-1);
	printf("\nAvailable target block number : 0~4096\n"); // msp4 2006.09.27 
    printf("Input target block number : ");
    scanf("%d",&targetBlock);    
    blockIndex=targetBlock;
    printf("blockIndex = %d\n", blockIndex);
    while(1)
    {
	if(noLoad==0)
	    LoadImageFile(blockBuf,0x40000);// 1block = 128page = 256KByte = 0x40000
		                                // but used the 34page.
	noLoad=0;
		
	
#if BAD_CHECK       
	if(NF_IsBadBlock(blockIndex) && blockIndex!=0 )	// 1:bad 0:good
	{
	    blockIndex++;   // for next block
	    noLoad=1;
	    continue;
	}
#endif

	if(!NF_EraseBlock(blockIndex))
	{
	    blockIndex++;   // for next block
	    noLoad=1;
	    continue;
	}
	
	printf("\nblock %d erase done\n",blockIndex);
	srcPt=blockBuf;	
	printf("Page Program |");
	printf("%c",0x0D);
	
	// K9G8G08(1 block = 128 page) 1st block
	//for(i=0;i<128;i++)    
	for(i=0;i<34;i++)    // Block 0 image : only 34 page
	{	
		/*********** fill 'spareBuf' for SPARE AREA ************/
		// must be added : 4 ~ 15(Spare Context) area. Data is 0xFF now.
		Make_1bit_ECC(16);// 16 ~ 19(Sector 0)
		Make_1bit_ECC(20);// 20 ~ 23(Sector 1)
		Make_1bit_ECC(24);// 24 ~ 27(Sector 2)
		Make_1bit_ECC(28);// 28 ~ 31(Sector 3)
				
		srcPt=blockBuf+(i*2048);// back to the 'srcPt' value.		
		/*******************************************************/	
		
	    if(!NF_WritePage(blockIndex,pagenum,srcPt,spareBuf))// block num, page num, buffer
	    {
	        programError=1;
	        break;
	    }
	    
	    pagenum = pagenum + 2;

		srcPt+=2048;	// Increase buffer addr one page size
	    
	    //printf("page #%d program done", i);	    
		printf("Page Program |");
	    for(barcount=0; barcount<(i+1); barcount++)
	    	printf("%c",bar[barcount]);
	    for(spacecount=0; spacecount<34-(i+1); spacecount++)
	    	printf("%c",space[spacecount]);
	    printf("| %d%% page #0 ~ #%d",(i+1)*3,i);
	    printf("%c",0x0D);
	}
	
	printf("page program done                                                     \n");
	printf("block %d program complete!\n\n", blockIndex);	
	
    if(programError==1)
	{
	    blockIndex++;
	    noLoad=1;
	    programError=0;
	    continue;
	}
	
	progSize+=0x40000;
	if(progSize>=imageSize)
	    break;	// Exit while loop
	    
	blockIndex++;	
    }
}

void K9g8g08_2Plain_Program(void)
{
    U32 i;
    int programError=0;
    U32 blockIndex;
    int noLoad=0;    
    U32 progSize=0;
    U32 percent=0;

	printf("\n[SMC(K9g8g08Q0M) NAND Flash two plane Writing Program]\n");
    
    printf("\nSource size:0h~%xh\n",imageSize-1);
    printf("Available target two plane block number : 0~2096\n");
    printf("Input target block number : ");
    scanf("%d",&targetBlock);   
    
    blockIndex=targetBlock;
    printf("two plane block index = %d\n", blockIndex);
    printf("physical block = %d, %d\n", blockIndex*2, blockIndex*2+1);
    while(1)
    {
	if(noLoad==0)
	{	    
	    LoadImageFile(blockBuf,0x80000);// 2block = 2*128page = 2*256KByte = 0x80000
	}
	noLoad=0;
		
	
#if BAD_CHECK       
	if(NF_IsBadBlock(blockIndex) && blockIndex!=0 )	// 1:bad 0:good
	{
	    blockIndex++;   // for next block
	    noLoad=1;
	    continue;
	}
#endif
	
	NF_EraseBlock(blockIndex*2);
	NF_EraseBlock(blockIndex*2+1);
		
	printf("\nblock %d, %d erase done\n",blockIndex*2,blockIndex*2+1);	
	srcPt=blockBuf;	
	printf("Page Program |");
	printf("%c",0x0D);
	
	// K9G8G08(1 block = 128 page) 2~3 block
	for(i=0;i<128;i++)    // if y download the testcode or OS image, y replace 4 to 64.
	{	
		/*********** fill 'spareBuf' for SPARE AREA ************/
		// must be added : 4 ~ 15(Spare Context) area. Data is 0xFF now.
		Make_4bit_ECC(16);// 16 ~ 23(Sector 0)
		Make_4bit_ECC(24);// 24 ~ 31(Sector 1)
		Make_4bit_ECC(32);// 32 ~ 39(Sector 2)
		Make_4bit_ECC(40);// 40 ~ 47(Sector 3)
		Make_4bit_SpareECC(48);// 48 ~ 55(Spare ECC)
		Make_4bit_SpareECC(56);// 56 ~ 63(Spare ECC Copy)	
		
		Make_4bit_ECC2(16);// 16 ~ 23(Sector 0)
		Make_4bit_ECC2(24);// 24 ~ 31(Sector 1)
		Make_4bit_ECC2(32);// 32 ~ 39(Sector 2)
		Make_4bit_ECC2(40);// 40 ~ 47(Sector 3)
		Make_4bit_SpareECC2(48);// 48 ~ 55(Spare ECC)
		Make_4bit_SpareECC2(56);// 56 ~ 63(Spare ECC Copy)	
		
		srcPt=blockBuf+(i*4096);// back to the 'srcPt' value.	
		/*******************************************************/	
		
		//printf("\nSpare Area #%d: ", i);
		//for(j=0;j<64;j++)
		//	printf("%X ",spareBuf[j]);
			
		//printf("\n");  		
	    
	    if(!NF_2Plane_WritePage(blockIndex,i,srcPt,spareBuf,spareBuf2))// block num, page num, buffer
	    {
	        programError=1;
	        break;
	    }
	    		
		srcPt+=4096;	// Increase buffer addr 2 page size
	 	percent = 0.78125*(i+1);
	    //printf("page #%d program done\n", i);
	    printf("Page Program |");
	    
	    for(barcount=0; barcount<(i/4+1); barcount++)
	    	printf("%c",bar[barcount]);
	    for(spacecount=0; spacecount<32-(i/4+1); spacecount++)
	    	printf("%c",space[spacecount]);
	    	
	    printf("| %d%% page #0 ~ #%d", percent, i);
	    printf("%c",0x0D);
	}
	
	printf("page program done                                                     \n");
	printf("block %d, %d two plane program complete!\n\n",blockIndex*2,blockIndex*2+1);

    if(programError==1)
	{
	    blockIndex++;
	    noLoad=1;
	    programError=0;
	    continue;
	}	

	progSize+=0x80000;
	if(progSize>=imageSize)
	    break;	// Exit while loop
	    
	blockIndex++;	
    }
}

/** MLC Spare Area Layout using like SLC(64Byte per 1page(2KByte)) **/
//
//  0      : Bad Mark(0xff)
//  1      : Clean Mark(0x00)
//  2 ~ 3  : Reserved(0xff)
//  4 ~ 15 : Spare context(0xff)
// 16 ~ 19 : Sector0 ECC
// 20 ~ 23 : Sector1 ECC
// 24 ~ 27 : Sector2 ECC
// 28 ~ 31 : Sector3 ECC
// 32 ~ 63 : NOT USED(0xff)
/********************************************************************/
void Make_1bit_ECC(int spareBuf_addr)
{
	int spareBuf_count=0;				
	
	//ECC_GenM(U8 *pEcc, U32 *pBuf, U8 nBW);
	ECC_GenM(chk_parity_1bitECC, srcPt, 0);
	srcPt += 512;
		
	for(spareBuf_count=0;spareBuf_count<4;spareBuf_count++)
		spareBuf[spareBuf_addr + spareBuf_count] = chk_parity_1bitECC[spareBuf_count];	
}



/** MLC Spare Area Layout(64Byte per 1page(2KByte)) **/
//
//  0      : Bad Mark(0xff)
//  1      : Clean Mark(0x00)
//  2 ~ 3  : Reserved(0xff)
//  4 ~ 15 : Spare context(0xff)
// 16 ~ 23 : Sector0 ECC
// 24 ~ 31 : Sector1 ECC
// 32 ~ 39 : Sector2 ECC
// 40 ~ 47 : Sector3 ECC
// 48 ~ 55 : Spare ECC
// 56 ~ 63 : Spare ECC Copy
/*****************************************************/

void Make_4bit_ECC(int spareBuf_addr) 
{	
	int spareBuf_count=0;		
		
	enc_reg(msg_len, srcPt, chk_parity);// msg_len = 512
	srcPt += 512;
		
	for(spareBuf_count=0;spareBuf_count<8;spareBuf_count++)
		spareBuf[spareBuf_addr + spareBuf_count] = chk_parity[spareBuf_count];	
}

void Make_4bit_ECC2(int spareBuf_addr) 
{	
	int spareBuf_count=0;		
		
	enc_reg(msg_len, srcPt, chk_parity);// msg_len = 512
	srcPt += 512;
		
	for(spareBuf_count=0;spareBuf_count<8;spareBuf_count++)
		spareBuf2[spareBuf_addr + spareBuf_count] = chk_parity[spareBuf_count];	
}

void Make_4bit_SpareECC(int spareBuf_addr) 
{	
	int spareBuf_count=0, i;		
		
	for(i=0;i<512;i++)
		spareECC_Buf[i] = 0xFF;
		
	for(i=0;i<44;i++)
		spareECC_Buf[i] = spareBuf[i+4];// spareECC_Buf : 512 buffer, spareBuf : 64 buffer

	enc_reg(msg_len, spareECC_Buf, chk_parity);// msg_len = 512
		
	for(spareBuf_count=0;spareBuf_count<8;spareBuf_count++)
		spareBuf[spareBuf_addr + spareBuf_count] = chk_parity[spareBuf_count];	
}

void Make_4bit_SpareECC2(int spareBuf_addr) 
{	
	int spareBuf_count=0, i;		
		
	for(i=0;i<512;i++)
		spareECC_Buf2[i] = 0xFF;
		
	for(i=0;i<44;i++)
		spareECC_Buf2[i] = spareBuf2[i+4];// spareECC_Buf2 : 512 buffer, spareBuf2 : 64 buffer

	enc_reg(msg_len, spareECC_Buf2, chk_parity);// msg_len = 512
		
	for(spareBuf_count=0;spareBuf_count<8;spareBuf_count++)
		spareBuf2[spareBuf_addr + spareBuf_count] = chk_parity[spareBuf_count];	
}

void K9g8g08_PrintBlock(void)// Printf one page
{
    int i;
    U16 id;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩成人高清在线一区| 国产精品综合久久| 久久97超碰色| 91亚洲永久精品| 精品久久久久久无| 一区二区视频在线| 国产精品一区二区在线观看网站| 欧美日韩激情一区二区三区| 国产精品久久久一区麻豆最新章节| 日本欧美大码aⅴ在线播放| 91香蕉视频在线| 久久人人爽人人爽| 色久优优欧美色久优优| 久久久综合激的五月天| 久久国产夜色精品鲁鲁99| 欧亚一区二区三区| 亚洲男同性恋视频| 粉嫩绯色av一区二区在线观看| 日韩精品在线看片z| 午夜a成v人精品| 欧美亚洲综合久久| 亚洲愉拍自拍另类高清精品| 成人激情黄色小说| 欧美高清在线一区二区| 麻豆一区二区三| 欧美精品777| 亚洲福利一区二区三区| 欧美怡红院视频| 一区二区三区欧美| 日本道色综合久久| 亚洲电影在线播放| 欧美日韩国产三级| 亚洲成a天堂v人片| 555www色欧美视频| 免费高清视频精品| 欧美哺乳videos| 激情欧美日韩一区二区| 久久综合给合久久狠狠狠97色69| 国产在线视频不卡二| 久久午夜色播影院免费高清| 国产成人午夜精品影院观看视频| 久久精品视频一区二区| 懂色av一区二区三区蜜臀| 欧美国产日韩a欧美在线观看| 成人av资源在线| 综合久久久久综合| 欧美日韩国产一级| 日本免费在线视频不卡一不卡二| 日韩欧美在线网站| 国产成人av电影在线| 国产精品久久久久国产精品日日| 色激情天天射综合网| 日韩av在线播放中文字幕| 精品国产乱码久久久久久影片| 国产做a爰片久久毛片| 亚洲欧洲日韩一区二区三区| 欧美午夜精品一区| 久久国产婷婷国产香蕉| 国产精品超碰97尤物18| 欧美日韩午夜在线视频| 美国十次综合导航| 综合av第一页| 欧美一级生活片| 成人午夜激情视频| 亚洲电影一级黄| 久久久亚洲综合| 欧日韩精品视频| 国产精品一区二区免费不卡 | 亚洲视频狠狠干| 欧美在线三级电影| 免费精品99久久国产综合精品| 亚洲一区二区综合| 日韩午夜在线观看视频| 高清成人在线观看| 五月综合激情日本mⅴ| 亚洲国产成人自拍| 欧美卡1卡2卡| 99国产精品一区| 裸体歌舞表演一区二区| 一区二区三区四区蜜桃| 国产人久久人人人人爽| 欧美日本一道本| 色呦呦一区二区三区| 国产精品 日产精品 欧美精品| 亚洲欧美日韩一区| 国产日韩欧美高清在线| 在线不卡欧美精品一区二区三区| 成人av在线播放网站| 经典三级一区二区| 午夜伊人狠狠久久| 最新欧美精品一区二区三区| 欧美精品一区二区在线观看| 欧美日韩中文国产| 91捆绑美女网站| 丰满放荡岳乱妇91ww| 国内精品伊人久久久久av影院| 亚洲高清免费在线| 依依成人综合视频| 自拍偷拍亚洲欧美日韩| 亚洲国产成人午夜在线一区| 精品国产乱码久久久久久久久 | 91精品国产手机| 91福利精品第一导航| 不卡区在线中文字幕| 国产激情视频一区二区三区欧美 | 成人精品视频一区二区三区| 韩国三级在线一区| 狂野欧美性猛交blacked| 日韩成人一级大片| 亚洲成av人片观看| 午夜精品久久久久久久| 亚洲成人av福利| 天堂在线一区二区| 日韩国产精品久久久久久亚洲| 亚洲成人资源在线| 日韩电影免费一区| 美女视频黄免费的久久| 六月丁香婷婷色狠狠久久| 日本中文字幕不卡| 久久不见久久见免费视频7| 久久成人免费日本黄色| 激情图区综合网| 懂色av一区二区三区免费看| 成人免费视频视频在线观看免费 | 九九精品一区二区| 精彩视频一区二区三区| 国内欧美视频一区二区| 丁香亚洲综合激情啪啪综合| 成人小视频免费在线观看| 99久久夜色精品国产网站| 91视频免费观看| 国产精品毛片a∨一区二区三区| 国产精品久久久久影院色老大| 综合久久国产九一剧情麻豆| 一区2区3区在线看| 美女脱光内衣内裤视频久久影院| 美女任你摸久久| 国产精品99久久久久久宅男| 不卡av免费在线观看| 欧美视频自拍偷拍| 精品欧美一区二区久久 | 精品国产一区二区亚洲人成毛片| 久久久99精品免费观看| 综合分类小说区另类春色亚洲小说欧美 | 4438亚洲最大| 久久久不卡网国产精品二区| 中文字幕字幕中文在线中不卡视频| 亚洲国产综合在线| 国模无码大尺度一区二区三区| jiyouzz国产精品久久| 欧美日韩国产综合久久| 久久久91精品国产一区二区三区| 亚洲欧洲日韩av| 久草精品在线观看| 色综合咪咪久久| 久久夜色精品国产噜噜av| 最新久久zyz资源站| 日本一不卡视频| 一本色道久久加勒比精品| 日韩欧美美女一区二区三区| 亚洲天堂福利av| 狠狠色丁香久久婷婷综| 欧美性猛交xxxxxxxx| 欧美国产一区视频在线观看| 午夜在线成人av| 99视频超级精品| 久久影院视频免费| 97久久人人超碰| 久久在线观看免费| 天天影视网天天综合色在线播放| 成人黄色小视频| 久久网这里都是精品| 日韩精品久久理论片| 91免费看视频| 国产精品视频在线看| 精品一区二区三区在线播放视频| 欧美中文一区二区三区| 中文av一区特黄| 久久精品国产精品亚洲精品| 欧美午夜精品免费| 亚洲美女区一区| 成人爱爱电影网址| 久久久精品人体av艺术| 久久精品国产**网站演员| 欧美日韩高清不卡| 亚洲国产成人高清精品| 日本精品视频一区二区| 亚洲天堂2014| bt7086福利一区国产| 国产精品美女一区二区在线观看| 激情图片小说一区| 日韩免费高清视频| 蜜乳av一区二区| 日韩欧美国产一区在线观看| 日韩成人dvd| 日韩一区二区在线看| 免费美女久久99| 精品国产一区二区国模嫣然| 久久国产免费看| 日韩精品一区二区在线|