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

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

?? tftconfig.c

?? BlackFin與攝像頭的接口程序
?? C
字號:
/** *********************************************************************
 * @file TFTconfig.c
 * @author Roland Oberhammer
 * @date 2006-06-16
 * @version 1.0
 *
 * initialize the TFT display
 *
 * NOTE: 	Currently the TFT-display functions are hardcoded 
 *			for 240 * 320 pixel.
 *			No other resolution is currently supported because 
 *			the timing is hardcoded.
 *
 *			If the framebuffer driver is in landscape format and the display 
 *			is in portrait format use the TFT_ROTATE_FRAME macro to rotate the frame.
 *			If you use this macro be sure that a section named
 *			"tft_descriptor_chain" is described in your linker file. For performance
 *			issues this section has to be in the internal l1 data memory.
 *
 *			If you use timer5 on a CM-BF537 be sure to have enabled the
 *			pin on the core module (soldering the right mount option)
 *
 *
 * @see TFTconfig.h
  ********************************************************************* **/
#include <environment.h>
#include <cycle_count_bf.h>
#include "../pwrmngt/clockquery.h"
#include "TFTConfig.h"
#include "../PPIconfig.h"
#include "../gpTimerConfig.h"

// needed for mdma
#if defined (__ADSPBF561__)
#include <cdefbf561.h>
#elif defined (__ADSPBF533__)
#include <cdefbf533.h>
#elif defined (__ADSPBF537__)
#include <cdefbf537.h>
#else
#error "processor not yet supported"
#endif


// If the framebuffer driver is in landscape format and the display 
// is in portrait format use the TFT_ROTATE_FRAME macro to rotate the frame.
// If you use this macro be sure that a section named
// "tft_descriptor_chain" is described in your linker file. For performance
// issues this section has to be in the internal l1 data memory.
#ifndef TFT_ROTATE_FRAME
#define TFT_ROTATE_FRAME
#endif

#ifndef TFT_DTMG_OVER_AND_GATE
#define TFT_DTMG_OVER_AND_GATE	// needed if the display is connected over an AND gate to create the dtmg timing
#endif

// some global stuff for managment purposes
section ("tft_descriptor_chain") static T_TFT_SPEC g_TFTspec;
// frame complete flag
section ("tft_descriptor_chain") unsigned char g_TFT_FrameComplete = 0;

unsigned short nBitReverse_Blue []  = { 0x0000, 0x8000, 0x4000, 0xc000, 0x2000, 0xa000, 0x6000, 0xe000, 0x1000, 0x9000, 0x5000, 0xd000, 0x3000,
								 	   0xb000, 0x7000, 0xf000, 0x0800, 0x8800, 0x4800, 0xc800, 0x2800, 0xa800, 0x6800, 0xe800, 0x1800, 0x9800,
									   0x5800, 0xd800, 0x3800, 0xb800, 0x7800, 0xf800 };
unsigned short nBitReverse_Green [] = { 0x0000, 0x0400, 0x0200, 0x0600, 0x0100, 0x0500, 0x0300, 0x0700, 0x0080, 0x0480, 0x0280, 0x0680, 0x0180,
									   0x0580, 0x0380, 0x0780, 0x0040, 0x0440, 0x0240, 0x0640, 0x0140, 0x0540, 0x0340, 0x0740, 0x00c0, 0x04c0,
									   0x02c0, 0x06c0, 0x01c0, 0x05c0, 0x03c0, 0x07c0, 0x0020, 0x0420, 0x0220, 0x0620, 0x0120, 0x0520, 0x0320, 
									   0x0720, 0x00a0, 0x04a0, 0x02a0, 0x06a0, 0x01a0, 0x05a0, 0x03a0, 0x07a0, 0x0060, 0x0460, 0x0260, 0x0660,
									   0x0160, 0x0560, 0x0360, 0x0760, 0x00e0, 0x04e0, 0x02e0, 0x06e0, 0x01e0, 0x05e0, 0x03e0, 0x07e0 };
