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

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

?? nand.c

?? 三星公司S3c2443的測試程序源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
	if(rNFSTAT&0x20) return FAIL;

	NF_CMD(0x70);   // Read status command

      if (NF_RDDATA()&0x1) // Erase error
      {	
    	NF_nFCE_H();
		rGPGDAT|=(1<<1);
		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;
    
//  printf("Interrupt is occurred!!!\n");
//rINTMSK|=BIT_NFCON;
	ClearPending(BIT_NFCON);
	if(rNFSTAT&0x20) printf("Illegal Access is detected!!!\n");
	else if(rNFSTAT&0x10)
	{
		rNFSTAT|=0x10;
//		printf("RnB is Detected!!!\n");
	}
	else if(rNFSTAT&0x80) 
	{
		NFECCEncDone=1;
		rNFSTAT|=0x80;
		printf("ECC encoding is completed!!!\n");
	}
	else if(rNFSTAT&0x40) 
	{
		NFECCDecDone=1;
		rNFSTAT|=0x40;	
		printf("ECC decoding is completed!!!\n"); 
	}
	
}


static int NF8_IsBadBlock(U32 block)
{
    int i;
    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)
     {
    	printf("[block %d has been marked as a bad block(%x)]\n",block,data);
    	return FAIL;
     }
     else
     {
    	return OK;
     }
}


static int Adv_NF8_IsBadBlock(U32 block)
{
    int i;
    unsigned int blockPage;
	U8 data;
    
    
    blockPage=(block<<6);	// For 2'nd cycle I/O[7:5] 
    
	NF_nFCE_L();
	NF_CLEAR_RB();

	NF_CMD(0x00);		 // read command
	NF_ADDR((2048+0)&0xff);			// 2060 = 0x080c
	NF_ADDR(((2048+0)>>8)&0xff);		// A[10:8]
	NF_ADDR((blockPage)&0xff);		// A[11;18]
	NF_ADDR((blockPage>>8)&0xff);	// A[26:19]
	NF_ADDR((blockPage>>16)&0xff);	// A27
	NF_CMD(0x30);	// 2'nd command
	
	NF_DETECT_RB();	 // Wait tR(max 12us)

    data=NF_RDDATA();

	NF_nFCE_H();    

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


static 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();
    	printf("[Program error is occurred but ignored]\n");
       }
      else 
      {
    	NF_nFCE_H();
      }

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


static int NF8_ReadPage(U32 block,U32 page,U8 *buffer)
{
    
    U32 i, blockPage;
	U32 Mecc, Secc;
	U8 *bufPt=buffer;
	U8 se[16], ecc0, ecc1, ecc2, ecc3;
    
    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();
	 
	
    #if TRANS_MODE==C_LANG
	    for(i=0;i<512;i++) {
	   	*bufPt++=NF_RDDATA8();	// Read one page
		 }
    #elif TRANS_MODE==DMA
		// Nand to memory dma setting
	    rSRCPND=BIT_DMA;	// Init DMA src pending.
	    rSUBSRCPND=BIT_SUB_DMA0;
	    rDISRC0=NFDATA; 	// Nand flash data register
	    rDISRCC0=(0<<1) | (1<<0); //arc=AHB,src_addr=fix
	    rDIDST0=(unsigned)bufPt;
	    rDIDSTC0=(0<<1) | (0<<0); //dst=AHB,dst_addr=inc;
	    rDCON0=(1<<31)|(1<<30)|(1<<29)|(1<<28)|(1<<27)|(0<<23)|(1<<22)|(2<<20)|(512/4/4);
		//Handshake,AHB,interrupt,(4-burst),whole,S/W,no_autoreload,word,count=128;

		// DMA on and start.
	    rDMASKTRIG0=(1<<1)|(1<<0);

	   	while(!(rSUBSRCPND & BIT_SUB_DMA0));	// Wait until Dma transfer is done.
		
	   	rSUBSRCPND=BIT_SUB_DMA0;
	   	rSRCPND=BIT_DMA;
	   
     #endif

	 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;
	 Mecc=NF_RDDATA();  // read 4~7
 	 NF8_Spare_Data[4]=Mecc&0xff;
	 NF8_Spare_Data[5]=(Mecc&0xff00)>>8;
	 NF8_Spare_Data[6]=(Mecc&0xff0000)>>16;
	 NF8_Spare_Data[7]=(Mecc&0xff000000)>>24;

	 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;
	 
	 Secc=NF_RDDATA();
	 NF8_Spare_Data[12]=Secc&0xff;
	 NF8_Spare_Data[13]=(Secc&0xff00)>>8;
	 NF8_Spare_Data[14]=(Secc&0xff0000)>>16;
	 NF8_Spare_Data[15]=(Secc&0xff000000)>>24;
	 NF_nFCE_H();    

	 if ((rNFECCERR0&0xf) == 0x0){
	//       printf("ECC OK!\n");
		return OK;
	 }
	 else {
	 	printf("ECC FAIL!\n");
		printf("NFECCERR0: 0x%x\n", rNFECCERR0);
	
	    return FAIL;
	 }


}

