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

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

?? nand.c

?? 一份在S3c2440上實(shí)現(xiàn)NANDFlASH上讀寫的源代碼程序
?? C
字號(hào):
//====================================================================
// File Name : Nand.c
// Function  : S3C2440 8-bit interface Nand Test program(this program use K9k2g16.c).
// Date      : May xx, 2003
// Version   : 0.0
// History
//   R0.0 (200305xx): Modified for 2440 from 2410. -> DonGo
//====================================================================


/**************** K9s1208 NAND flash ********************/
// 1block=(512+16)bytes x 32pages
// 4096block
// Block: A[23:14], Page: [13:9]
/**************** K9K2G16 NAND flash *******************/
// 1block=(2048+64)bytes x 64pages
// 2048block
// Block: A[23:14], page: [13:9]
/*****************************************************/
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "Nand.h"


#define BAD_CHECK	(0)
#define ECC_CHECK	(0)

U8 NF8_Spare_Data[16];
U8  buf[512];
volatile int NFConDone;


#define NF_MECC_UnLock()    {rNFCONT&=~(1<<5);}  //Unlock Main data area ECC generation
#define NF_MECC_Lock()      {rNFCONT|=(1<<5);}   //Lock Main data area ECC generation
#define NF_SECC_UnLock()    {rNFCONT&=~(1<<6);}  //Unlock Spare ECC
#define NF_SECC_Lock()      {rNFCONT|=(1<<6);}   //Lock Spare ECC
#define NF_CMD(cmd)			{rNFCMD=cmd;}      //command to nand flash
#define NF_ADDR(addr)		{rNFADDR=addr;}    //address to nand flash	
#define NF_nFCE_L()			{rNFCONT&=~(1<<1);}  //Force nFCE to low(Enable chip select)
#define NF_nFCE_H()			{rNFCONT|=(1<<1);}   //Force nFCE to High(Disable chip select)
#define NF_RSTECC()			{rNFCONT|=(1<<4);}   //Initialize ECC decoder/encoder
#define NF_RDDATA() 		(rNFDATA)          //read data from nand
#define NF_RDDATA8() 		((*(volatile unsigned char*)0x4E000010) ) //read Byte from nand 
#define NF_WRDATA(data) 	{rNFDATA=data;}    //write data to nand
#define NF_WRDATA8(data) 	{rNFDATA8=data;}   //write Byte to nand
// RnB Signal
#define NF_CLEAR_RB()    		{rNFSTAT |= (1<<2);}	// Have write '1' to clear this bit.
#define NF_DETECT_RB()    		{while(!(rNFSTAT&(1<<2)));}//0: RnB transition is not detected

// HCLK=100Mhz
#define TACLS		7	// 1-clk(0ns) 
#define TWRPH0		7	// 3-clk(25ns)
#define TWRPH1		7	// 1-clk(10ns)  //TACLS+TWRPH0+TWRPH1>=50ns

void __irq NFCon_Int(void);

static U8 se8Buf[16]={
	0xff,0xff,0xff,0xff,
	0xff,0xff,0xff,0xff,
	0xff,0xff,0xff,0xff,
	0xff,0xff,0xff,0xff
};

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

/**** nand flash 塊擦除函數(shù) ****/
int NF8_EraseBlock(U32 block)
{
	U32 blockPage;
	blockPage=(block<<5);
	
	if((Read_Status()&0x80)==0) 
	{
	    Uart_Printf("Write protected.\n");
	    return FAIL;
	}
	
  
    NFConDone=0;
    rNFCONT|=(1<<9);
    rNFCONT|=(1<<10);
    pISR_NFCON= (unsigned)NFCon_Int;
    rSRCPND=BIT_NFCON;
    rINTMSK=~(BIT_NFCON);

	NF_nFCE_L();
    
	NF_CMD(0x60);   // Erase one block 1st command, Block Addr:A9-A25
	// Address 3-cycle
	NF_ADDR(blockPage&0xff);	    // Page number=4095
	NF_ADDR((blockPage>>8)&0xff);   
	NF_ADDR((blockPage>>16)&0xff);


	NF_CLEAR_RB();
	NF_CMD(0xd0);	// Erase one blcok 2nd command
    
    while(NFConDone==0);
	
	rNFCONT&=~(1<<9);
	rNFCONT&=~(1<<10); // Disable Illegal Access Interrupt
	if(rNFSTAT&0x8) return FAIL;

	NF_CMD(0x70);   // Read status command

    if (NF_RDDATA()&0x1) // Erase error
    {	
        NF_nFCE_H();
	    Uart_Printf("[ERASE_ERROR:block#=%d]\n",block);
     	NF8_MarkBadBlock(block);
	return FAIL;
       }
       else 
       {
    	NF_nFCE_H();
       return OK;
       }
}