unsigned short nBitReverse_Red []   = { 0x0000, 0x0010, 0x0008, 0x0018, 0x0004, 0x0014, 0x000c, 0x001c, 0x0002, 0x0012, 0x000a, 0x001a, 0x0006,
									   0x0016, 0x000e, 0x001e, 0x0001, 0x0011, 0x0009, 0x0019, 0x0005, 0x0015, 0x000d, 0x001d, 0x0003, 0x0013,
									   0x000b, 0x001b, 0x0007, 0x0017, 0x000f, 0x001f };
									   
									   
									   
#ifdef TFT_ROTATE_FRAME
// descriptor list for the dma chain including descriptors for blanking lines
section ("tft_descriptor_chain") unsigned long anTFTdmaDescriptorTable[2 * (TFT_YSIZE + TFT_Y_BLANKING_LINES)];
// frame line counter
#endif
#ifndef TFT_DTMG_OVER_AND_GATE
section ("tft_descriptor_chain") signed short g_TFTlineCounter = 0;
#endif

#pragma section ("L1_code")
void TFTsetPixel (unsigned short x, unsigned short y, unsigned char pa_cRed, unsigned char pa_cGreen, unsigned char pa_cBlue) {
#ifdef TFT_ROTATE_FRAME
	if (g_TFTspec.bBitReverse) {
		*(unsigned short *)(((y * g_TFTspec.nYsize + /*y * TFT_Y_BLANKING_LINES*/ + x) * 2) + (unsigned long)g_TFTspec.pnFrameBuffer) = nBitReverse_Blue[pa_cBlue] | nBitReverse_Green[pa_cGreen] | nBitReverse_Red[pa_cRed];
	} else {
		*(unsigned short *)(((y * g_TFTspec.nYsize + /*y * TFT_Y_BLANKING_LINES*/ + x) * 2) + (unsigned long)g_TFTspec.pnFrameBuffer) = (pa_cBlue << 11) | (pa_cGreen << 5) | pa_cRed;
	}
#else
	if (g_TFTspec.bBitReverse) {
		*(unsigned short *)(((y * g_TFTspec.nXsize + x) * 2) + (unsigned long)g_TFTspec.pnFrameBuffer + TFT_Y_BLANKING_LINES * g_TFTspec.nXsize * g_TFTspec.cBytesPerPixel) = nBitReverse_Blue[pa_cBlue] | nBitReverse_Green[pa_cGreen] | nBitReverse_Red[pa_cRed];
	} else {
		*(unsigned short *)(((y * g_TFTspec.nXsize + x) * 2) + (unsigned long)g_TFTspec.pnFrameBuffer + TFT_Y_BLANKING_LINES * g_TFTspec.nXsize * g_TFTspec.cBytesPerPixel) = (pa_cBlue << 11) | (pa_cGreen << 5) | pa_cRed;
	}
#endif
}

#pragma section ("L1_code")
void TFTgetPixel(unsigned short x, unsigned short y, unsigned char *pa_pcRed, unsigned char *pa_pcGreen, unsigned char *pa_pcBlue) {
#ifdef TFT_ROTATE_FRAME		
	unsigned short nPixel = *(unsigned short *)(((y * g_TFTspec.nYsize + y * TFT_Y_BLANKING_LINES + x) * 2) + (unsigned long)g_TFTspec.pnFrameBuffer);
#else	
	unsigned short nPixel = *(unsigned short *)(((y * g_TFTspec.nXsize + x) * 2) + (unsigned long)g_TFTspec.pnFrameBuffer + TFT_Y_BLANKING_LINES * g_TFTspec.nXsize * g_TFTspec.cBytesPerPixel);
#endif
	*pa_pcRed = nPixel & 0x1f;
	*pa_pcGreen = (nPixel >> 5)  & 0x3f;
	*pa_pcBlue = (nPixel >> 11) & 0x1f;
}

