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

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

?? mx27_prphw.c

?? LINUX下的ov2640驅(qū)動(dòng)程序
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
	}	if (pscale->algo == ALGO_BIL) {		unsigned char i, j, k;		outv =		    (unsigned short)(inv / pscale->ratio[0] * pscale->ratio[1]);		inv %= pscale->ratio[0];		for (i = j = 0; inv > 0; j++) {			unsigned char nxt;			k = scale_get(pscale, &i, &nxt);			if (inv == 1 && k < SZ_COEF) {				/* needs 2 pixels for this output */				break;			}			inv -= nxt;		}		outv = outv + j;	} else {		unsigned char i, tot;		for (tot = i = 0; pscale->ratio[i]; i++)			tot = tot + pscale->ratio[i];		outv = (unsigned short)(inv / tot) * i;		inv %= tot;		for (i = 0; inv > 0; i++, outv++)			inv -= pscale->ratio[i];	}	if (!(*vout) || ((*vout) > outv))		*vout = outv;	if (pout)		*pout = outv;	return 0;}/*! * @brief Reset PrP block */int prphw_reset(void){	unsigned long val;	unsigned long flag;	int i;	flag = PRP_CNTL_RST;	val = PRP_CNTL_RSTVAL;	__raw_writel(flag, PRP_CNTL);	/* timeout */	for (i = 0; i < 1000; i++) {		if (!(__raw_readl(PRP_CNTL) & flag)) {			pr_debug("PrP reset over\n");			break;		}		msleep(1);	}	/* verify reset value */	if (__raw_readl(PRP_CNTL) != val) {		pr_info("PrP reset err, val = 0x%08X\n", __raw_readl(PRP_CNTL));		return -1;	}	return 0;}/*! * @brief Enable PrP channel. * @param channel	Channel number to be enabled * @return		Zero on success, others on failure */int prphw_enable(int channel){	unsigned long val;	val = __raw_readl(PRP_CNTL);	if (channel & PRP_CHANNEL_1)		val |= PRP_CNTL_CH1EN;	if (channel & PRP_CHANNEL_2)		val |=		    (PRP_CNTL_CH2EN | PRP_CNTL_CH2_FLOWEN | PRP_CNTL_AUTODROP);	__raw_writel(val, PRP_CNTL);	return 0;}/*! * @brief Disable PrP channel. * @param channel	Channel number to be disable * @return		Zero on success, others on failure */int prphw_disable(int channel){	unsigned long val;	val = __raw_readl(PRP_CNTL);	if (channel & PRP_CHANNEL_1)		val &= ~PRP_CNTL_CH1EN;	if (channel & PRP_CHANNEL_2)		val &= ~(PRP_CNTL_CH2EN | PRP_CNTL_CH2_FLOWEN);	__raw_writel(val, PRP_CNTL);	return 0;}/*! * @brief Set PrP input buffer address. * @param cfg	Pointer to PrP configuration parameter * @return	Zero on success, others on failure */int prphw_inptr(emma_prp_cfg * cfg){	if (cfg->in_csi & PRP_CSI_EN)		return -1;	__raw_writel(cfg->in_ptr, PRP_SOURCE_Y_PTR);	if (cfg->in_pix == PRP_PIXIN_YUV420) {		u32 size;		size = cfg->in_line_stride * cfg->in_height;		__raw_writel(cfg->in_ptr + size, PRP_SOURCE_CB_PTR);		__raw_writel(cfg->in_ptr + size + (size >> 2),			     PRP_SOURCE_CR_PTR);	}	return 0;}/*! * @brief Set PrP channel 1 output buffer 1 address. * @param cfg	Pointer to PrP configuration parameter * @return	Zero on success, others on failure */int prphw_ch1ptr(emma_prp_cfg * cfg){	if (cfg->ch1_pix == PRP_PIX1_UNUSED)		return -1;	__raw_writel(cfg->ch1_ptr, PRP_DEST_RGB1_PTR);	/* support double buffer in loop mode only */	if ((cfg->in_csi & PRP_CSI_LOOP) == PRP_CSI_LOOP) {		if (cfg->ch1_ptr2)			__raw_writel(cfg->ch1_ptr2, PRP_DEST_RGB2_PTR);		else			__raw_writel(cfg->ch1_ptr, PRP_DEST_RGB2_PTR);	}	return 0;}/*! * @brief Set PrP channel 1 output buffer 2 address. * @param cfg	Pointer to PrP configuration parameter * @return	Zero on success, others on failure */int prphw_ch1ptr2(emma_prp_cfg * cfg){	if (cfg->ch1_pix == PRP_PIX1_UNUSED ||	    (cfg->in_csi & PRP_CSI_LOOP) != PRP_CSI_LOOP)		return -1;	if (cfg->ch1_ptr2)		__raw_writel(cfg->ch1_ptr2, PRP_DEST_RGB2_PTR);	else		return -1;	return 0;}/*! * @brief Set PrP channel 2 output buffer 1 address. * @param cfg	Pointer to PrP configuration parameter * @return	Zero on success, others on failure */int prphw_ch2ptr(emma_prp_cfg * cfg){	u32 size;	if (cfg->ch2_pix == PRP_PIX2_UNUSED)		return -1;	__raw_writel(cfg->ch2_ptr, PRP_DEST_Y_PTR);	if (cfg->ch2_pix == PRP_PIX2_YUV420) {		size = cfg->ch2_width * cfg->ch2_height;		__raw_writel(cfg->ch2_ptr + size, PRP_DEST_CB_PTR);		__raw_writel(cfg->ch2_ptr + size + (size >> 2),			     PRP_DEST_CR_PTR);	}	__raw_writel(__raw_readl(PRP_CNTL) | PRP_CNTL_CH2B1, PRP_CNTL);	return 0;}/*! * @brief Set PrP channel 2 output buffer 2 address. * @param cfg	Pointer to PrP configuration parameter * @return	Zero on success, others on failure */int prphw_ch2ptr2(emma_prp_cfg * cfg){	u32 size;	if (cfg->ch2_pix == PRP_PIX2_UNUSED ||	    (cfg->in_csi & PRP_CSI_LOOP) != PRP_CSI_LOOP)		return -1;	__raw_writel(cfg->ch2_ptr2, PRP_SOURCE_Y_PTR);	if (cfg->ch2_pix == PRP_PIX2_YUV420) {		size = cfg->ch2_width * cfg->ch2_height;		__raw_writel(cfg->ch2_ptr2 + size, PRP_SOURCE_CB_PTR);		__raw_writel(cfg->ch2_ptr2 + size + (size >> 2),			     PRP_SOURCE_CR_PTR);	}	__raw_writel(__raw_readl(PRP_CNTL) | PRP_CNTL_CH2B2, PRP_CNTL);	return 0;}/*! * @brief Build CSC table * @param csc	CSC table *		in	csc[0]=index		0..3 : A.1 A.0 B.1 B.0 *			csc[1]=direction	0 : YUV2RGB  1 : RGB2YUV *		out	csc[0..4] are coefficients c[9] is offset *			csc[0..8] are coefficients c[9] is offset */void csc_tbl(short csc[10]){	static const unsigned short _r2y[][9] = {		{0x4D, 0x4B, 0x3A, 0x57, 0x55, 0x40, 0x40, 0x6B, 0x29},		{0x42, 0x41, 0x32, 0x4C, 0x4A, 0x38, 0x38, 0x5E, 0x24},		{0x36, 0x5C, 0x25, 0x3B, 0x63, 0x40, 0x40, 0x74, 0x18},		{0x2F, 0x4F, 0x20, 0x34, 0x57, 0x38, 0x38, 0x66, 0x15},	};	static const unsigned short _y2r[][5] = {		{0x80, 0xb4, 0x2c, 0x5b, 0x0e4},		{0x95, 0xcc, 0x32, 0x68, 0x104},		{0x80, 0xca, 0x18, 0x3c, 0x0ec},		{0x95, 0xe5, 0x1b, 0x44, 0x1e0},	};	unsigned short *_csc;	int _csclen;	csc[9] = csc[0] & 1;	_csclen = csc[0] & 3;	if (csc[1]) {		_csc = (unsigned short *)_r2y[_csclen];		_csclen = sizeof(_r2y[0]);	} else {		_csc = (unsigned short *)_y2r[_csclen];		_csclen = sizeof(_y2r[0]);		memset(csc + 5, 0, sizeof(short) * 4);	}	memcpy(csc, _csc, _csclen);}/*! * @brief Setup PrP resize coefficient registers * * @param ch	PrP channel number * @param dir	Direction, 0 - horizontal, 1 - vertical * @param scale	The pointer to scale_t structure */static void prp_set_scaler(int ch, int dir, scale_t * scale){	int i;	unsigned int coeff[2];	unsigned int valid;	for (coeff[0] = coeff[1] = valid = 0, i = 19; i >= 0; i--) {		int j;		j = i > 9 ? 1 : 0;		coeff[j] = (coeff[j] << BC_COEF) |		    (scale->tbl[i] & (SZ_COEF - 1));		if (i == 5 || i == 15)			coeff[j] <<= 1;		valid = (valid << 1) | (scale->tbl[i] >> BC_COEF);	}	valid |= (scale->len << 24) | ((2 - scale->algo) << 31);	for (i = 0; i < 2; i++)		(*PRP_RSZ_COEFF)[1 - ch][dir].coeff[i] = coeff[i];	(*PRP_RSZ_COEFF)[1 - ch][dir].cntl = valid;}/*! * @brief Setup PrP registers relevant to input. * @param cfg		Pointer to PrP configuration parameter * @param prp_cntl	Holds the value for PrP control register * @return		Zero on success, others on failure */static int prphw_input_cfg(emma_prp_cfg * cfg, unsigned long *prp_cntl){	unsigned long mask;	switch (cfg->in_pix) {	case PRP_PIXIN_YUV420:		*prp_cntl |= PRP_CNTL_IN_YUV420;		mask = 0x7;		break;	case PRP_PIXIN_YUYV:	case PRP_PIXIN_YVYU:	case PRP_PIXIN_UYVY:	case PRP_PIXIN_VYUY:		*prp_cntl |= PRP_CNTL_IN_YUV422;		mask = 0x1;		break;	case PRP_PIXIN_RGB565:		*prp_cntl |= PRP_CNTL_IN_RGB16;		mask = 0x1;		break;	case PRP_PIXIN_RGB888:		*prp_cntl |= PRP_CNTL_IN_RGB32;		mask = 0;		break;	default:		pr_debug("Unsupported input pix format 0x%08X\n", cfg->in_pix);		return -1;	}	/* align the input image width */	if (cfg->in_width & mask) {		pr_debug("in_width misaligned. in_width=%d\n", cfg->in_width);		return -1;	}	if ((cfg->in_width < PRP_MIN_IN_WIDTH)	    || (cfg->in_width > PRP_MAX_IN_WIDTH)) {		pr_debug("Unsupported input width %d\n", cfg->in_width);		return -1;	}	cfg->in_height &= ~1;	/* truncate to make even */	if ((cfg->in_height < PRP_MIN_IN_HEIGHT)	    || (cfg->in_height > PRP_MAX_IN_HEIGHT)) {		pr_debug("Unsupported input height %d\n", cfg->in_height);		return -1;	}	if (!(cfg->in_csi & PRP_CSI_EN))		if (!cfg->in_line_stride)			cfg->in_line_stride = cfg->in_width;	__raw_writel(cfg->in_pix, PRP_SRC_PIXEL_FORMAT_CNTL);	__raw_writel((cfg->in_width << 16) | cfg->in_height,		     PRP_SOURCE_FRAME_SIZE);	__raw_writel((cfg->in_line_skip << 16) | cfg->in_line_stride,		     PRP_SOURCE_LINE_STRIDE);	if (!(cfg->in_csi & PRP_CSI_EN)) {		__raw_writel(cfg->in_ptr, PRP_SOURCE_Y_PTR);		if (cfg->in_pix == PRP_PIXIN_YUV420) {			unsigned int size;			size = cfg->in_line_stride * cfg->in_height;			__raw_writel(cfg->in_ptr + size, PRP_SOURCE_CB_PTR);			__raw_writel(cfg->in_ptr + size + (size >> 2),				     PRP_SOURCE_CR_PTR);		}	}	/* always cropping */	*prp_cntl |= PRP_CNTL_WINEN;	/* color space conversion */	if (!cfg->in_csc[1]) {		if (cfg->in_csc[0] > 3) {			pr_debug("in_csc invalid 0x%X\n", cfg->in_csc[0]);			return -1;		}		if ((cfg->in_pix == PRP_PIXIN_RGB565)		    || (cfg->in_pix == PRP_PIXIN_RGB888))			cfg->in_csc[1] = 1;		else			cfg->in_csc[0] = 0;		csc_tbl(cfg->in_csc);	}	__raw_writel((cfg->in_csc[0] << 21) | (cfg->in_csc[1] << 11)		     | cfg->in_csc[2], PRP_CSC_COEF_012);	__raw_writel((cfg->in_csc[3] << 21) | (cfg->in_csc[4] << 11)		     | cfg->in_csc[5], PRP_CSC_COEF_345);	__raw_writel((cfg->in_csc[6] << 21) | (cfg->in_csc[7] << 11)		     | cfg->in_csc[8] | (cfg->in_csc[9] << 31),		     PRP_CSC_COEF_678);	if (cfg->in_csi & PRP_CSI_EN) {		*prp_cntl |= PRP_CNTL_CSI;		/* loop mode enable, ch1 ch2 together */		if ((cfg->in_csi & PRP_CSI_LOOP) == PRP_CSI_LOOP)			*prp_cntl |= (PRP_CNTL_CH1_LOOP | PRP_CNTL_CH2_LOOP);	}	return 0;}/*! * @brief Setup PrP registers relevant to channel 2. * @param cfg		Pointer to PrP configuration parameter * @param prp_cntl	Holds the value for PrP control register * @return		Zero on success, others on failure */static int prphw_ch2_cfg(emma_prp_cfg * cfg, unsigned long *prp_cntl){	switch (cfg->ch2_pix) {	case PRP_PIX2_YUV420:		*prp_cntl |= PRP_CNTL_CH2_YUV420;		break;	case PRP_PIX2_YUV422:		*prp_cntl |= PRP_CNTL_CH2_YUV422;		break;	case PRP_PIX2_YUV444:		*prp_cntl |= PRP_CNTL_CH2_YUV444;		break;	case PRP_PIX2_UNUSED:		return 0;	default:		pr_debug("Unsupported channel 2 pix format 0x%08X\n",			 cfg->ch2_pix);		return -1;	}	if (cfg->ch2_pix == PRP_PIX2_YUV420) {		cfg->ch2_height &= ~1;	/* ensure U/V presence */		cfg->ch2_width &= ~7;	/* ensure U/V word aligned */	} else if (cfg->ch2_pix == PRP_PIX2_YUV422) {		cfg->ch2_width &= ~1;	/* word aligned */	}	__raw_writel((cfg->ch2_width << 16) | cfg->ch2_height,		     PRP_CH2_OUT_IMAGE_SIZE);	if (cfg->ch2_pix == PRP_PIX2_YUV420) {		u32 size;		/* Luminanance band start address */		__raw_writel(cfg->ch2_ptr, PRP_DEST_Y_PTR);		if ((cfg->in_csi & PRP_CSI_LOOP) == PRP_CSI_LOOP) {			if (!cfg->ch2_ptr2)				__raw_writel(cfg->ch2_ptr, PRP_SOURCE_Y_PTR);			else				__raw_writel(cfg->ch2_ptr2, PRP_SOURCE_Y_PTR);		}		/* Cb and Cr band start address */		size = cfg->ch2_width * cfg->ch2_height;		__raw_writel(cfg->ch2_ptr + size, PRP_DEST_CB_PTR);		__raw_writel(cfg->ch2_ptr + size + (size >> 2),			     PRP_DEST_CR_PTR);		if ((cfg->in_csi & PRP_CSI_LOOP) == PRP_CSI_LOOP) {			if (!cfg->ch2_ptr2) {				__raw_writel(cfg->ch2_ptr + size,					     PRP_SOURCE_CB_PTR);				__raw_writel(cfg->ch2_ptr + size + (size >> 2),					     PRP_SOURCE_CR_PTR);			} else {				__raw_writel(cfg->ch2_ptr2 + size,					     PRP_SOURCE_CB_PTR);				__raw_writel(cfg->ch2_ptr2 + size + (size >> 2),					     PRP_SOURCE_CR_PTR);			}		}	} else {		/* Pixel interleaved YUV422 or YUV444 */		__raw_writel(cfg->ch2_ptr, PRP_DEST_Y_PTR);		if ((cfg->in_csi & PRP_CSI_LOOP) == PRP_CSI_LOOP) {			if (!cfg->ch2_ptr2)				__raw_writel(cfg->ch2_ptr, PRP_SOURCE_Y_PTR);			else				__raw_writel(cfg->ch2_ptr2, PRP_SOURCE_Y_PTR);		}	}	*prp_cntl |= PRP_CNTL_CH2B1 | PRP_CNTL_CH2B2;	return 0;}/*! * @brief Setup PrP registers relevant to channel 1. * @param cfg		Pointer to PrP configuration parameter * @param prp_cntl	Holds the value for PrP control register * @return		Zero on success, others on failure */static int prphw_ch1_cfg(emma_prp_cfg * cfg, unsigned long *prp_cntl){	int ch1_bpp = 0;	switch (cfg->ch1_pix) {	case PRP_PIX1_RGB332:		*prp_cntl |= PRP_CNTL_CH1_RGB8;		ch1_bpp = 1;		break;	case PRP_PIX1_RGB565:		*prp_cntl |= PRP_CNTL_CH1_RGB16;		ch1_bpp = 2;		break;	case PRP_PIX1_RGB888:		*prp_cntl |= PRP_CNTL_CH1_RGB32;		ch1_bpp = 4;		break;	case PRP_PIX1_YUYV:	case PRP_PIX1_YVYU:	case PRP_PIX1_UYVY:	case PRP_PIX1_VYUY:		*prp_cntl |= PRP_CNTL_CH1_YUV422;		ch1_bpp = 2;		break;	case PRP_PIX1_UNUSED:		return 0;	default:		pr_debug("Unsupported channel 1 pix format 0x%08X\n",			 cfg->ch1_pix);		return -1;	}	/* parallel or cascade resize */	if (cfg->ch1_scale.algo & PRP_ALGO_BYPASS)		*prp_cntl |= PRP_CNTL_UNCHAIN;	/* word align */	if (ch1_bpp == 2)		cfg->ch1_width &= ~1;	else if (ch1_bpp == 1)		cfg->ch1_width &= ~3;	if (!cfg->ch1_stride)		cfg->ch1_stride = cfg->ch1_width;	__raw_writel(cfg->ch1_pix, PRP_CH1_PIXEL_FORMAT_CNTL);	__raw_writel((cfg->ch1_width << 16) | cfg->ch1_height,		     PRP_CH1_OUT_IMAGE_SIZE);	__raw_writel(cfg->ch1_stride * ch1_bpp, PRP_CH1_LINE_STRIDE);	__raw_writel(cfg->ch1_ptr, PRP_DEST_RGB1_PTR);	/* double buffer for loop mode */	if ((cfg->in_csi & PRP_CSI_LOOP) == PRP_CSI_LOOP) {		if (cfg->ch1_ptr2)			__raw_writel(cfg->ch1_ptr2, PRP_DEST_RGB2_PTR);		else			__raw_writel(cfg->ch1_ptr, PRP_DEST_RGB2_PTR);	}	return 0;}/*! * @brief Setup PrP registers. * @param cfg	Pointer to PrP configuration parameter * @return	Zero on success, others on failure */int prphw_cfg(emma_prp_cfg * cfg){	unsigned long prp_cntl = 0;	unsigned long val;	/* input pixel format checking */	if (prphw_input_cfg(cfg, &prp_cntl))		return -1;	if (prphw_ch2_cfg(cfg, &prp_cntl))		return -1;	if (prphw_ch1_cfg(cfg, &prp_cntl))		return -1;	/* register setting */	__raw_writel(prp_cntl, PRP_CNTL);	/* interrupt configuration */	val = PRP_INTRCNTL_RDERR | PRP_INTRCNTL_LBOVF;	if (cfg->ch1_pix != PRP_PIX1_UNUSED)		val |= PRP_INTRCNTL_CH1FC | PRP_INTRCNTL_CH1WERR;	if (cfg->ch2_pix != PRP_PIX2_UNUSED)		val |=		    PRP_INTRCNTL_CH2FC | PRP_INTRCNTL_CH2WERR |		    PRP_INTRCNTL_CH2OVF;	__raw_writel(val, PRP_INTRCNTL);	prp_set_scaler(1, 0, &cfg->scale[0]);	/* Channel 1 width */	prp_set_scaler(1, 1, &cfg->scale[1]);	/* Channel 1 height */	prp_set_scaler(0, 0, &cfg->scale[2]);	/* Channel 2 width */	prp_set_scaler(0, 1, &cfg->scale[3]);	/* Channel 2 height */	prp_dump();	return 0;}/*! * @brief Check PrP interrupt status. * @return	PrP interrupt status */int prphw_isr(void){	int status;	status = __raw_readl(PRP_INTRSTATUS) & 0x1FF;	if (status & (PRP_INTRSTAT_RDERR | PRP_INTRSTAT_CH1WERR |		      PRP_INTRSTAT_CH2WERR))		pr_debug("isr bus error. status= 0x%08X\n", status);	else if (status & PRP_INTRSTAT_CH2OVF)		pr_debug("isr ch 2 buffer overflow. status= 0x%08X\n", status);	else if (status & PRP_INTRSTAT_LBOVF)		pr_debug("isr line buffer overflow. status= 0x%08X\n", status);	/* silicon bug?? enable bit does not self clear? */	if (!(__raw_readl(PRP_CNTL) & PRP_CNTL_CH1_LOOP))		__raw_writel(__raw_readl(PRP_CNTL) & (~PRP_CNTL_CH1EN),			     PRP_CNTL);	if (!(__raw_readl(PRP_CNTL) & PRP_CNTL_CH2_LOOP))		__raw_writel(__raw_readl(PRP_CNTL) & (~PRP_CNTL_CH2EN),			     PRP_CNTL);	__raw_writel(status, PRP_INTRSTATUS);	/* clr irq */	return status;}static struct clk *emma_clk;/*! * @brief  PrP module clock enable */void prphw_init(void){	emma_clk = clk_get(NULL, "emma_clk");	clk_enable(emma_clk);}/*! * @brief PrP module clock disable */void prphw_exit(void){	clk_disable(emma_clk);	clk_put(emma_clk);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女爱视频在线| 蜜臀av性久久久久蜜臀av麻豆| 欧美日本乱大交xxxxx| 精品一区二区免费看| 樱桃国产成人精品视频| 久久久99久久| 欧美丰满一区二区免费视频| 粉嫩一区二区三区在线看| 天堂一区二区在线免费观看| 亚洲欧洲国产专区| www国产成人免费观看视频 深夜成人网| 色94色欧美sute亚洲线路二| 国产成人精品免费一区二区| 蜜臀精品久久久久久蜜臀 | 色婷婷激情综合| 国产一区二区三区综合| 日产精品久久久久久久性色| 亚洲美女视频在线观看| 中文av一区二区| 久久综合色婷婷| 欧美电视剧在线观看完整版| 欧美精品久久久久久久久老牛影院| av一区二区三区四区| 成人精品高清在线| 国产福利一区二区三区视频 | 欧美大片在线观看| 欧美日韩久久久| 在线观看亚洲一区| 91麻豆国产精品久久| a级精品国产片在线观看| 国产91精品欧美| 成人免费观看视频| 国产成人免费视频网站| 国产成人超碰人人澡人人澡| 国产精品中文字幕日韩精品| 紧缚捆绑精品一区二区| 久久99精品国产麻豆不卡| 免费美女久久99| 久久精品国产成人一区二区三区| 免费观看在线综合色| 久久精品国产一区二区| 老司机精品视频在线| 国产伦精品一区二区三区免费 | 欧美日韩国产成人在线91| 在线精品视频免费播放| 欧美伊人久久久久久久久影院| 日本韩国视频一区二区| 欧美日韩一区三区| 678五月天丁香亚洲综合网| 91精品国产综合久久小美女| 91精品国产综合久久香蕉麻豆| 日韩免费视频线观看| 久久伊99综合婷婷久久伊| 国产亚洲午夜高清国产拍精品| 国产免费观看久久| 国产精品久久久久国产精品日日| 亚洲欧洲另类国产综合| 亚洲国产成人av| 日本不卡的三区四区五区| 狠狠色丁香婷婷综合| 高清不卡在线观看av| 91麻豆免费视频| 欧美疯狂性受xxxxx喷水图片| 欧美mv日韩mv国产网站app| 国产欧美一区二区精品性色超碰| 亚洲同性同志一二三专区| 午夜视频在线观看一区| 国产尤物一区二区在线| 不卡的av在线| 欧美精品xxxxbbbb| 国产欧美一区二区三区鸳鸯浴 | 国产乱子伦视频一区二区三区| 成人午夜激情片| 欧美日韩精品高清| 国产亚洲一区二区三区在线观看| 亚洲欧美日韩成人高清在线一区| 五月婷婷激情综合网| 国产精品乡下勾搭老头1| 色哟哟日韩精品| 精品久久久久久最新网址| 成人欧美一区二区三区在线播放| 天堂在线一区二区| 欧美日韩大陆一区二区| 2023国产精品自拍| 一区二区三区成人在线视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 成人免费高清视频| 日韩视频一区二区三区| 亚洲视频你懂的| 韩日精品视频一区| 欧美体内she精视频| 国产视频亚洲色图| 奇米精品一区二区三区在线观看一| 成人激情免费视频| 欧美v国产在线一区二区三区| 亚洲品质自拍视频| 国产综合久久久久久鬼色| 欧美色国产精品| 亚洲欧洲日产国产综合网| 精品一区二区三区免费毛片爱| 欧美亚洲丝袜传媒另类| 国产欧美中文在线| 九九精品视频在线看| 欧美日韩美少妇| 亚洲视频中文字幕| 国产成人精品1024| 久久伊人蜜桃av一区二区| 午夜a成v人精品| 在线观看av不卡| 亚洲欧美视频在线观看| 国产精品一二三在| 精品久久久久久久一区二区蜜臀| 午夜婷婷国产麻豆精品| 色婷婷激情综合| 亚洲欧洲99久久| 成人午夜免费视频| 国产清纯美女被跳蛋高潮一区二区久久w| 日本美女视频一区二区| 欧美日韩日日骚| 亚洲一区二区三区中文字幕| 成人动漫中文字幕| 久久精品一区二区| 国产在线精品国自产拍免费| 91精品国产91久久久久久最新毛片 | 欧美午夜精品一区二区三区| 国产精品国产三级国产普通话蜜臀| 黄色精品一二区| 精品久久免费看| 精品一区二区久久| 精品盗摄一区二区三区| 国产在线播精品第三| 久久久久久久久久久99999| 国产一二精品视频| 欧美极品另类videosde| 成人精品鲁一区一区二区| 国产精品视频第一区| 成人激情动漫在线观看| 亚洲欧洲成人精品av97| 91高清视频在线| 午夜伦理一区二区| 欧美一区二区福利在线| 久久99国产精品久久99果冻传媒| 欧美大肚乱孕交hd孕妇| 国产麻豆精品在线| 国产精品毛片无遮挡高清| 欧美激情一区在线| 99精品欧美一区二区三区小说| 亚洲欧美一区二区在线观看| 色成人在线视频| 亚洲成a人在线观看| 日韩美女在线视频 | 在线观看区一区二| 午夜日韩在线观看| 日韩亚洲欧美成人一区| 国产一区二区福利| 亚洲视频在线观看三级| 欧美视频在线一区| 蜜桃一区二区三区在线观看| 久久综合久久鬼色中文字| 成人国产精品视频| 亚洲五码中文字幕| 欧美本精品男人aⅴ天堂| 丰满岳乱妇一区二区三区| 亚洲三级在线看| 911精品国产一区二区在线| 久久99国产精品免费| 自拍偷拍欧美精品| 91精品国产日韩91久久久久久| 国产资源在线一区| 亚洲欧美日韩国产成人精品影院| 欧美电影影音先锋| 国产成人在线电影| 亚洲午夜影视影院在线观看| 精品国产凹凸成av人导航| 91色视频在线| 久久精品二区亚洲w码| 综合久久久久久| 精品久久久久一区二区国产| 色综合久久综合网97色综合| 免费观看在线综合色| 亚洲日本青草视频在线怡红院| 欧美一级欧美一级在线播放| 成人99免费视频| 老司机精品视频一区二区三区| 一区在线中文字幕| 精品盗摄一区二区三区| 欧美三级电影在线观看| 成人午夜免费视频| 久久99精品久久只有精品| 亚洲一区二区三区中文字幕在线| 国产欧美一区二区三区鸳鸯浴| 在线播放91灌醉迷j高跟美女| 成人aa视频在线观看| 精品中文字幕一区二区| 亚洲一区在线看| 专区另类欧美日韩| 国产日韩精品一区二区三区| 69成人精品免费视频| 色老头久久综合| 不卡影院免费观看|