void __irq NFCon_Int(void)
{
       NFConDone=1;
	rINTMSK|=BIT_NFCON;
	ClearPending(BIT_NFCON);
	if(rNFSTAT&0x8) Uart_Printf("Illegal Access is detected!!!\n");
}


/**** nand flash 壞塊屏蔽函數(shù) ****/
int NF8_MarkBadBlock(U32 block)
{
    int i;
	U32 blockPage=(block<<5);
 
     se8Buf[0]=0xff;
     se8Buf[1]=0xff;    
     se8Buf[2]=0xff;    
     se8Buf[5]=0x44;   // Bad blcok mark=44
    
	NF_nFCE_L(); 
	NF_CMD(0x50);   //????
	NF_CMD(0x80);   // Write 1st command
    
	NF_ADDR(0x0);		    // The mark of bad block is 
	NF_ADDR(blockPage&0xff);	    // marked 5th spare array 
	NF_ADDR((blockPage>>8)&0xff);   // in the 1st page.
	NF_ADDR((blockPage>>16)&0xff);  //
    
	for(i=0;i<16;i++)
      {
	   NF_WRDATA(se8Buf[i]);	// Write spare array
      }

	NF_CLEAR_RB();
	NF_CMD(0x10);   // Write 2nd command
	NF_DETECT_RB();

	NF_CMD(0x70);
    
	for(i=0;i<3;i++);  //twhr=60ns////??????
    
      if (NF_RDDATA()&0x1) // Spare arrray write error
      {	
    	NF_nFCE_H();
    	Uart_Printf("[Program error is occurred but ignored]\n");
       }
      else 
      {
    	NF_nFCE_H();
      }

	Uart_Printf("[block #%d is marked as a bad block]\n",block);
       return OK;
}

/**** nand flash 頁讀取函數(shù) ****/
int NF8_ReadPage(U32 block,U32 page,U8 *buffer)
{
    int i;
    unsigned int blockPage;
	U32 Mecc, Secc;
	    
    blockPage=(block<<5)+page;
	NF_RSTECC();    // Initialize ECC
	NF_MECC_UnLock();
    
	NF_nFCE_L();    

	NF_CLEAR_RB();
	NF_CMD(0x00);	// Read command
	NF_ADDR(0); 	// Column = 0
	NF_ADDR(blockPage&0xff);		//
	NF_ADDR((blockPage>>8)&0xff);	// Block & Page num.
	NF_ADDR((blockPage>>16)&0xff);	//
	NF_DETECT_RB();
	 
	for(i=0;i<512;i++)
	    	buffer[i] = NF_RDDATA8();	// Read one page
	     
	 NF_MECC_Lock();

	 NF_SECC_UnLock();
	 Mecc=NF_RDDATA();
	 rNFMECCD0=((Mecc&0xff00)<<8)|(Mecc&0xff);
	 rNFMECCD1=((Mecc&0xff000000)>>8)|((Mecc&0xff0000)>>16);
	
	 NF_SECC_Lock();
	 NF8_Spare_Data[0]=Mecc&0xff;
	 NF8_Spare_Data[1]=(Mecc&0xff00)>>8;
	 NF8_Spare_Data[2]=(Mecc&0xff0000)>>16;
	 NF8_Spare_Data[3]=(Mecc&0xff000000)>>24;
	 NF_RDDATA();  // read 4~7
	 Secc=NF_RDDATA();
	 rNFSECCD=((Secc&0xff00)<<8)|(Secc&0xff);
	 NF8_Spare_Data[8]=Secc&0xff;
	 NF8_Spare_Data[9]=(Secc&0xff00)>>8;
	 NF8_Spare_Data[10]=(Secc&0xff0000)>>16;
	 NF8_Spare_Data[11]=(Secc&0xff000000)>>24;
	 NF_nFCE_H();    

	 if ((rNFESTAT0&0xf) == 0x0){
	       Uart_Printf("ECC OK!\n");
		return OK;
	 }
	 else {
		Uart_Printf("ECC FAIL!\n");
	       return FAIL;
	 }


}