///////////////Advanced nand flash //////////////////////

static int Adv_NF8_ReadPage(U32 block,U32 page,U8 *buffer)
{
       int i;
       unsigned int blockPage;
	   U32 Mecc, Secc;
 	   U8 *bufPt=buffer;
	   U8 se[16], ecc0, ecc1, ecc2, ecc3,a,b,c,d,e;
    
       blockPage=(block<<6)+page;
	   NF_RSTECC();    // Initialize ECC
	   NF_MECC_UnLock();
    
	   NF_nFCE_L();    

	   NF_CLEAR_RB();
	   
	   NF_CMD(0x00);	// Read command
       NF_ADDR(0); 	// Column (A[7:0]) = 0
       NF_ADDR(0);		// A[11:8]
       NF_ADDR((blockPage)&0xff);	// A[19:12]
       NF_ADDR((blockPage>>8)&0xff);	// A[27:20]
       NF_ADDR((blockPage>>16)&0xff);	// A[27:20]
      
       NF_CMD(0x30);	// 2'nd command
       NF_DETECT_RB();
	
      #if TRANS_MODE==C_LANG
	    for(i=0;i<2048;i++) {
	    	*bufPt++=NF_RDDATA8();	// Read one page
	    }
      #elif TRANS_MODE==DMA
		// Nand to memory dma setting
	    rSRCPND=BIT_DMA;	// Init DMA src pending.
	    rSUBSRCPND=BIT_SUB_DMA0;
	    rDISRC0=NFDATA; 	// Nand flash data register
	    rDISRCC0=(0<<1) | (1<<0); //arc=AHB,src_addr=fix
	    rDIDST0=(unsigned)bufPt;
	    rDIDSTC0=(0<<1) | (0<<0); //dst=AHB,dst_addr=inc;
	    rDCON0=(1<<31)|(1<<30)|(1<<29)|(1<<28)|(1<<27)|(0<<23)|(1<<22)|(2<<20)|(2048/4/4);
		//Handshake,AHB,interrupt,(4-burst),whole,S/W,no_autoreload,word,count=128;

		// DMA on and start.
	    rDMASKTRIG0=(1<<1)|(1<<0);

	   	while(!(rSUBSRCPND & BIT_SUB_DMA0));	// Wait until Dma transfer is done.
		
	   	rSUBSRCPND=BIT_SUB_DMA0;
	   	rSRCPND=BIT_DMA;

       #endif

   
//	  NF_MECC_Lock();
	  
//	  rNFMECCD0=NF_RDDATA();
	  
//	  NF_nFCE_H();	  
	  
//	  if ((rNFESTAT0&0x3) == 0x0) 	  return OK;
//	  else   return FAIL;


	 NF_MECC_Lock();

	 NF_SECC_UnLock();
     Adv_NF8_Spare_Data[0]=NF_RDDATA8();
	 Mecc=NF_RDDATA();
	 rNFMECCD0=((Mecc&0xff00)<<8)|(Mecc&0xff);
	 rNFMECCD1=((Mecc&0xff000000)>>8)|((Mecc&0xff0000)>>16);
	
	 
	 Adv_NF8_Spare_Data[1]=Mecc&0xff;
	 Adv_NF8_Spare_Data[2]=(Mecc&0xff00)>>8;
	 Adv_NF8_Spare_Data[3]=(Mecc&0xff0000)>>16;
	 Adv_NF8_Spare_Data[4]=(Mecc&0xff000000)>>24;
	 
	 Adv_NF8_Spare_Data[5]=NF_RDDATA8();  // read 5
	 Adv_NF8_Spare_Data[6]=NF_RDDATA8();  // read 6
	 Adv_NF8_Spare_Data[7]=NF_RDDATA8();  // read 7
	 
	 NF_SECC_Lock();
	 Secc=NF_RDDATA();
	 rNFSECCD=((Secc&0xff00)<<8)|(Secc&0xff);
	 Adv_NF8_Spare_Data[8]=Secc&0xff;
	 Adv_NF8_Spare_Data[9]=(Secc&0xff00)>>8;
	 Adv_NF8_Spare_Data[10]=(Secc&0xff0000)>>16;
	 Adv_NF8_Spare_Data[11]=(Secc&0xff000000)>>24;
	 
	 for(i=12;i<64;i++) {
    	Adv_NF8_Spare_Data[i]=NF_RDDATA8();	// Read spare array with 4byte width
       }
	
	 NF_nFCE_H();    

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


}