#pragma section ("L1_code")
void TFTblendPixel(unsigned short x, unsigned short y, unsigned char pa_cRed, unsigned char pa_cGreen, unsigned char pa_cBlue, unsigned char pa_cAlpha) {
	unsigned char cRed;
	unsigned char cGreen;
	unsigned char cBlue;
	// fetch the current pixel color
	TFTgetPixel(x, y, &cRed, &cGreen, &cBlue);
	// calc the blend colors
	cRed = (pa_cRed * pa_cAlpha + cRed * (255 - pa_cAlpha)) >> 8;
	cGreen = (pa_cGreen * pa_cAlpha + cGreen * (255 - pa_cAlpha)) >> 8;
	cBlue = (pa_cBlue * pa_cAlpha + cBlue * (255 - pa_cAlpha)) >> 8;
	// set the new pixel color
	TFTsetPixel(x, y, cRed, cGreen, cBlue);
}

#ifndef TFT_DTMG_OVER_AND_GATE
// interrupt handler for the ppi dma
#pragma section ("L1_code") 
void TFTppiHandler(void *pa_pClientArg) {
//#ifdef TFT_ROTATE_FRAME
	g_TFTlineCounter ++;
	if (g_TFTlineCounter == TFT_Y_BLANKING_LINES + 1) {
		// start normal period
		timer_set_period (g_TFTspec.tDtmgTimerHndl, TFT_XSIZE + TFT_X_BLANKING);
		timer_set_width (g_TFTspec.tDtmgTimerHndl, TFT_X_BLANKING);		
	}
	else if (g_TFTlineCounter == TFT_YSIZE + TFT_Y_BLANKING_LINES) {
		// start vsync period
		timer_set_period (g_TFTspec.tDtmgTimerHndl, TFT_Y_BLANKING_LINES * (TFT_XSIZE + TFT_X_BLANKING) + TFT_X_BLANKING + TFT_XSIZE/*1911+33+240*/);
		timer_set_width (g_TFTspec.tDtmgTimerHndl, TFT_Y_BLANKING_LINES * (TFT_XSIZE + TFT_X_BLANKING) + TFT_X_BLANKING/*1911+33*/);		
		g_TFTlineCounter = 0;
	}	
}

#endif


// sleep function
void TFTmsSleep (unsigned long pa_nMs, unsigned long pa_nCoreClk) {
	unsigned long long int cur,nd;
	
	_GET_CYCLE_COUNT(cur);
	nd = cur + pa_nCoreClk / 1000 * pa_nMs;
	while (cur < nd) {
		_GET_CYCLE_COUNT(cur);
	}
}

void TFTsetupFrameBufferUpdateProcess (unsigned long *pa_nWorkingBuffer0, unsigned long *pa_nWorkingBuffer1, void *pa_Generic) {
	g_TFTspec.pnWorkingBuffer0 = pa_nWorkingBuffer0;
	g_TFTspec.pnWorkingBuffer1 = pa_nWorkingBuffer1;
	g_TFTspec.cCurrentWorkingBuffer = 0;	
}

void TFTsetWorkingBuffer (unsigned char pa_cWorkingBuffer) {
	g_TFTspec.cCurrentWorkingBuffer = pa_cWorkingBuffer;
}

void TFTupdateFrameBuffer (void) {
}

// sets the brithness
void TFTsetBrightness (unsigned short pa_cBrightness) {
	if (pa_cBrightness > TFT_MAX_BRIGTHNESS) {
		pa_cBrightness = TFT_MAX_BRIGTHNESS;
	}
	
}