/**** nand flash 頁寫函數(shù) ****/
int NF8_WritePage(U32 block,U32 page,U8 *buffer)
{
    int i;
	U32 blockPage, Mecc, Secc;
	
	NFConDone=0;
    
    rNFCONT|=(1<<9);
    rNFCONT|=(1<<10);
    pISR_NFCON= (unsigned)NFCon_Int;
    rSRCPND=BIT_NFCON;
    rINTMSK=~(BIT_NFCON);
	  
	NF_RSTECC();    // Initialize ECC
    NF_MECC_UnLock();
	
	blockPage=(block<<5)+page;

	NF_nFCE_L(); 
	NF_CMD(0x0);//
	NF_CMD(0x80);   // Write 1st command
	NF_ADDR(0);			    // Column 0
	NF_ADDR(blockPage&0xff);	    //
	NF_ADDR((blockPage>>8)&0xff);   // Block & page num.
	NF_ADDR((blockPage>>16)&0xff);  //
     
	for(i=0;i<512;i++)
		NF_WRDATA8(buffer[i]);	// Write one page to NFM from buffer
     

    NF_MECC_Lock();
	// Get ECC data.
	// Spare data for 8bit
	// byte  0     1    2     3     4          5               6      7            8         9
	// ecc  [0]  [1]  [2]  [3]    x   [Bad marking]                    SECC0  SECC1
	Mecc = rNFMECC0;
	se8Buf[0]=(U8)(Mecc&0xff);
	se8Buf[1]=(U8)((Mecc>>8) & 0xff);
	se8Buf[2]=(U8)((Mecc>>16) & 0xff);
	se8Buf[3]=(U8)((Mecc>>24) & 0xff);
	se8Buf[5]=0xff;		// Marking good block

	NF_SECC_UnLock();
	//Write extra data(ECC, bad marking)
	for(i=0;i<4;i++) {
		NF_WRDATA8(se8Buf[i]);	// Write spare array(Main ECC)
		NF8_Spare_Data[i]=se8Buf[i];
    	}  
    
    NF_SECC_Lock(); 
	Secc=rNFSECC; 
	se8Buf[8]=(U8)(Secc&0xff);
	se8Buf[9]=(U8)((Secc>>8) & 0xff);
	for(i=4;i<16;i++) {
		NF_WRDATA8(se8Buf[i]);  // Write spare array(Spare ECC and Mark)
		NF8_Spare_Data[i]=se8Buf[i];
	}  
 	NF_CLEAR_RB();
	NF_CMD(0x10);	 // Write 2nd command
	while(NFConDone==0);
	 rNFCONT&=~(1<<9);
	 rNFCONT&=~(1<<10); // Disable Illegal Access Interrupt
	 if(rNFSTAT&0x8) return FAIL;

	NF_CMD(0x70);   // Read status command   
    
	for(i=0;i<3;i++);  //twhr=60ns
    
       if (NF_RDDATA()&0x1) {// Page write error
    	       NF_nFCE_H();
		Uart_Printf("[PROGRAM_ERROR:block#=%d]\n",block);
		NF8_MarkBadBlock(block);
		return FAIL;
       } else {
    	      NF_nFCE_H();
	      return OK;
	}

}


/**** nand flash ID 讀取函數(shù) ****/
U16 NF8_CheckId(void)
{
    int i;
	U16 id;
    
	NF_nFCE_L();
    NF_CMD(0x90);
	NF_ADDR(0x0);
	for (i=0; i<10; i++);
	id=NF_RDDATA8()<<8;	// Maker code 0xec
    id|=NF_RDDATA8();	// Devide code(K9S1208V:0x76)

	NF_nFCE_H();
    return id;
}

/**** nand flash 復(fù)位 ****/
void Nand_Reset(void)
{
    int i;
   
	NF_nFCE_L();

	NF_CLEAR_RB();
	NF_CMD(0xFF);	//reset command
	for(i=0;i<10;i++);  //tWB = 100ns. 
	NF_DETECT_RB();
	
	NF_nFCE_H();

}