static int NF8_WritePage(U32 block,U32 page,U8 *buffer)
{
       int i;
	U32 blockPage, Mecc, Secc;
	U8 *bufPt=buffer;

	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);  //

	
#if TRANS_MODE==C_LANG
     
	for(i=0;i<512;i++) {
	 	 {NF_WRDATA8(*bufPt++);}	// Write one page to NFM from buffer
    }
#elif TRANS_MODE==DMA
      
	// Memory to Nand dma setting
	rSUBSRCPND=BIT_SUB_DMA0;
	rSRCPND=BIT_DMA;	// Init DMA src pending.
	
	rDISRC0=(unsigned)bufPt; 	// Nand flash data register
	rDISRCC0=(0<<1) | (0<<0); //arc=AHB,src_addr=inc
	rDIDST0=NFDATA;
	rDIDSTC0=(0<<1) | (1<<0); //dst=AHB,dst_addr=fix;
	rDCON0=(1<<31)|(1<<30)|(1<<29)|(0<<28)|(1<<27)|(0<<23)|(1<<22)|(2<<20)|(512/4);
	//  only unit transfer in writing!!!!
	//Handshake,AHB,interrupt,(unit),whole,S/W,no_autoreload,word,count=128;
	
	// DMA on and start.
	rDMASKTRIG0=(1<<1)|(1<<0);
	
	while(!(rSUBSRCPND & BIT_SUB_DMA0));	// Wait until Dma transfer is done.
	
	rSUBSRCPND=BIT_SUB_DMA0;
	rSRCPND=BIT_DMA;	
#endif