// sets up the timer and ppi for the tft-display
T_ERROR_CODE TFTsetup (	unsigned char pa_cPPI,
						unsigned long pa_nCoreClk,
						unsigned long pa_nSystemClk, 
						unsigned short pa_nXsize, 
						unsigned short pa_nYsize,
						unsigned char pa_BytePerPixel,
						unsigned char pa_cPWMtimer,
						unsigned char pa_cDTMGshiftTimer,
						bool pa_bCreateDCLK,
						unsigned char pa_cDCLKtimer,
						T_GPIO_MASK pa_cPCIflag,
						unsigned char *nFrameBuffer,
						bool pa_bBitReverse,
						void *pa_Reserved) {
							
	T_ERROR_CODE erResult = ERR_NONE;
	
	// filling the global spec structure
	g_TFTspec.pnFrameBuffer = nFrameBuffer;
	g_TFTspec.nXsize = pa_nXsize;
	g_TFTspec.nYsize = pa_nYsize;
	g_TFTspec.bBitReverse = pa_bBitReverse;
	g_TFTspec.cBytesPerPixel = pa_BytePerPixel;
	
	if (pa_bCreateDCLK) {
		// create the dclk clock output (usually 5.33Mhz)
		float fSCKLPeriod = 1.0 / (float)(pa_nSystemClk);
		float fTFTClockPeriod = 1.0 / (float)(TFT_CLOCK_FREQ);
		unsigned long nTimerPeriod = (unsigned long)(fTFTClockPeriod / fSCKLPeriod);
		unsigned long nTimerWidth = nTimerPeriod / 2;
		g_TFTspec.tDclkTimerHndl = timer_gp_setup (pa_cDCLKtimer, TFT_DCLK_TIMER_CONFIG, nTimerWidth, nTimerPeriod, true, pa_nSystemClk, 0);
	}

	// configure the timer for the pwm output ( max brigthness)
	float fSCKLPeriod = 1.0 / (float)(pa_nSystemClk);
	float fTFTClockPeriod = 1.0 / (float)(TFT_PWM_FREQ);
	unsigned long nTimerPeriod = (unsigned long)(fTFTClockPeriod / fSCKLPeriod);
	unsigned long nTimerWidth = nTimerPeriod;	// 100% duty cycle
	g_TFTspec.tPwmTimerHndl = timer_gp_setup (pa_cPWMtimer, TFT_PWM_TIMER_CONFIG, nTimerWidth, nTimerPeriod, true, pa_nSystemClk, 0);
			
	// configure gpio for pci pin	
	gpio_becomeOutput (pa_cPCIflag);

	// define the timer used for hsync and dtmg depending on the ppi witch the display is connected
	unsigned char cHSYNCtimer;
	unsigned char cDTMGtimer;
	if (pa_cPPI == 0) {
#if defined (__ADSPBF561__)
		cHSYNCtimer = 8;
		cDTMGtimer = 9;
#elif defined (__ADSPBF537__)
		cHSYNCtimer = 0;
		cDTMGtimer = 1;
#else
#error "processor not yet supported"
#endif
	} 
	else if (pa_cPPI == 1) {
		cHSYNCtimer = 10;
		cDTMGtimer = 11;
	} else {
		erResult = ERR_ILLEGAL_PPI;
		return erResult;
	}
	g_TFTspec.cPPI = pa_cPPI;

	
#ifdef __ADSPBF537__
	// enable the upper 8 databits of the ppi
	// because is not done by the ppi driver
	unsigned short nValue = *pPORTG_FER;
	*pPORTG_FER |= 0xff00;	// enabling PPI data signals (D8 - D15).
	*pPORTG_FER |= 0xff00;	
	nValue = *pPORT_MUX;
	*pPORT_MUX &= ~0x0e00;
	*pPORT_MUX &= ~0x0e00;
#endif	

	// setup dma and ppi
#ifdef TFT_ROTATE_FRAME

	// fill the descriptor table
	unsigned short i = 0;
	for (i=0; i<TFT_YSIZE + TFT_Y_BLANKING_LINES - 1; i++) {
		// next descriptor pointer		
		anTFTdmaDescriptorTable[2 * i] = (unsigned long)&anTFTdmaDescriptorTable[2 * i + 2];
		// next startaddres
		if (i<TFT_Y_BLANKING_LINES) {
			// blanking lines
			anTFTdmaDescriptorTable[2 * i + 1] = (unsigned long)g_TFTspec.pnFrameBuffer;			
		} else {
			// visible lines
			anTFTdmaDescriptorTable[2 * i + 1] = (unsigned long)g_TFTspec.pnFrameBuffer + 2 * (pa_nYsize + /*TFT_Y_BLANKING_LINES*/ - 1 - (i - TFT_Y_BLANKING_LINES));
		}
	}
	// last descriptor points to first
	anTFTdmaDescriptorTable[2 * (TFT_YSIZE + TFT_Y_BLANKING_LINES - 1)] = (unsigned long)&anTFTdmaDescriptorTable[0];
	anTFTdmaDescriptorTable[2 * (TFT_YSIZE + TFT_Y_BLANKING_LINES - 1) + 1] = (unsigned long)g_TFTspec.pnFrameBuffer;
	
	// setup ppi and dma
#ifndef TFT_DTMG_OVER_AND_GATE	
	erResult = ppi_setup_gp (	pa_cPPI,
								(unsigned long)g_TFTspec.pnFrameBuffer,
								0x381f,
								0,
								TFT_XSIZE - 1,
								27,
								0x7485,			// interrupt enable
								pa_nXsize,
								2 * (TFT_YSIZE/* + TFT_Y_BLANKING_LINES*/),
								0,
								0,
								(unsigned long)&anTFTdmaDescriptorTable[0],
								(T_PPI_CALLBACK)TFTppiHandler);
#else
	erResult = ppi_setup_gp (	pa_cPPI,
								(unsigned long)g_TFTspec.pnFrameBuffer,
								0x381f,
								0,
								TFT_XSIZE - 1,
								27,
								0x7405,			// interrupt disable
								pa_nXsize,
								2 * (TFT_YSIZE/* + TFT_Y_BLANKING_LINES*/),
								0,
								0,
								(unsigned long)&anTFTdmaDescriptorTable[0],
								0);
#endif

#else	// #if TFT_ROTATE_FRAME	

#ifndef TFT_DTMG_OVER_AND_GATE
	erResult = ppi_setup_gp (	pa_cPPI,
								(unsigned long)g_TFTspec.pnFrameBuffer,
								0x381f,
								0,
								TFT_XSIZE - 1,
								27,
								0x10d5,		// interrupts enable
								TFT_XSIZE,
								2,
								TFT_YSIZE + TFT_Y_BLANKING_LINES,
								2,
								0,
								(T_PPI_CALLBACK)TFTppiHandler);
#else
	erResult = ppi_setup_gp (	pa_cPPI,
								(unsigned long)(g_TFTspec.pnFrameBuffer),
								0x381f,
								0,
								TFT_XSIZE - 1,
								27,
								0x1055,		// interrupts disable
								TFT_XSIZE,
								2,
								TFT_YSIZE + TFT_Y_BLANKING_LINES,
								2,
								0,
								0);
#endif
								
#endif	//#if TFT_ROTATE_FRAME								

	if (erResult != ERR_NONE) {
		return erResult;
	}

	// setup hsync timing signal
	g_TFTspec.tHsyncTimerHndl = timer_gp_setup (cHSYNCtimer, TFT_HSYNC_TIMER_CONFIG, 5, 273, false, pa_nSystemClk, 0);
#ifdef TFT_DTMG_OVER_AND_GATE
	// setup dtmg timing signal
	g_TFTspec.tDtmgTimerHndl = timer_gp_setup (cDTMGtimer, TFT_DTMG_TIMER_CONFIG, 33, 273, false, pa_nSystemClk, 0);
	// setup help timer for vsync period in dtmg signal
	g_TFTspec.tDtmgVsyncTimerHndl = timer_gp_setup (pa_cDTMGshiftTimer, TFT_DTMG_TIMER_CONFIG, 1911, 89271, false, pa_nSystemClk, 0);
#else
	// setup dtmg timing signal
	g_TFTspec.tDtmgTimerHndl = timer_gp_setup (cDTMGtimer, TFT_DTMG_TIMER_CONFIG, 1911+33, 1911+33+240, false, pa_nSystemClk, 0);	
#endif
	
	// enable pci
	gpio_set (pa_cPCIflag);
	asm ("ssync;");

	// enable dtmg timer
	timer_enable (g_TFTspec.tDtmgTimerHndl);
#ifdef TFT_DTMG_OVER_AND_GATE
	// enable help timer for vsync period in dtmg signal
	timer_enable (g_TFTspec.tDtmgVsyncTimerHndl);
#endif	
	// enable hsync timer
	timer_enable (g_TFTspec.tHsyncTimerHndl);
	
	if (pa_bCreateDCLK) {	
		// enable 5.33 Mhz clock
		timer_enable (g_TFTspec.tDclkTimerHndl);
	}

	// wait at least one frame
	TFTmsSleep (50, pa_nCoreClk);
	
	// enable the pwm timer
	timer_enable (g_TFTspec.tPwmTimerHndl);

	return erResult;
}

