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

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

?? cam_interface1.c

?? 這是一個用c語言編寫的攝像頭驅動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
		divisor = 2; //CCIR-422
	else
		divisor = 4; //CCIR-420
		
	//constant for calculating preview dma address
	if(Cam_Dev.p_format == CAM_RGB24B)
		multiplier = 4;
	else
		multiplier = 2;
	
	if(Cam_Dev.WinHorOffset == 0 && Cam_Dev.WinVerOffset == 0)
		WinOfsEn = 0;
	else
		WinOfsEn = 1;

	SrcWidth = CAM_SRC_HSIZE - Cam_Dev.WinHorOffset*2;
	SrcHeight = CAM_SRC_VSIZE - Cam_Dev.WinVerOffset*2;

	if(SrcWidth >= Cam_Dev.CoDstWidth) ScaleUp_H_Co=0; //down
	else ScaleUp_H_Co=1;		//up

	if(SrcHeight >= Cam_Dev.CoDstHeight) ScaleUp_V_Co=0;
	else ScaleUp_V_Co=1;		

	if(SrcWidth >= Cam_Dev.PrDstWidth) ScaleUp_H_Pr=0; //down
	else ScaleUp_H_Pr=1;		//up

	if(SrcHeight >= Cam_Dev.PrDstHeight) ScaleUp_V_Pr=0;   // edited 040225
	else ScaleUp_V_Pr=1;		

	////////////////// common control setting
	Cam_Dev.regs->global_control = (1<<29)|(1<<26)|(0<<27); // inverse PCLK, test pattern
	Cam_Dev.regs->window_offset = (1<<30)|(0xf<<12); // clear overflow 
	Cam_Dev.regs->window_offset = 0;	
	Cam_Dev.regs->window_offset = (WinOfsEn<<31)|(Cam_Dev.WinHorOffset<<16)|(Cam_Dev.WinVerOffset);
	Cam_Dev.regs->source_format = (1<<30)|(0<<29)|(CAM_SRC_HSIZE<<16)|(CAM_ORDER_YCBYCR<<14)|(CAM_SRC_VSIZE);
	if (Cam_Dev.CodecMode)	{
	////////////////// codec dma setting
	CbFrameInterval = Cam_Dev.CoDstWidth * Cam_Dev.CoDstHeight;
	CrFrameInterval = Cam_Dev.CoDstWidth * Cam_Dev.CoDstHeight / divisor;
	if (Cam_Dev.c_pp_num == 4)
	{
		int i;
		YFrameInterval = Cam_Dev.CoDstWidth * Cam_Dev.CoDstHeight + 2 * Cam_Dev.CoDstWidth * Cam_Dev.CoDstHeight / divisor;
		for (i = 0; i < 4; i++)
		{
			Cam_Dev.regs->codec.Y.sa[i] = CoFrameBuffer + i * YFrameInterval;
			Cam_Dev.regs->codec.Cb.sa[i] = Cam_Dev.regs->codec.Y.sa[i] + CbFrameInterval;
			Cam_Dev.regs->codec.Cr.sa[i] = Cam_Dev.regs->codec.Cb.sa[i] + CrFrameInterval;
		}
	}
	else
	{
		int i;
		for (i = 0; i < 4; i++)
		{
			Cam_Dev.regs->codec.Y.sa[i] = CoFrameBuffer;
			Cam_Dev.regs->codec.Cb.sa[i] = CoFrameBuffer + CbFrameInterval;
			Cam_Dev.regs->codec.Cr.sa[i] = Cam_Dev.regs->codec.Cb.sa[i] + CrFrameInterval;
		}
	}

	////////////////// codec target regs setting
	Cam_Dev.regs->codec.target_format = (CAM_CODEC_IN_422<<31)|(CAM_CODEC_OUTPUT<<30)|(Cam_Dev.CoDstWidth<<16)|(CAM_FLIP_NORMAL<<14)|(Cam_Dev.CoDstHeight);
	CalculateBurstSize(Cam_Dev.CoDstWidth, &MainBurstSizeY, &RemainedBurstSizeY);
	CalculateBurstSize(Cam_Dev.CoDstWidth / 2, &MainBurstSizeC, &RemainedBurstSizeC);
	Cam_Dev.regs->codec.dma_control = (MainBurstSizeY<<19)|(RemainedBurstSizeY<<14)|(MainBurstSizeC<<9)|(RemainedBurstSizeC<<4);	

	////////////////// codec scaler regs setting
	CalculatePrescalerRatioShift(SrcWidth, Cam_Dev.CoDstWidth, &PreHorRatio, &H_Shift);
	CalculatePrescalerRatioShift(SrcHeight, Cam_Dev.CoDstHeight, &PreVerRatio, &V_Shift);
	MainHorRatio=(SrcWidth<<8)/(Cam_Dev.CoDstWidth<<H_Shift);
	MainVerRatio=(SrcHeight<<8)/(Cam_Dev.CoDstHeight<<V_Shift);
    			
	Cam_Dev.regs->codec.scaler.pre_ratio = ((10-H_Shift-V_Shift)<<28)|(PreHorRatio<<16)|(PreVerRatio);
	Cam_Dev.regs->codec.scaler.pre_destination = ((SrcWidth/PreHorRatio)<<16)|(SrcHeight/PreVerRatio); 
	Cam_Dev.regs->codec.scaler.main_control=(CAM_SCALER_BYPASS_OFF<<31)|(ScaleUp_H_Co<<30)|(ScaleUp_V_Co<<29)|(MainHorRatio<<16)|(MainVerRatio);

	Cam_Dev.regs->codec.scaler.target_area = Cam_Dev.CoDstWidth * Cam_Dev.CoDstHeight;
	}		if (Cam_Dev.PrevMode)	{
	///////////////// preview dma regs setting
	RGBFrameInterval = Cam_Dev.PrDstWidth * Cam_Dev.PrDstHeight * multiplier;
	if (Cam_Dev.p_pp_num == 4) // codec view mode
	{
		int i;
		for (i = 0; i < 4; i++)
			Cam_Dev.regs->prev.RGB.sa[i] = PrFrameBuffer + i * RGBFrameInterval;	
	}	
	else // direct preview mode
	{
		int i;
		for (i = 0; i < 4; i++)
			Cam_Dev.regs->prev.RGB.sa[i] = PrFrameBuffer;   //LCDFRAMEBUFFER
	}

	////////////////// preview target regs setting
	Cam_Dev.regs->prev.target_format = (Cam_Dev.PrDstWidth<<16)|(CAM_FLIP_NORMAL<<14)|(Cam_Dev.PrDstHeight);
	if (Cam_Dev.p_format == CAM_RGB24B)
		CalculateBurstSize(Cam_Dev.PrDstWidth*4, &MainBurstSizeRGB, &RemainedBurstSizeRGB);
	else // RGB16B
		CalculateBurstSize(Cam_Dev.PrDstWidth*2, &MainBurstSizeRGB, &RemainedBurstSizeRGB);
   	Cam_Dev.regs->prev.dma_control = (MainBurstSizeRGB<<19)|(RemainedBurstSizeRGB<<14);
	
	///////////////// preview scaler regs setting
	CalculatePrescalerRatioShift(SrcWidth, Cam_Dev.PrDstWidth, &PreHorRatio, &H_Shift);
	CalculatePrescalerRatioShift(SrcHeight, Cam_Dev.PrDstHeight, &PreVerRatio, &V_Shift);
	MainHorRatio=(SrcWidth<<8)/(Cam_Dev.PrDstWidth<<H_Shift);
	MainVerRatio=(SrcHeight<<8)/(Cam_Dev.PrDstHeight<<V_Shift);
	Cam_Dev.regs->prev.scaler.pre_ratio = ((10-H_Shift-V_Shift)<<28)|(PreHorRatio<<16)|(PreVerRatio);		 
	Cam_Dev.regs->prev.scaler.pre_destination = ((SrcWidth/PreHorRatio)<<16)|(SrcHeight/PreVerRatio);
	Cam_Dev.regs->prev.scaler.main_control = (1<<31)|(CAM_PVIEW_OUTPUT<<30)|(ScaleUp_H_Pr<<29)|(ScaleUp_V_Pr<<28)|(MainHorRatio<<16)|(MainVerRatio);
    
	Cam_Dev.regs->prev.scaler.target_area = Cam_Dev.PrDstWidth * Cam_Dev.PrDstHeight;	}
	
	return 0;
}