/**** 讀nand flash 狀態(tài) ****/
U8 Read_Status(void)
{
	// Read status
	U8 ch;
	int i;
	
	NF_nFCE_L();

	NF_CMD(0x70);
	for(i=0; i<10; i++);
	ch = NF_RDDATA();
	
	NF_nFCE_H();
	return ch;
}

/**** nand flash 初始化 ****/
void NF8_Init(void)
{
	// for S3C2440
    rGPACON = (rGPACON &~(0x3f<<17)) | (0x3f<<17);
	
	rNFCONF = (TACLS<<12)|(TWRPH0<<8)|(TWRPH1<<4)|(0<<0);	
	// TACLS		[14:12]	CLE&ALE duration = HCLK*TACLS.
	// TWRPH0		[10:8]	TWRPH0 duration = HCLK*(TWRPH0+1)
	// TWRPH1		[6:4]	TWRPH1 duration = HCLK*(TWRPH1+1)
	// AdvFlash(R)	[3]		Advanced NAND, 0:256/512, 1:1024/2048
	// PageSize(R)	[2]		NAND memory page size
	//						when [3]==0, 0:256, 1:512 bytes/page.
	//						when [3]==1, 0:1024, 1:2048 bytes/page.
	// AddrCycle(R)	[1]		NAND flash addr size
	//						when [3]==0, 0:3-addr, 1:4-addr.
	//						when [3]==1, 0:4-addr, 1:5-addr.
	// BusWidth(R/W) [0]	NAND bus width. 0:8-bit, 1:16-bit.
	
	rNFCONT = (0<<13)|(0<<12)|(0<<10)|(0<<9)|(0<<8)|(1<<6)|(1<<5)|(1<<4)|(1<<1)|(1<<0);
	// Lock-tight	[13]	0:Disable lock, 1:Enable lock.
	// Soft Lock	[12]	0:Disable lock, 1:Enable lock.
	// EnablillegalAcINT[10]	Illegal access interupt control. 0:Disable, 1:Enable
	// EnbRnBINT	[9]		RnB interrupt. 0:Disable, 1:Enable
	// RnB_TrandMode[8]		RnB transition detection config. 0:Low to High, 1:High to Low
	// SpareECCLock	[6]		0:Unlock, 1:Lock
	// MainECCLock	[5]		0:Unlock, 1:Lock
	// InitECC(W)	[4]		1:Init ECC decoder/encoder.
	// Reg_nCE		[1]		0:nFCE=0, 1:nFCE=1.
	// NANDC Enable	[0]		operating mode. 0:Disable, 1:Enable.

}


/**** 串口輸出nand壞塊號(hào) ****/
void NF8_PrintBadBlockNum(void)
{
    int i;
    U16 id;

    Uart_Printf("\n[SMC(K9S1208V0M) NAND Flash bad block check]\n");
    
    id=NF8_CheckId();
    Uart_Printf("ID=%x(0xec76)\n",id);
    if(id!=0xec76)
    return;
    for(i=0;i<4096;i++)  	NF8_IsBadBlock(i);   // Print bad block
}


/**** nand flash 壞塊判斷函數(shù) ****/
int NF8_IsBadBlock(U32 block)
{
    unsigned int blockPage;
    U8 data;
    blockPage=(block<<5);	// For 2'nd cycle I/O[7:5] 
    
	NF_nFCE_L();
	NF_CLEAR_RB();

	NF_CMD(0x50);		 // Spare array read command
	NF_ADDR((512+5)&0xf);		 // Read the mark of bad block in spare array(M addr=5), A4-A7:Don't care
	NF_ADDR(blockPage&0xff);	 // The mark of bad block is in 0 page
	NF_ADDR((blockPage>>8)&0xff);	 // For block number A[24:17]
	NF_ADDR((blockPage>>16)&0xff);  // For block number A[25]
	 
	NF_DETECT_RB();	 // Wait tR(max 12us)

       data=NF_RDDATA();

	NF_nFCE_H();    

     if(data!=0xff)
     {
    	Uart_Printf("[block %d has been marked as a bad block(%x)]\n",block,data);
    	return FAIL;
     }
     else
     {
    	return OK;
     }
}