unsigned long TFTgetFramebuffer (void) {
	return (unsigned long)(g_TFTspec.pnFrameBuffer);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品乱码久久久久久| 久久97超碰色| 国产不卡一区视频| 欧美私人免费视频| 中文字幕第一页久久| 欧美bbbbb| 免费视频最近日韩| 国产aⅴ综合色| 亚洲美女在线一区| 日韩精品一卡二卡三卡四卡无卡| 国产一区二区看久久| 一区二区欧美国产| 国产精品白丝av| 久久久久高清精品| 久久99国产精品免费| 精品久久一区二区| 日韩中文字幕av电影| 91亚洲午夜精品久久久久久| 国产色91在线| av电影在线不卡| 椎名由奈av一区二区三区| 国产一区二区在线视频| 久久久久久久久久久久久夜| 国产高清无密码一区二区三区| 精品福利在线导航| 国产美女视频91| 国产精品天美传媒| 色综合久久精品| 一区二区三区免费在线观看| 99国产麻豆精品| 亚洲成a人v欧美综合天堂 | 色先锋aa成人| 亚洲一区二区不卡免费| 欧美精品免费视频| 亚洲国产一区二区三区青草影视| 欧美一区二区三区系列电影| 精彩视频一区二区三区| 国产精品久久久久久妇女6080| 色诱亚洲精品久久久久久| 日产欧产美韩系列久久99| 久久久五月婷婷| 91麻豆精品视频| 国内不卡的二区三区中文字幕| 精品福利一二区| 欧美精品一二三| 99视频精品全部免费在线| 日韩av电影免费观看高清完整版在线观看| 久久一二三国产| 在线观看日韩av先锋影音电影院| 久久福利视频一区二区| 亚洲免费在线播放| 久久精品人人做人人爽人人| 色香蕉成人二区免费| 国产99精品在线观看| 视频一区在线播放| 一区二区国产盗摄色噜噜| 国产亚洲人成网站| 精品黑人一区二区三区久久| 欧美日本精品一区二区三区| 在线看国产日韩| 欧洲在线/亚洲| 欧美日韩不卡视频| 91精品国产美女浴室洗澡无遮挡| 91福利在线看| 欧美性生交片4| 欧美视频中文字幕| 欧美日韩精品是欧美日韩精品| 欧美视频一二三区| 精品视频一区二区不卡| 欧美一级淫片007| 日韩欧美自拍偷拍| 日韩精品一区二区三区三区免费| 欧美少妇xxx| 欧美精品色一区二区三区| 欧美久久久久久久久久| 91精品国产综合久久国产大片| 制服丝袜亚洲网站| 精品国产百合女同互慰| 国产亚洲一区二区三区四区| 日韩免费视频一区二区| 久久伊99综合婷婷久久伊| 国产精品久久三| 亚洲va欧美va人人爽| 久久99精品久久久久| 国产91精品久久久久久久网曝门| 99re热视频精品| 成人视屏免费看| 正在播放一区二区| 中文字幕不卡的av| 日本成人在线一区| 99精品在线免费| 欧美mv日韩mv国产网站app| 国产精品天美传媒| 免费成人在线观看| 色婷婷综合久久久中文字幕| 日韩视频在线你懂得| 亚洲欧洲日韩在线| 国产成人午夜精品5599| 欧美日韩免费一区二区三区视频| 中文字幕欧美区| 国产经典欧美精品| 欧美久久久久免费| 亚洲黄网站在线观看| 国产精品1024| 久久精品人人做人人爽97| 五月天欧美精品| 色视频成人在线观看免| 69av一区二区三区| 亚洲va欧美va人人爽午夜| 成人性生交大片免费看视频在线| 经典三级视频一区| 欧美变态tickling挠脚心| 免费亚洲电影在线| 精品国产网站在线观看| 麻豆成人免费电影| 欧美成人三级在线| 国产精品亚洲成人| 精品福利一二区| 成人午夜碰碰视频| 亚洲欧洲在线观看av| 99精品视频在线免费观看| 8v天堂国产在线一区二区| 亚洲高清视频在线| 欧美一区二区在线观看| 久久成人久久爱| 国产日韩三级在线| 色婷婷国产精品综合在线观看| 亚洲综合丁香婷婷六月香| 欧美电影在线免费观看| 久久精品免费观看| 欧美日韩精品一区二区在线播放| 奇米色777欧美一区二区| 日本一区二区成人| 91精品国产91久久综合桃花 | 欧美一区二区三区视频在线观看| 久久精品国产77777蜜臀| 亚洲乱码中文字幕| 国产精品亲子伦对白| 欧美不卡视频一区| 欧美军同video69gay| 国产高清在线精品| 麻豆国产精品一区二区三区| 一区二区三区四区不卡在线| 国产精品久久免费看| 欧美一二三四区在线| 99久久婷婷国产| 风流少妇一区二区| 亚洲线精品一区二区三区| 亚洲女同女同女同女同女同69| 久久久久久久久久久黄色| 久久亚区不卡日本| 欧美精品一区二区三区久久久| 777a∨成人精品桃花网| 欧美日韩日日摸| 欧美区一区二区三区| 欧美久久久久久久久中文字幕| 欧美在线观看视频一区二区三区| 99久久精品费精品国产一区二区| 成人av动漫在线| 欧美自拍偷拍午夜视频| 欧美性猛交xxxx乱大交退制版 | 成人av电影在线| 激情综合色综合久久| 精品一区二区精品| 成人美女视频在线观看| 成人av午夜影院| 欧美色图激情小说| 精品视频123区在线观看| 欧美日本高清视频在线观看| www一区二区| 国产亚洲一区字幕| 亚洲少妇中出一区| 裸体在线国模精品偷拍| 国产精品一区二区x88av| 国产精品一区二区视频| 91啪九色porn原创视频在线观看| 欧美午夜宅男影院| 国产日产欧美一区二区三区| 亚洲尤物在线视频观看| 国产福利一区二区三区视频在线| av一本久道久久综合久久鬼色| 91成人免费电影| 久久综合九色综合久久久精品综合 | 精品一区二区三区蜜桃| 成人黄色av网站在线| 在线播放视频一区| 亚洲色图第一区| 美腿丝袜亚洲三区| 欧美美女bb生活片| 日韩精品一区二区三区四区| 久久久久久久久蜜桃| 六月丁香婷婷色狠狠久久| 欧美午夜宅男影院| 亚洲欧美日韩一区二区| av电影在线观看一区| 国产精品第13页| 成人一区在线看| 精品国产乱码久久久久久闺蜜| 亚洲国产cao| 日韩一二三四区|