static int cam_dma_malloc()
{
	unsigned int t_size;
	unsigned int daon = Cam_Dev.CoDstWidth * Cam_Dev.CoDstHeight;

	if(Cam_Dev.CodecMode)
	{
		if (Cam_Dev.c_format == CAM_CCIR420)
		{
			t_size = daon * 3 / 2 ;
		}
		else
		{ 
			t_size = daon * 2; /* CAMIF_OUT_YCBCR422 */
			t_size = t_size * Cam_Dev.c_pp_num;
		}
		Cam_Dev.cbuf = consistent_alloc(GFP_KERNEL | GFP_DMA, t_size, &Cam_Dev.c_phyaddr);
		if (!Cam_Dev.cbuf) {
			printk("CAMERA:Failed to request YCBCR MEM\n");
			return -ENOMEM;
		}		printk("vaddr=0x%x,paddr=0x%x\n", Cam_Dev.cbuf, Cam_Dev.c_phyaddr);
		memset(Cam_Dev.cbuf, 0, t_size);
		Cam_Dev.cbuf_size = t_size;
	}	
	if (Cam_Dev.PrevMode)
	{
		if (Cam_Dev.p_format == CAM_RGB16B) 
			t_size = daon * 2; /*  4byte per two pixel*/
		else 
		{
			t_size = daon * 4; /* 4byte per one pixel */
		}
		t_size = t_size * Cam_Dev.p_pp_num;
		Cam_Dev.pbuf = consistent_alloc(GFP_KERNEL | GFP_DMA, t_size, &Cam_Dev.p_phyaddr);
		if (!Cam_Dev.pbuf) { 
			printk(KERN_ERR"CAMERA:Failed to request RGB MEM\n");
			return -ENOMEM;
		}
		memset(Cam_Dev.pbuf, 0, t_size);
		Cam_Dev.pbuf_size = t_size;
	}

	return 0;
}