/*
      NF_MECC_Lock();
// Get ECC data.
	// Spare data for 8bit
	// byte  0   1    2    3    4   5
	// ecc  [0]  [1]  [2]  [3]  x   [Bad marking]
	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]=0xffff;		// Marking good block

	//Write extra data(ECC, bad marking)
	for(i=0;i<16;i++) {
		NF_WRDATA8(se8Buf[i]);	// Write spare array(ECC and Mark)
		NF8_Spare_Data[i]=se8Buf[i];
    }  

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

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

    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
//	NF_DETECT_RB();
	
	while(NFConDone==0);
	 rNFCONT&=~(1<<9);
	 rNFCONT&=~(1<<10); // Disable Illegal Access Interrupt
	 if(rNFSTAT&0x20) 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();
	 	printf("[PROGRAM_ERROR:block#=%d]\n",block);
	//	NF8_MarkBadBlock(block);
		return FAIL;
       }
     else {
        NF_nFCE_H();
	      return OK;
	}

}

//////////////// Advanced nand flash ////////////////////////////////

static int Adv_NF8_WritePage(U32 block,U32 page,U8 *buffer)
{
    int i;
	U32 blockPage, Mecc, Secc;
	U8 *bufPt=buffer;

	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<<6)+page;

	NF_nFCE_L(); 
	NF_CMD(0x80);   // Write 1st command
	NF_ADDR(0); 	// Column (A[7:0]) = 0
	NF_ADDR(0); 	// A[11:8]
	NF_ADDR((blockPage)&0xff);	// A[19:12]
	NF_ADDR((blockPage>>8)&0xff);	// A[27:20]
	NF_ADDR((blockPage>>16)&0xff);	// A[27:20]
	
	
#if TRANS_MODE==C_LANG
     
	for(i=0;i<2048;i++) {
		NF_WRDATA8(*bufPt++);	// Write one page to NFM from buffer
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人免费视| 色呦呦日韩精品| 9久草视频在线视频精品| 欧美亚洲国产一区二区三区va| 精品国产99国产精品| 一区二区三区精品在线| 国产精品一区二区久久不卡| 欧美日韩电影一区| 亚洲免费av高清| 高清成人在线观看| 精品国产电影一区二区| 午夜久久福利影院| 日本久久一区二区| 亚洲丝袜自拍清纯另类| 国产成人精品亚洲日本在线桃色 | 九九国产精品视频| 欧美自拍偷拍午夜视频| 国产精品久久久久影院亚瑟| 国产黄人亚洲片| 久久久久久久久蜜桃| 另类小说欧美激情| 日韩一区二区三区三四区视频在线观看| 亚洲视频电影在线| 99国产精品99久久久久久| 国产女同互慰高潮91漫画| 精品一区二区av| 日韩欧美一二区| 男人的天堂久久精品| 91精品国产综合久久婷婷香蕉| 亚洲国产日韩一区二区| 成人av免费在线观看| 欧美国产一区二区在线观看| 国产999精品久久| 亚洲国产精华液网站w| 成人av电影在线播放| 国产精品久久久久久亚洲伦 | 国产女主播在线一区二区| 激情六月婷婷久久| 久久亚洲一级片| 懂色av中文一区二区三区 | 亚洲精品va在线观看| 一本色道久久加勒比精品 | 欧美日韩免费观看一区三区| 亚洲一级二级在线| 91精品国模一区二区三区| 奇米一区二区三区| 久久人人爽爽爽人久久久| 大白屁股一区二区视频| 亚洲日本欧美天堂| 欧美老年两性高潮| 精品一区二区三区免费播放| 久久久精品欧美丰满| 91在线高清观看| 性感美女极品91精品| 久久综合色鬼综合色| 9i看片成人免费高清| 午夜激情综合网| xvideos.蜜桃一区二区| 成人高清免费在线播放| 一卡二卡三卡日韩欧美| 日韩欧美国产电影| 99久久99久久精品国产片果冻| 亚洲一区二区在线免费看| 欧美成人一区二区| 一本一道久久a久久精品| 丝袜美腿亚洲色图| 国产精品蜜臀av| 在线综合+亚洲+欧美中文字幕| 国产成人精品aa毛片| 亚洲一区二区三区在线播放| 久久亚洲精品小早川怜子| 在线观看欧美黄色| 国产不卡在线一区| 日本不卡中文字幕| 亚洲欧洲日韩综合一区二区| 欧美一区二区久久久| 91在线小视频| 狠狠色丁香久久婷婷综合丁香| 一区二区三区在线视频免费| 久久久久免费观看| 欧美精选午夜久久久乱码6080| 国产成人av资源| 日本美女视频一区二区| 亚洲欧美色综合| 国产日产欧产精品推荐色| 欧美日韩视频专区在线播放| 东方欧美亚洲色图在线| 九九精品视频在线看| 亚洲bdsm女犯bdsm网站| 日韩毛片一二三区| 久久久综合视频| 日韩一级二级三级精品视频| 欧美性猛片xxxx免费看久爱| 99久久久久免费精品国产| 国产精品88av| 久久爱另类一区二区小说| 午夜电影久久久| 亚洲精品国产品国语在线app| 国产欧美日韩不卡| 久久人人爽人人爽| 日韩欧美一区二区不卡| 欧亚一区二区三区| 不卡的av网站| 粉嫩在线一区二区三区视频| 国产麻豆精品视频| 韩国欧美国产1区| 久久精品国产一区二区三区免费看| 有码一区二区三区| 一区二区三区波多野结衣在线观看| 国产精品久久福利| 国产欧美综合在线观看第十页| 精品蜜桃在线看| 久久丝袜美腿综合| 久久精品日产第一区二区三区高清版| 欧美丰满一区二区免费视频 | 成人视屏免费看| 国产精品1024久久| 福利一区在线观看| 国产精品亚洲午夜一区二区三区| 国产精品一区二区黑丝| 成人午夜视频在线观看| 国产成人亚洲精品青草天美| 高清久久久久久| 成人黄动漫网站免费app| 不卡av免费在线观看| 成人性视频网站| 97se亚洲国产综合自在线不卡| 99久久精品费精品国产一区二区| 色哟哟精品一区| 欧美日韩亚洲综合一区二区三区| 5月丁香婷婷综合| 日韩精品一区二区三区在线播放| 欧美成人a∨高清免费观看| 欧美精品一区二区精品网| 国产日韩一级二级三级| 亚洲欧美视频在线观看视频| 亚洲6080在线| 狠狠狠色丁香婷婷综合久久五月| 国产成人无遮挡在线视频| av在线不卡免费看| 欧美日韩免费一区二区三区| 日韩精品一区二| 中文字幕一区二区三区精华液| 一区二区三区国产精品| 亚洲aaa精品| 国产精品99久久久| 欧美在线短视频| 久久伊人中文字幕| 亚洲精品日韩专区silk| 看电影不卡的网站| 99久久99久久久精品齐齐| 69精品人人人人| 国产精品三级视频| 视频一区视频二区中文| 高清成人在线观看| 91.麻豆视频| 亚洲欧洲精品一区二区三区| 午夜精品久久久久久不卡8050| 国产成人亚洲精品青草天美| 欧美性大战xxxxx久久久| 久久久久久久av麻豆果冻| 亚洲国产综合在线| 成人午夜碰碰视频| 欧美一级艳片视频免费观看| 亚洲色大成网站www久久九九| 蜜臀精品一区二区三区在线观看 | 日韩国产欧美视频| 成人app软件下载大全免费| 制服丝袜一区二区三区| 成人欧美一区二区三区黑人麻豆| 青青青伊人色综合久久| 日本福利一区二区| 国产偷v国产偷v亚洲高清| 日精品一区二区三区| 91社区在线播放| 久久精品亚洲国产奇米99| 日韩高清一级片| 色噜噜狠狠成人网p站| 国产日本一区二区| 卡一卡二国产精品| 9191精品国产综合久久久久久| 亚洲欧美另类图片小说| 风间由美中文字幕在线看视频国产欧美| 717成人午夜免费福利电影| 中文字幕在线观看一区| 国产精品一二一区| 精品999在线播放| 日本va欧美va精品| 欧美美女bb生活片| 亚洲午夜视频在线| 91视频一区二区三区| 国产精品九色蝌蚪自拍| 成人性视频免费网站| 国产香蕉久久精品综合网| 精品一区精品二区高清| 精品欧美一区二区在线观看| 精品影视av免费| 国产亚洲女人久久久久毛片| 国产一区二区三区免费| 久久综合久久综合亚洲|