/**** nand flash 軟件解鎖函數(shù) ****/
void Test_NF8_SoftUnLock(void)
{
	Uart_Printf("SMC(K9S1208V0M) NAND SoftUnLock Test !!!\n");
	
	rNFSBLK=0x0;
	rNFEBLK=0x0;

	rNFCONT&=~(1<<12);
	if(rNFCONT&(1<<13)){
		rNFCONT&=~(1<<13);
		Uart_Printf("Lock-tight\n ");
		Uart_Printf("You can't unlock Protected blocks !!!\n ");
		Uart_Printf("%d block ~ %d block are Programmable\n ", (rNFSBLK>>5), ((rNFEBLK>>5)-1));
	}
       else Uart_Printf("All blocks are Programmable\n ");
}

/**** nand flash 軟件鎖定試函數(shù) ****/
void NF8_Block_Lock(void)
{
       U32 num;
       U32 S_block, E_block;
	Uart_Printf("SMC(K9S1208V0M) NAND Lock Test !!!\n");
	Uart_Printf("Select Lock type, Softlock(1)/Lock-tight(2) : ");

	num=Uart_GetIntNum();;
			
	Uart_Printf("\nEnter programmable start block address ");
	S_block = Uart_GetIntNum();
	Uart_Printf("Enter programmable end block address ");
    E_block = Uart_GetIntNum();

	rNFSBLK=(S_block<<5);
	rNFEBLK=(E_block<<5);
	
	if(num==1){
		rNFCONT|=(1<<12);
              Uart_Printf("Software Locked\n ");
	}
	if(num==2){
		rNFCONT|=(1<<13);
              Uart_Printf("Lock-tight: To clear Lock-tight, reset S3C2440!!!\n ");
	}
      Uart_Printf("%d block ~ %d block are Programmable\n ", S_block, (E_block-1));
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级高清片在线观看| 日韩欧美的一区二区| 美女任你摸久久| 亚洲国产精品t66y| 欧美性感一区二区三区| 久久成人av少妇免费| 一区二区在线观看免费| 2020国产精品自拍| 欧美日韩久久久久久| 国产99精品视频| 免费亚洲电影在线| 亚洲综合激情另类小说区| 欧美国产成人精品| 精品久久久久香蕉网| 欧美日韩夫妻久久| 色婷婷精品久久二区二区蜜臂av| 日韩精品中文字幕在线一区| 成人免费看片app下载| 99国产精品久久| 欧美国产一区二区| 在线不卡中文字幕| 色婷婷综合激情| 欧美成人一区二区三区| 日韩精品一二三四| 亚洲欧美激情插| 日本免费新一区视频| 久久成人免费网| 国产成人av影院| 色综合天天综合狠狠| 欧美日本国产视频| 日韩三级.com| 国产欧美日韩精品在线| 一区二区在线观看免费 | 欧美剧情片在线观看| 宅男在线国产精品| 国产午夜精品一区二区三区四区| 欧美日韩日日夜夜| 欧美成人a在线| 日韩一区在线播放| 亚洲国产精品天堂| 九一久久久久久| 91麻豆国产精品久久| 欧美日韩一区二区三区视频| 久久这里都是精品| 亚洲人午夜精品天堂一二香蕉| 欧美精品一区二区三区久久久| 91精品国产综合久久小美女| 久久久久国产免费免费| 亚洲欧美福利一区二区| 奇米综合一区二区三区精品视频| 亚洲动漫第一页| 国产麻豆午夜三级精品| 91精品1区2区| 久久夜色精品国产欧美乱极品| 欧美mv日韩mv国产网站app| 中文字幕亚洲区| 日韩va欧美va亚洲va久久| 国产v日产∨综合v精品视频| 欧美日韩精品一区二区三区| 国产日韩一级二级三级| 日韩高清中文字幕一区| 91麻豆福利精品推荐| 精品久久久久久亚洲综合网| 亚洲一级二级在线| 国产91精品免费| 日韩一区二区电影在线| 亚洲你懂的在线视频| 国产精品一区二区免费不卡| 欧美日韩精品一二三区| 亚洲视频在线观看一区| 国产精品资源在线观看| 欧美丰满嫩嫩电影| 中文字幕一区二区三| 韩国女主播成人在线| 欧美男生操女生| 亚洲免费观看视频| 国产成人在线免费| 精品捆绑美女sm三区| 日韩成人一区二区| 在线观看日韩电影| 国产精品久久久久久久久动漫| 中文字幕一区二区在线播放| 国内精品国产成人国产三级粉色| 国内一区二区在线| 日韩亚洲欧美中文三级| 亚洲综合色在线| av不卡在线播放| 国产亚洲欧美日韩在线一区| 蜜臀av性久久久久av蜜臀妖精| 国产米奇在线777精品观看| 欧美一区二区三级| 亚洲a一区二区| 欧美日韩黄视频| 亚洲国产精品影院| 91国产精品成人| 最近中文字幕一区二区三区| 国产**成人网毛片九色 | 欧美一区二区观看视频| 一区二区三区丝袜| 色婷婷激情久久| 亚洲同性gay激情无套| 成人一区二区视频| 国产日韩成人精品| 国产不卡一区视频| 国产亚洲欧美日韩在线一区| 国产精品一区免费视频| 久久夜色精品国产欧美乱极品| 亚洲精品伦理在线| 91欧美激情一区二区三区成人| 欧美日韩视频第一区| 亚洲成av人片在www色猫咪| 欧美精品亚洲二区| 日韩成人dvd| 精品久久久久99| 国产成人综合自拍| 国产精品萝li| 在线观看三级视频欧美| 日韩精品五月天| 精品国产sm最大网站免费看 | 久久99九九99精品| 精品日韩一区二区| 国产精品正在播放| 中文字幕免费不卡| 色综合一区二区| 亚洲va国产va欧美va观看| 欧美一区二区三区公司| 国产精品538一区二区在线| 中文字幕乱码亚洲精品一区| 成人在线综合网| 亚洲综合免费观看高清在线观看 | 精品日韩在线一区| 国产盗摄精品一区二区三区在线| 欧美日韩视频在线一区二区| 免费三级欧美电影| 日本一区二区三区免费乱视频| 美国欧美日韩国产在线播放| 久久久久国产精品人| 99re这里只有精品视频首页| 亚洲一区二区三区美女| 日韩欧美精品在线视频| 成人白浆超碰人人人人| 天堂蜜桃一区二区三区| 欧美激情一区二区三区四区| 色欧美88888久久久久久影院| 国产精品免费视频网站| 一本在线高清不卡dvd| 日本亚洲免费观看| 亚洲国产成人自拍| 欧美日韩精品一区二区| 国产成人午夜99999| 亚洲一区在线观看免费| 亚洲精品一区在线观看| 91免费观看国产| 久久不见久久见免费视频7| 亚洲日本免费电影| 欧美本精品男人aⅴ天堂| 色妞www精品视频| 麻豆精品视频在线观看| 亚洲日本护士毛茸茸| 精品va天堂亚洲国产| 在线免费观看不卡av| 国产一区999| 婷婷夜色潮精品综合在线| 国产免费久久精品| 717成人午夜免费福利电影| 懂色av一区二区三区免费看| 天天综合天天综合色| 国产精品灌醉下药二区| 日韩欧美亚洲一区二区| 日本福利一区二区| 国产a久久麻豆| 青青草成人在线观看| 一区二区三区在线观看国产 | 国产精品婷婷午夜在线观看| 在线播放日韩导航| www.成人网.com| 精品制服美女久久| 午夜精品久久久久久久久久| 国产精品乱人伦中文| 久久久久久麻豆| 日韩精品专区在线影院观看| 欧美人妇做爰xxxⅹ性高电影| 日本不卡在线视频| 亚洲免费观看高清完整版在线 | 韩国欧美国产一区| 午夜视频一区在线观看| 亚洲精品中文在线影院| 中文字幕第一区| 国产亚洲短视频| 欧美精品一区二区在线播放| 欧美一级一级性生活免费录像| 韩国三级电影一区二区| 日韩av成人高清| 三级久久三级久久| 亚洲国产日韩在线一区模特| 一区二区三区在线观看国产| 一区二区三区视频在线看| 综合分类小说区另类春色亚洲小说欧美| 色伊人久久综合中文字幕| 丁香婷婷综合五月|