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

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

?? s3c2440a_camif.c

?? sumsung s3c2440下的camera(OV7620)驅動程序源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Camera interface on S3C2440A * * 8-12-2005 : * ported by antiscle <hzh12@tom.com>, IIC initialize is done in user program */#include <linux/config.h>#include <linux/module.h>#include <linux/init.h>#include <linux/kernel.h>#include <linux/version.h>#include <linux/wait.h>#include <linux/irq.h>#include <linux/delay.h>#include <linux/sched.h>#include <linux/locks.h>#include <linux/mm.h>#include <linux/slab.h>#include <linux/completion.h>#include <linux/videodev.h>#include <asm/io.h>#include <asm/hardware.h>#include <asm/semaphore.h>#include <asm/uaccess.h>#include <asm/arch/cpu_s3c2440.h>#include "s3c2440a_camif.h"#if DEBUG#define DPRINTK(x...) printk(x)#else#define DPRINTK(x...) /* !!!! */#endif#ifndef __user#define	__user#endif#define	CAMERA_STOP_QUICKLY#define	SKIP_FIRST_FRAME#define	RGB_YUV_MUTEXstatic struct img_buf_t yuv_buf[4];static struct img_buf_t rgb_buf[4];#define YUV_TUPLE_SIZE (1024*768*2) // maximum#define YUV_IMG_BUF_SIZE PAGE_ALIGN(YUV_TUPLE_SIZE + PAGE_SIZE - 1)static unsigned char *camif_yuv_buf = NULL;static dma_addr_t camif_yuv_buf_dma = 0;#define RGB_TUPLE_SIZE (800*600*3) // maximum RGB24#define RGB_IMG_BUF_SIZE PAGE_ALIGN(RGB_TUPLE_SIZE + PAGE_SIZE - 1)static unsigned char *camif_rgb_buf = NULL;static dma_addr_t camif_rgb_buf_dma = 0;static struct s3c2440_camif camif; // v4l devstatic struct s3c2440_camif_cfg_t s3c2440_camif_cfg;static int v4l_cam_open(struct video_device *v, int mode);static void v4l_cam_close(struct video_device *v);static int v4l_cam_ioctl(struct video_device *v, unsigned int cmd, void *arg);static int v4l_cam_mmap(struct video_device *v, const char *adr, unsigned long size);static long v4l_cam_read(struct video_device *v, char *buf, unsigned long count, int noblock);//static long v4l_cam_write(struct video_device *v, const char *buf, unsigned long count, int noblock);static unsigned int v4l_cam_poll(struct video_device *v, struct file *file, poll_table *table);static int v4l_cam_initdone (struct video_device *v);static __u16 power_lvl = 0;static __u16 reset_lvl = 1;//power on/offstatic __inline void camera_power(int mode){	if(mode) {	//power on		if(power_lvl)			GPGDAT |= 1<<12;		else			GPGDAT &= ~(1<<12);	} else {		if(power_lvl)			GPGDAT &= ~(1<<12);		else			GPGDAT |= 1<<12;	}}//external resetstatic __inline void camera_reset(int mode){	if(mode) {	//do reset		if(reset_lvl)			rCIGCTRL |= 1<<30;		//GPJDAT |= 1<<12;		else			rCIGCTRL &= ~(1<<30);	//GPJDAT &= ~(1<<12);	} else {		if(reset_lvl)			rCIGCTRL &= ~(1<<30);	//GPJDAT &= ~(1<<12);		else			rCIGCTRL |= 1<<30;		//GPJDAT |= 1<<12;	}}//software reset#define CAMERA_RESET() 		\	{rCIGCTRL |= (1<<31);	\	camera_reset(1);		\	mdelay(50); 			\	rCIGCTRL &=  ~(1<<31);	\	camera_reset(0);		\	mdelay(50);}/*  *   CAMCLK_DIV =  UPLL / ( CAMCLK * 2)  - 1 ; */static __inline unsigned int get_camera_clk(void){        return 24000000;}static void cam_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);	//set_gpio_ctrl(GPIO_J12|GPIO_MODE_OUT|GPIO_PULLUP_DIS);	//reset	set_gpio_ctrl(GPIO_G12|GPIO_MODE_OUT|GPIO_PULLUP_DIS);	//power pin}static void inline s3c2440_camif_init(void){	unsigned int upll, uclk, camclk,camclk_div;	cam_gpio_init();	camclk = get_camera_clk();	CLKCON |= CLKCON_CAMIF;	/* Supposed that you must set UPLL at first */	//UPLLCON = FInsrt(0x38, fPLL_MDIV) | FInsrt(0x02, fPLL_PDIV)	//don't set UPLL here	//	| FInsrt(0x02, fPLL_SDIV);	upll = s3c2440_get_bus_clk(GET_UPLL);	uclk = (CLKDIVN & DIVN_UPLL_EN) ? upll/2 : upll;	printk("CAMERA : UPLL %08d  UCLK %08d CAMCLK %08d \n",upll, uclk, camclk);	camclk_div = upll /( camclk * 2) -1 ;	CAMDIVN = CAMCLK_SET_DIV | (camclk_div & 0xf );		printk("camera power level %d, reset level %d\n", power_lvl, reset_lvl);	rCIGCTRL = 1<<29;	//bit 29 must be 1	CAMERA_RESET();}static void s3c2440_camif_deinit(void){	CLKCON &= ~CLKCON_CAMIF;	rCIIMGCPT = 0;	mdelay(5);}/******************************************************** CalculateBurstSize - Calculate the busrt lengths  Description:	 - dstHSize: the number of the byte of H Size. */void __inline CalculateBurstSize(u32 hSize, u32 *mainBurstSize, u32 *remainedBurstSize){	__u32 tmp = (hSize/4)%16;	switch(tmp) {		case 0:			*mainBurstSize = 16;			*remainedBurstSize = 16;			break;		case 4:			*mainBurstSize = 16;			*remainedBurstSize = 4;			break;		case 8:			*mainBurstSize=16;			*remainedBurstSize = 8;			break;		default: 			tmp=(hSize/4)%8;			switch(tmp) {				case 0:					*mainBurstSize = 8;					*remainedBurstSize = 8;					break;				case 4:					*mainBurstSize = 8;					*remainedBurstSize = 4;				default:					*mainBurstSize = 4;					tmp = (hSize/4)%4;					*remainedBurstSize = (tmp)?tmp:4;					break;			}			break;	}}/******************************************************** CalculatePrescalerRatioShift - none  Description:	 - none */void __inline CalculatePrescalerRatioShift(u32 SrcSize, u32 DstSize, u32 *ratio, u32 *shift){	if(SrcSize>=64*DstSize) {		printk(KERN_ERR "Error: out of the prescaler range: SrcSize/DstSize = %d(< 64)\n",				SrcSize/DstSize);		panic("camera set error!\n");	} else if(SrcSize>=32*DstSize) {		*ratio=32;		*shift=5;	} else if(SrcSize>=16*DstSize) {		*ratio=16;		*shift=4;	} else if(SrcSize>=8*DstSize) {		*ratio=8;		*shift=3;	} else if(SrcSize>=4*DstSize) {		*ratio=4;		*shift=2;	} else if(SrcSize>=2*DstSize) {		*ratio=2;		*shift=1;	} else {		*ratio=1;		*shift=0;	}    	}static void s3c2440_camif_configure(struct s3c2440_camif_cfg_t *cfg){	int i;	unsigned int ysize, csize;	unsigned int burst_y, burst_c, remain_burst_y, remain_burst_c;	unsigned int hsft, vsft, hratio, vratio, mhratio, mvratio;	unsigned int hscale, vscale;		cfg->pre_x = cfg->dst_x;	cfg->pre_y = cfg->dst_y;	switch(cfg->dev->mode) {	case 0:		cfg->dev->size = cfg->dst_x*cfg->dst_y*2;		cfg->pre_fmt = 0;	//RGB16		break;	case 1:		cfg->dev->size = cfg->dst_x*cfg->dst_y*3;		cfg->pre_fmt = 1;	//RGB24		break;	case 2:		cfg->dev->size = (cfg->dst_x*cfg->dst_y*3)/2;		cfg->dst_fmt = 0;	//YCbCr4:2:0		break;	case 3:		cfg->dev->size = cfg->dst_x*cfg->dst_y*2;		cfg->dst_fmt = 1;	//YCbCr4:2:2		break;	}	DPRINTK("CAMIF: src = (%dx%d), co dst = (%dx%d), pre dst = (%dx%d)\n",			cfg->src_x, cfg->src_y,			cfg->dst_x, cfg->dst_y,			cfg->pre_x, cfg->pre_y);	////////////////// common control setting	// ITU601,UVOffset=0,YCbYCr	rCISRCFMT = (1<<31)|(0<<30)|(0<<29)|(cfg->src_x<<16)|(cfg->ycbcr<<14)|(cfg->src_y);	// clear overflow, disable window offset	rCIWDOFST = (1<<30)|(0xf<<12); 	rCIWDOFST = 0;	// clear test pattern,  normal PCLK, VSYNC, HREF	rCIGCTRL &= ~((3<<27)|(7<<24));	ysize = cfg->dst_x * cfg->dst_y;	if(cfg->dst_fmt)	//YCbCr4:2:2		csize =  ysize / 2;	else				//YCbCr4:2:0		csize =  ysize / 4;	for (i = 0; i < 4; i++) {		yuv_buf[i].buf = camif_yuv_buf;		yuv_buf[i].phys_addr = (unsigned int)camif_yuv_buf_dma;		rgb_buf[i].buf = camif_rgb_buf;		rgb_buf[i].phys_addr = (unsigned int)camif_rgb_buf_dma;				DPRINTK("yuv_buf[%d] : virt=0x%08lx, phys = 0x%08lx\n",				i, (unsigned long)yuv_buf[i].buf, (unsigned long)yuv_buf[i].phys_addr);		DPRINTK("rgb_buf[%d] : virt=0x%08lx, phys = 0x%08lx\n",				i, (unsigned long)rgb_buf[i].buf, (unsigned long)rgb_buf[i].phys_addr);				CICOSTAY(i) = yuv_buf[i].phys_addr;		CICOSTACb(i) = yuv_buf[i].phys_addr + ysize;		CICOSTACr(i) = yuv_buf[i].phys_addr + ysize + csize;		CIPRSTARGB(i) = rgb_buf[i].phys_addr;		DPRINTK("STAY%d  = 0x%08x\n", i, yuv_buf[i].phys_addr);		DPRINTK("STACB%d = 0x%08x\n", i, yuv_buf[i].phys_addr + yszie);		DPRINTK("STACR%d = 0x%08x\n", i, yuv_buf[i].phys_addr + ysize + csize);	}	////////////////// codec port setting	// YCbCr4:2:2 input, YCbCr4:2:2/YCbCr4:2:0 output, normal	rCICOTRGFMT = (1<<31)|((cfg->dst_fmt?1:0)<<30)|(cfg->dst_x<<16)|(0<<14)|(cfg->dst_y);	CalculateBurstSize(cfg->dst_x, &burst_y, &remain_burst_y);	CalculateBurstSize(cfg->dst_x/2, &burst_c, &remain_burst_c);	rCICOCTRL = (burst_y<<19)|(remain_burst_y<<14)|(burst_c<<9)|(remain_burst_c<<4);	CalculatePrescalerRatioShift(cfg->src_x, cfg->dst_x, &hratio, &hsft);	CalculatePrescalerRatioShift(cfg->src_y, cfg->dst_y, &vratio, &vsft);	mhratio = (cfg->src_x<<8)/(cfg->dst_x<<hsft);	mvratio = (cfg->src_y<<8)/(cfg->dst_y<<vsft);	rCICOSCPRERATIO = ((10-hsft-vsft)<<28)|(hratio<<16)|(vratio);	rCICOSCPREDST = ((cfg->src_x/hratio)<<16)|(cfg->src_y/vratio); 	if(cfg->dev->mode==2||cfg->dev->mode==3)		cfg->bypass = (cfg->src_x==cfg->dst_x&&cfg->src_y==cfg->dst_y)?1:0;	hscale = (cfg->src_x>cfg->dst_x)?0:1;	vscale = (cfg->src_y>cfg->dst_y)?0:1;	rCICOSCCTRL = (0<<31)|(hscale<<30)|(vscale<<29)|(mhratio<<16)|(mvratio);	rCICOTAREA = cfg->dst_x*cfg->dst_y;	///////////////// preview port setting	rCIPRTRGFMT = (cfg->pre_x<<16)|(0<<14)|(cfg->pre_y);	if (cfg->pre_fmt)	//RGB24B		CalculateBurstSize(cfg->pre_x*4, &burst_y, &remain_burst_y);	else 				// RGB16B		CalculateBurstSize(cfg->pre_x*2, &burst_y, &remain_burst_y);   	rCIPRCTRL = (burst_y<<19)|(remain_burst_y<<14);	CalculatePrescalerRatioShift(cfg->src_x, cfg->pre_x, &hratio, &hsft);	CalculatePrescalerRatioShift(cfg->src_y, cfg->pre_y, &vratio, &vsft);	mhratio = (cfg->src_x<<8)/(cfg->pre_x<<hsft);	mvratio = (cfg->src_y<<8)/(cfg->pre_y<<vsft);	rCIPRSCPRERATIO = ((10-hsft-vsft)<<28)|(hratio<<16)|(vratio);	rCIPRSCPREDST = ((cfg->src_x/hratio)<<16)|(cfg->src_y/vratio);	hscale = (cfg->src_x>cfg->pre_x)?0:1;	vscale = (cfg->src_y>cfg->pre_y)?0:1;	rCIPRSCCTRL = (1<<31)|((cfg->pre_fmt?1:0)<<30)|(hscale<<29)|(vscale<<28)|(mhratio<<16)|(mvratio);	rCIPRTAREA= cfg->pre_x*cfg->pre_y;}static __inline void start_capture(struct s3c2440_camif *dev){	switch(dev->mode) {	case 0:	case 1:		rCIPRSCCTRL |= 1<<15;		rCIIMGCPT |= 5<<29;		break;	case 2:	case 3:		rCICOSCCTRL |= (1<<15)|(s3c2440_camif_cfg.bypass?(1<<31):0);		rCIIMGCPT |= 6<<29;		break;	}}static __inline void stop_capture(struct s3c2440_camif *dev){	switch(dev->mode) {	case 0:	case 1:		rCIPRSCCTRL &= ~(1<<15);	//stop preview scaler.		rCIIMGCPT   &= ~(7<<29);	//stop capturing for preview and codec scaler.#ifndef CAMERA_STOP_QUICKLY		rCIPRCTRL |= (1<<2);		//Enable last IRQ at the end of frame capture.		//NOTE:LastIrqEn bit should be set after clearing CAPTURE_ENABLE_BIT & SCALER_START_BIT		dev->flag |= 0x200;#endif		break;	case 2:	case 3:		rCICOSCCTRL &= ~(1<<15);	//stop codec scaler.		rCIIMGCPT   &= ~(7<<29);	//stop capturing for preview and codec scaler.#ifndef CAMERA_STOP_QUICKLY		rCICOCTRL |= (1<<2);		//Enable last IRQ at the end of frame capture.		//NOTE:LastIrqEn bit should be set after clearing CAPTURE_ENABLE_BIT & SCALER_START_BIT		dev->flag |= 0x200;#endif		break;	}}// run in irq disabled statestatic void s3c2440_camif_isr_c(int irq, void *dev_id, struct pt_regs *regs){	struct s3c2440_camif *dev = (struct s3c2440_camif*)dev_id;		GPFDAT ^= 1<<4;	//LED0	if(dev->flag&1) {		if(dev->flag&0x200) {			dev->flag = 0;			complete(&dev->stop);		} else if(dev->flag&0x100) {			stop_capture(dev);#ifdef CAMERA_STOP_QUICKLY			dev->flag = 0;			complete(&dev->stop);#endif		} else#ifdef SKIP_FIRST_FRAME		if(dev->flag&4)#endif		{			if(!(dev->flag&2)) {				stop_capture(dev);#ifdef CAMERA_STOP_QUICKLY				dev->flag = 0;#endif			}			dev->rdy = 1;			wake_up_interruptible(&dev->wait);		}		dev->flag |= 4;	} else {		printk(KERN_ERR "flag is 0x%08x\n", dev->flag);		dev->flag = 1;	//error state, must not happen		stop_capture(dev);		printk(KERN_ERR "%s.%d: camera BUG!\n", __FILE__, __LINE__);	}}#define	s3c2440_camif_isr_p	s3c2440_camif_isr_cstatic int v4l_cam_open(struct video_device *v, int mode){	unsigned long flags;	struct s3c2440_camif *dev = (struct s3c2440_camif *)v->priv;	DPRINTK("%s():\n", __FUNCTION__);	spin_lock_irqsave(&dev->lock, flags);	if(dev->open_count) {		spin_unlock_irqrestore(&dev->lock, flags);		return -EBUSY;	}	dev->open_count++;	spin_unlock_irqrestore(&dev->lock, flags);	MOD_INC_USE_COUNT;	DPRINTK("open(): dev->opencount = %d\n", dev->open_count);		camera_power(1);	s3c2440_camif_init();		dev->set_chg = 1;	dev->mode = 0;	//RGB image	dev->flag = 0;	//not run, not ready	s3c2440_camif_cfg.dev   = dev;	s3c2440_camif_cfg.src_x = 640;	s3c2440_camif_cfg.src_y = 480;	s3c2440_camif_cfg.dst_x = 240;	s3c2440_camif_cfg.dst_y = 180;	s3c2440_camif_cfg.pre_x = 240;	s3c2440_camif_cfg.pre_y = 180;	s3c2440_camif_cfg.dst_fmt = 1;	s3c2440_camif_cfg.pre_fmt = 0;	s3c2440_camif_cfg.ycbcr   = 0;	//YCbCr	//s3c2440_camif_configure(&s3c2440_camif_cfg);	return 0;}static void v4l_cam_close(struct video_device *v){	unsigned long flags;	struct s3c2440_camif *dev = (struct s3c2440_camif *)(v->priv);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美军同video69gay| 欧美日韩一区二区三区免费看| 国产成人8x视频一区二区| 欧美这里有精品| 欧美激情中文不卡| 久久国产剧场电影| 欧美日韩视频在线第一区| 亚洲欧洲国产专区| 国产激情视频一区二区三区欧美 | 91福利社在线观看| 欧美经典一区二区| 狠狠色丁香婷综合久久| 欧美疯狂做受xxxx富婆| 亚洲精品福利视频网站| 成人a级免费电影| 久久久99久久| 久久av老司机精品网站导航| 欧美日韩国产一二三| 亚洲蜜臀av乱码久久精品 | 毛片av一区二区三区| 欧美日韩精品综合在线| 伊人色综合久久天天| 91麻豆成人久久精品二区三区| 日本一区二区三区免费乱视频 | 国产亚洲一区字幕| 精品一区二区三区欧美| 精品国产伦一区二区三区观看方式| 亚洲第一精品在线| 欧美精品一二三| 午夜在线成人av| 欧美美女一区二区在线观看| 日韩中文字幕区一区有砖一区| 欧美日韩在线免费视频| 午夜精品久久久久久久久久| 欧美高清视频不卡网| 日本vs亚洲vs韩国一区三区二区 | 国产成人夜色高潮福利影视| 国产无人区一区二区三区| 国产河南妇女毛片精品久久久| 久久综合久久综合九色| 国产jizzjizz一区二区| 欧美高清在线视频| 色综合 综合色| 亚洲成人免费在线| 日韩精品一区二区在线| 国产成人在线视频网站| 亚洲人吸女人奶水| 欧美日韩在线播放三区四区| 免费三级欧美电影| 久久婷婷国产综合国色天香| 成年人国产精品| 亚洲一区在线视频观看| 精品少妇一区二区三区在线播放| 国产尤物一区二区在线| 中文字幕在线不卡视频| 欧美日韩国产综合一区二区| 狠狠色伊人亚洲综合成人| 国产精品久久久久久久久免费丝袜| 色综合网站在线| 美女看a上一区| 中文字幕一区二区三区乱码在线| 精品视频免费看| 国产98色在线|日韩| 亚洲国产一区二区视频| 久久男人中文字幕资源站| 色婷婷精品大在线视频| 韩国毛片一区二区三区| 亚洲精品日韩一| 久久久不卡网国产精品一区| 色婷婷精品久久二区二区蜜臂av | 久久91精品久久久久久秒播| 亚洲三级久久久| 精品卡一卡二卡三卡四在线| 91丝袜呻吟高潮美腿白嫩在线观看| 天天综合色天天综合| 国产精品成人在线观看| 日韩一区二区三区高清免费看看| 波多野结衣一区二区三区 | 午夜视频久久久久久| 欧美经典一区二区三区| 91精品国产综合久久婷婷香蕉| av中文字幕亚洲| 国产九色精品成人porny| 亚洲一卡二卡三卡四卡| 亚洲国产高清不卡| 精品人在线二区三区| 欧美天堂亚洲电影院在线播放| 国产成人午夜99999| 毛片一区二区三区| 日韩精品久久理论片| 综合婷婷亚洲小说| 国产精品欧美一区二区三区| 日韩精品中午字幕| 中文字幕欧美一| 91黄色在线观看| 成人黄色网址在线观看| 韩国av一区二区三区四区| 日韩经典一区二区| 一区二区三区在线观看动漫| 国产精品久久网站| 国产视频911| 久久尤物电影视频在线观看| 日韩美女主播在线视频一区二区三区| 91高清视频在线| 91国内精品野花午夜精品| 成人av资源站| 波多野结衣一区二区三区| av网站免费线看精品| 不卡的av在线| 91色综合久久久久婷婷| 97精品视频在线观看自产线路二| 成人激情午夜影院| 99r精品视频| 91一区二区在线| 在线精品视频一区二区三四| 欧美午夜视频网站| 制服丝袜亚洲网站| 欧美成人伊人久久综合网| 欧美tk丨vk视频| 久久亚洲一区二区三区四区| 日本一区二区三区四区在线视频 | 亚洲成人av中文| 日本美女一区二区三区| 久久疯狂做爰流白浆xx| 国内精品在线播放| 国产精品丝袜久久久久久app| 久久久国产精品麻豆| 欧美一区欧美二区| 亚洲精品久久久久久国产精华液| 日韩一级高清毛片| 精品欧美一区二区三区精品久久| 精品伦理精品一区| 国产日韩v精品一区二区| 亚洲欧洲色图综合| 亚洲综合一区二区三区| 日韩精品色哟哟| 国产高清亚洲一区| 91麻豆精东视频| 51精品国自产在线| 国产亚洲1区2区3区| 亚洲美女视频在线观看| 欧美aaaaa成人免费观看视频| 美女爽到高潮91| 成人黄色777网| 欧美亚洲精品一区| 精品国产精品网麻豆系列 | 欧美日韩夫妻久久| 久久亚区不卡日本| 一区二区三区成人在线视频| 免费视频一区二区| 69堂亚洲精品首页| 国产情人综合久久777777| 亚洲影院久久精品| 国产精品羞羞答答xxdd| 欧美日韩一区二区欧美激情| 顶级嫩模精品视频在线看| av亚洲精华国产精华| 91.成人天堂一区| 国产精品不卡视频| 久久不见久久见免费视频7| 97精品国产露脸对白| 精品国产乱码久久久久久1区2区| 亚洲另类在线视频| 国产成人免费视频网站高清观看视频| 欧美在线视频全部完| 国产精品视频一二三区| 麻豆极品一区二区三区| 欧美日韩一级大片网址| 国产精品久久一卡二卡| 国产一区二区成人久久免费影院 | 国产精品网站一区| 老司机精品视频一区二区三区| 91亚洲精品乱码久久久久久蜜桃| 精品国偷自产国产一区| 亚洲成人先锋电影| 91在线你懂得| 国产精品天美传媒| 国产乱妇无码大片在线观看| 麻豆精品一区二区三区| 久久99久国产精品黄毛片色诱| 欧美午夜免费电影| 亚洲精品中文在线| 成人av集中营| 国产亲近乱来精品视频| 精品制服美女丁香| 国产精品久久久久婷婷二区次| 麻豆成人综合网| 日韩三级高清在线| 日日夜夜精品免费视频| 精品视频资源站| 五月天欧美精品| 欧美日韩极品在线观看一区| 亚洲精品免费视频| 色狠狠综合天天综合综合| 亚洲欧洲色图综合| 91日韩在线专区| 亚洲精品视频在线看| 91福利小视频| 亚洲成人免费av| 在线91免费看|