static int cam_dma_free()
{
	if(Cam_Dev.CodecMode)
	{
		consistent_free(Cam_Dev.cbuf, Cam_Dev.cbuf_size, Cam_Dev.c_phyaddr);
		Cam_Dev.cbuf = NULL;
	}
	if (Cam_Dev.PrevMode)
	{
		consistent_free(Cam_Dev.pbuf, Cam_Dev.pbuf_size, Cam_Dev.p_phyaddr);
		Cam_Dev.pbuf = NULL;
	}

	return 0;
}
/* Image Capture Enable Regiser */
#define	CAMIF_CAP_ON         (1<<31)
#define CAMIF_CAP_CODEC_ON   (1<<30)
#define CAMIF_CAP_PREVIEW_ON (1<<29)int camif_capture_start(){	u32 n_cmd = 0;		/* Next Command */	int i;	switch(Cam_Dev.exec) {		case CAMIF_BOTH_DMA_ON:			Cam_Dev.regs->codec.scaler.main_control |= (1<<15);			Cam_Dev.regs->prev.scaler.main_control |= (1<<15);			n_cmd = CAMIF_CAP_PREVIEW_ON|CAMIF_CAP_CODEC_ON;			break;		case CAMIF_DMA_ON:			Cam_Dev.status = PREPARE;			Cam_Dev.regs->source_format |= (1<<31);			Cam_Dev.regs->global_control |= (1<<31);			for (i=0;i<=100000000;i++);			Cam_Dev.regs->global_control &= ~(1<<31);			cam_interface_init();			Cam_Dev.regs->source_format &= ~(1<<31);			if (Cam_Dev.CodecMode) {				Cam_Dev.regs->codec.scaler.main_control |= (1<<15);				n_cmd = CAMIF_CAP_CODEC_ON;			}else {				Cam_Dev.regs->prev.scaler.main_control |= (1<<15);				n_cmd = CAMIF_CAP_PREVIEW_ON;			}			/* wait until Sync Time expires */			/* First settting, to wait VSYNC fall  */			/* By VESA spec,in 640x480 @60Hz 			   MAX Delay Time is around 64us which "while" has.*/ 			while(fld_v(Cam_Dev.regs->codec.status, 28, 1));			break;		default:			break;	}	Cam_Dev.regs->window_offset |= (1<<30);	Cam_Dev.regs->window_offset |= (0xf<<12);	Cam_Dev.regs->window_offset &= ~(1<<30);	Cam_Dev.regs->window_offset &= ~(0xf<<12);		Cam_Dev.regs->image_capture = n_cmd|CAMIF_CAP_ON;	return 0;}int camif_capture_stop()
{
	u32 n_cmd = Cam_Dev.regs->image_capture;	/* Next Command */

	switch(Cam_Dev.exec) {
		case CAMIF_BOTH_DMA_OFF:
			Cam_Dev.regs->codec.scaler.main_control &= ~(1<<15);			Cam_Dev.regs->prev.scaler.main_control &= ~(1<<15);
			n_cmd = 0;
			break;
		case CAMIF_DMA_OFF_L_IRQ: /* fall thru */
		case CAMIF_DMA_OFF:
			if (Cam_Dev.CodecMode) {
				Cam_Dev.regs->codec.scaler.main_control &= ~(1<<15);
				n_cmd &= ~CAMIF_CAP_CODEC_ON;
				if (!(n_cmd & CAMIF_CAP_PREVIEW_ON))
					n_cmd = 0;
			}else {
				Cam_Dev.regs->prev.scaler.main_control &= ~(1<<15);
				n_cmd &= ~CAMIF_CAP_PREVIEW_ON;
				if (!(n_cmd & CAMIF_CAP_CODEC_ON))
					n_cmd = 0;
			}
			break;
		default:
			printk("Unexpected \n");
	}
	Cam_Dev.regs->image_capture = n_cmd;
	if(Cam_Dev.exec == CAMIF_DMA_OFF_L_IRQ) { /* Last IRQ  */
		if (Cam_Dev.CodecMode) 
			Cam_Dev.regs->codec.dma_control |= (1<<2);
		else 
			Cam_Dev.regs->prev.dma_control |= (1<<2);
	} 
	return 0;
}/* LastIRQEn is autoclear */
void camif_last_irq_en()
{
	if(Cam_Dev.exec == CAMIF_BOTH_DMA_ON) {
		Cam_Dev.regs->codec.dma_control |= (1<<2);
		Cam_Dev.regs->prev.dma_control |= (1<<2);
	}
	else {
		if (Cam_Dev.CodecMode) 
			Cam_Dev.regs->codec.dma_control |= (1<<2);
		else 
			Cam_Dev.regs->prev.dma_control |= (1<<2);
	}
}/////////////////////////////////////////////clock setting////////////////////////////void ChangeUPllValue(int mdiv,int pdiv,int sdiv)
{
    UPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
}void SetCAMClockDivider(int divn) 
{
	CAMDIVN = (CAMDIVN & ~(0xf))|(1<<4)|(divn); // CAMCLK is divided..
}int camif_clock_init()
{
	CLKCON |= CLKCON_CAMIF;
	ChangeUPllValue(60, 4, 1);
	CLKDIVN |= DIVN_UPLL;	/* For USB */
	SetCAMClockDivider(1);
	return 0;
}///////////////////////////////////////////GPIO setting///////////////////////////////static int camif_gpio_init(void)
{
	set_gpio_ctrl(GPIO_CAMDATA0);
	set_gpio_ctrl(GPIO_CAMDATA1);
	set_gpio_ctrl(GPIO_CAMDATA2);
	set_gpio_ctrl(GPIO_CAMDATA3);
	set_gpio_ctrl(GPIO_CAMDATA4);
	set_gpio_ctrl(GPIO_CAMDATA5);
	set_gpio_ctrl(GPIO_CAMDATA6);
	set_gpio_ctrl(GPIO_CAMDATA7);
	set_gpio_ctrl(GPIO_CAMPCLKIN);
	set_gpio_ctrl(GPIO_CAMVSYNC);
	set_gpio_ctrl(GPIO_CAMHREF);
	set_gpio_ctrl(GPIO_CAMPCLKOUT);
	set_gpio_ctrl(GPIO_CAMRESET);
   	return 0;
}/////////////////////////////////////////////file operation///////////////////////////ssize_t cam_read(struct file *filp, char *buf, size_t count, loff_t *f_pos){	printk("camera reading...(0x%x)\n", Cam_Dev.cbuf);	Cam_Dev.exec = CAMIF_DMA_ON;	camif_capture_start();	interruptible_sleep_on(&Cam_Dev.wq);	if (Cam_Dev.status==FINISH) printk("Capture completed!\n");	Cam_Dev.exec = CAMIF_DMA_OFF;	camif_capture_stop();	if (copy_to_user(buf, Cam_Dev.cbuf, count))		return -EFAULT;	printk("camera read completed!\n");	return count;}///////////////////////////////////////////module initialization///////////////////////////
int init_module(void)
{
	int result,i;
	result = register_chrdev(Cam_Dev.major, "video", &cam_fops);	if (result<0) {		printk("camif: can't get major %d\n",CAM_MAJOR);		return result;	}	if (Cam_Dev.major==0)		Cam_Dev.major = result;	camif_gpio_init();	camif_clock_init();
	Cam_Dev.regs = (cam_interface_regs *)io_p2v(CAM_BASE_ADD);
	sema_init(&Cam_Dev.sem, 1);
	init_waitqueue_head(&Cam_Dev.wq);
	cam_request_irq();
	cam_dma_malloc();
	cam_interface_init();	printk("Camera interface initialization completed!\n");	/*	printk("checking register value(0x%x):\n",Cam_Dev.regs);	printk("0x%x:0x%x\n",&(Cam_Dev.regs->source_format), Cam_Dev.regs->source_format);	printk("0x%x:0x%x\n",&(Cam_Dev.regs->window_offset), Cam_Dev.regs->window_offset);	printk("0x%x:0x%x\n",&(Cam_Dev.regs->global_control), Cam_Dev.regs->global_control);	for (i=0;i<4;i++)		printk("0x%x:0x%x\n",&(Cam_Dev.regs->codec.Y.sa[i]), Cam_Dev.regs->codec.Y.sa[i]);	for (i=0;i<4;i++)		printk("0x%x:0x%x\n",&(Cam_Dev.regs->codec.Cb.sa[i]), Cam_Dev.regs->codec.Cb.sa[i]);	for (i=0;i<4;i++)		printk("0x%x:0x%x\n",&(Cam_Dev.regs->codec.Cr.sa[i]), Cam_Dev.regs->codec.Cr.sa[i]);	printk("0x%x:0x%x\n",&(Cam_Dev.regs->codec.target_format), Cam_Dev.regs->codec.target_format);	printk("0x%x:0x%x\n",&(Cam_Dev.regs->codec.dma_control), Cam_Dev.regs->codec.dma_control);	printk("0x%x:0x%x\n",&(Cam_Dev.regs->codec.scaler.main_control), Cam_Dev.regs->codec.scaler.main_control);	printk("0x%x:0x%x\n",&(Cam_Dev.regs->codec.status), Cam_Dev.regs->codec.status);	printk("0x%x:0x%x\n",&(Cam_Dev.regs->image_capture), Cam_Dev.regs->image_capture);	*/
	return 0;
}

void cleanup_module(void)
{
	//iounmap(Cam_Dev.regs);
	cam_release_irq();
	cam_dma_free();	unregister_chrdev(Cam_Dev.major, "video");
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美自拍偷拍一区| 欧美一区2区视频在线观看| 伊人性伊人情综合网| 一本色道综合亚洲| 午夜私人影院久久久久| 日韩一区二区三区免费看| 狠狠色伊人亚洲综合成人| 国产欧美精品区一区二区三区| 成人免费看片app下载| 亚洲免费在线观看视频| 欧美日韩国产中文| 麻豆精品久久精品色综合| 国产日产欧美一区| 色悠悠亚洲一区二区| 日韩电影在线免费看| 精品国产电影一区二区| 成人晚上爱看视频| 亚洲大片在线观看| 久久女同互慰一区二区三区| 99re热这里只有精品免费视频| 亚洲国产日韩av| 欧美大片免费久久精品三p| 成人av资源在线观看| 亚洲一区二区三区四区五区中文| 日韩一区二区三区在线观看| 国产精品影视在线| 亚洲精品乱码久久久久久黑人| 欧美日韩国产高清一区二区三区| 国产主播一区二区三区| 99在线精品一区二区三区| 亚洲综合视频在线观看| 亚洲精品在线电影| 99久久婷婷国产精品综合| 日韩国产在线观看一区| 久久久精品蜜桃| 欧美性大战久久久久久久| 精品亚洲aⅴ乱码一区二区三区| 一色桃子久久精品亚洲| 欧美一区永久视频免费观看| 国产98色在线|日韩| 午夜精品爽啪视频| 国产欧美一区二区精品性| 欧美日韩一区高清| 国产91精品免费| 日本在线不卡视频一二三区| 国产精品久久久久影视| 欧美一区二区三区系列电影| 成人av综合一区| 久久精品国产精品青草| 亚洲人成网站色在线观看| 精品国产区一区| 欧美中文字幕不卡| 国产精品69久久久久水密桃| 偷窥国产亚洲免费视频| 国产精品色一区二区三区| 欧美一区二区三区免费| 色系网站成人免费| 国产一二三精品| 日韩专区在线视频| 亚洲欧美aⅴ...| 久久精品欧美一区二区三区不卡 | 色婷婷av一区| 国产原创一区二区三区| 婷婷开心激情综合| 亚洲免费伊人电影| 国产拍揄自揄精品视频麻豆| 欧美一区二区三区四区在线观看| 色婷婷精品大视频在线蜜桃视频| 国产福利不卡视频| 免费观看久久久4p| 亚洲高清不卡在线| 亚洲精品国产精品乱码不99| 欧美韩国日本综合| 精品国产免费久久| 5566中文字幕一区二区电影| 91麻豆视频网站| 国产99久久久精品| 久久99精品视频| 日韩av一级电影| 亚洲一区二区免费视频| 亚洲欧洲综合另类在线| 亚洲国产成人一区二区三区| 精品三级在线观看| 91精品国产麻豆国产自产在线| 欧洲人成人精品| 91视视频在线观看入口直接观看www | av一区二区三区四区| 国产乱人伦偷精品视频免下载| 欧美日韩不卡一区二区| 日本乱码高清不卡字幕| 97se亚洲国产综合自在线不卡| 丁香婷婷深情五月亚洲| 国产一区二区调教| 国模无码大尺度一区二区三区| 蜜桃免费网站一区二区三区 | 一区二区三区免费在线观看| 成人免费在线视频| 国产精品美女久久久久av爽李琼| 国产视频一区在线播放| 国产亚洲欧美一区在线观看| 久久伊人中文字幕| 久久久亚洲高清| 久久久五月婷婷| 国产亚洲欧美一区在线观看| 久久婷婷综合激情| 久久久久国产精品厨房| 久久精品亚洲精品国产欧美kt∨| 久久精品无码一区二区三区| 国产人成亚洲第一网站在线播放 | 国产精品嫩草久久久久| 国产精品三级电影| 国产精品丝袜91| 最好看的中文字幕久久| 亚洲视频电影在线| 一区二区三区不卡视频在线观看| 亚洲一区精品在线| 亚欧色一区w666天堂| 天堂午夜影视日韩欧美一区二区| 日韩成人av影视| 另类小说欧美激情| 国产综合一区二区| 成人性生交大片免费看视频在线| 成人精品鲁一区一区二区| 99精品视频在线观看免费| 中文字幕高清一区| 国产精品天美传媒沈樵| 亚洲视频一区在线| 亚洲黄色小视频| 午夜亚洲福利老司机| 另类小说欧美激情| 国产成人亚洲精品青草天美| 成人av一区二区三区| 91在线看国产| 欧美亚洲尤物久久| 日韩欧美中文一区| 国产午夜精品一区二区三区四区| 最新国产成人在线观看| 亚洲一区二区三区小说| 奇米影视在线99精品| 国产福利精品导航| 色av一区二区| 欧美一区二区三区免费大片| 久久天堂av综合合色蜜桃网| 国产精品乱码人人做人人爱 | 亚洲一区二区三区在线播放| 日本 国产 欧美色综合| 国产suv精品一区二区三区| 色综合视频一区二区三区高清| 欧美日韩精品久久久| 欧美成人vps| 国产精品全国免费观看高清| 一区二区三区免费在线观看| 人人超碰91尤物精品国产| 成人免费毛片app| 欧美亚洲国产一区二区三区va | 国产精品影视天天线| 91尤物视频在线观看| 91精品国产综合久久福利软件 | 亚洲美女视频在线观看| 日韩国产成人精品| 成人午夜短视频| 欧美精品亚洲一区二区在线播放| 久久综合久久综合亚洲| 亚洲欧美二区三区| 久久99久久99| 99精品视频一区二区三区| 欧美一区二区三区四区五区| 国产精品久久影院| 免费观看成人鲁鲁鲁鲁鲁视频| 成人av小说网| 日韩欧美一区二区免费| 亚洲三级电影网站| 久久国产生活片100| 日本福利一区二区| 久久免费国产精品| 亚洲午夜免费电影| 成人一区二区在线观看| 欧美精品xxxxbbbb| 成人欧美一区二区三区黑人麻豆 | 国产不卡视频一区| 制服丝袜国产精品| 亚洲视频图片小说| 国产乱码精品1区2区3区| 欧美日韩国产在线播放网站| 中文字幕精品综合| 麻豆精品视频在线观看免费| 91福利国产精品| 欧美激情一区二区在线| 麻豆成人在线观看| 欧美在线短视频| 国产精品久久久久久久岛一牛影视 | 欧美主播一区二区三区美女| 国产成人欧美日韩在线电影| 欧美日韩精品一区二区天天拍小说| 国产精品私房写真福利视频| 久久国产尿小便嘘嘘尿| 欧美日韩午夜影院| 亚洲人精品午夜| 成人性视频免费网站| 欧美精品一区二区三区四区|