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

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

?? sam9261_touch.cpp

?? CE5.0下矩陣式觸摸板驅動
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/********************************************************************************
Now we use Matrix Key, but we may need to use timer interrupt for sampling interleave
if we want to use timer,define 'TouchNeedTimer' macro
********************************************************************************/

#include <windows.h>
#include <types.h>
#include <memory.h>
#include <ceddk.h>
#include <nkintr.h>
#include <tchddsi.h>
#include <nkintr.h>
#include <bsp.h>
#include "SAM9261_touch.h"

/********************************************************************************
* define const don`t move to .h files later
********************************************************************************/
#define		PUBLIC
#define 	PRIVATE				static

/* Reg definition */
PRIVATE volatile AT91S_AIC	*v_pAicregs = NULL;
PRIVATE volatile AT91S_PIO	*v_pPioCregs = NULL;

//same as 560T
PRIVATE volatile BYTE	*v_KEY_USE_AREA = NULL;
PRIVATE volatile BYTE	*v_KEY_RD_LT07 = NULL;
PRIVATE volatile BYTE	*v_KEY_RD_LT15 = NULL;
PRIVATE volatile BYTE	*v_KEY_RD_LT23 = NULL;
PRIVATE volatile BYTE	*v_KEY_RD_LT31 = NULL;
PRIVATE volatile BYTE	*v_KEY_WR_LT07 = NULL;
PRIVATE volatile BYTE	*v_KEY_WR_LT15 = NULL;
PRIVATE volatile BYTE	*v_KEY_WR_LT23 = NULL;

#ifdef TouchNeedTimer
PRIVATE volatile AT91S_PMC 	*v_pPMCRegs = NULL;
PRIVATE volatile AT91S_TC	*v_pTCRegs = NULL;
#endif

/********************************************************************************
* global variables definition
********************************************************************************/
DWORD gIntrTouch        = SYSINTR_NOP;
DWORD gIntrTouchChanged = SYSINTR_NOP;

extern "C" const int MIN_CAL_COUNT   = 1;

/* static variable definition */
PRIVATE INT 	TSP_CurRate = TSP_SAMPLE_RATE_HIGH;


// function implementation
/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* Free Memory */
/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
PRIVATE void TSP_VirtualFree(VOID)
{
RETAILMSG(1,(TEXT("::: TSP_VirtualFree()\r\n")));
    if(v_pAicregs)
    {
        MmUnmapIoSpace((PVOID)v_pAicregs, sizeof(AT91S_AIC));
        v_pAicregs = NULL;
    }
   	if(v_pPioCregs)
    {
        MmUnmapIoSpace((PVOID)v_pPioCregs, sizeof(AT91S_PIO));
        v_pPioCregs = NULL;
    }

    if(v_KEY_USE_AREA)
    {
    	MmUnmapIoSpace((PVOID)v_KEY_USE_AREA, sizeof(BYTE));
    	v_KEY_USE_AREA = NULL;
    }
#ifdef TouchNeedTimer    
    if(v_pPMCRegs)
    {
        MmUnmapIoSpace((PVOID)v_pPMCRegs, sizeof(AT91S_PMC));
        v_pPMCRegs = NULL;
    }
   	if(v_pTCRegs)
    {
        MmUnmapIoSpace((PVOID)v_pTCRegs, sizeof(AT91S_TC));
        v_pTCRegs = NULL;
    }
#endif    
}

/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* Alloc Memory */
/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
PRIVATE BOOL TSP_VirtualAlloc(VOID)
{
	BOOL r = FALSE;
	PHYSICAL_ADDRESS pa;	
	
RETAILMSG(1,(TEXT("::: TSP_VirtualAlloc()\r\n")));	
	do
	{
		pa.QuadPart = (UINT32)SAM9261_BASE_REG_PA_AIC;
		v_pAicregs = (volatile AT91S_AIC *)MmMapIoSpace(pa, sizeof(AT91S_AIC), FALSE);
		if (v_pAicregs == NULL)
		{
			ERRORMSG(1,(TEXT("For AICreg: VirtualAlloc failed!\r\n")));
            break;
		}
		
		pa.QuadPart = (UINT32)SAM9261_BASE_REG_PA_PIOC;
		v_pPioCregs = (volatile AT91S_PIO *)MmMapIoSpace(pa, sizeof(AT91S_PIO), FALSE);
		if (v_pPioCregs == NULL)
		{
			ERRORMSG(1,(TEXT("For PIOreg: VirtualAlloc failed!\r\n")));
            break;
		}

		pa.QuadPart = (UINT32)PERIPH_BASE;
		v_KEY_USE_AREA = (volatile BYTE *)MmMapIoSpace(pa, sizeof(BYTE) * 16, FALSE);
		if (v_KEY_USE_AREA == NULL)
		{
			ERRORMSG(1,(TEXT("For v_KEY_USE_AREA: VirtualAlloc failed!\r\n")));
            break;
		}
		else
		{
			v_KEY_RD_LT07 = v_KEY_USE_AREA + KEY_RD_LT07_OFFSET;
			v_KEY_RD_LT15 = v_KEY_USE_AREA + KEY_RD_LT15_OFFSET;
			v_KEY_RD_LT23 = v_KEY_USE_AREA + KEY_RD_LT23_OFFSET;
			v_KEY_RD_LT31 = v_KEY_USE_AREA + KEY_RD_LT31_OFFSET;
			v_KEY_WR_LT07 = v_KEY_USE_AREA + KEY_WR_LT07_OFFSET;
			v_KEY_WR_LT15 = v_KEY_USE_AREA + KEY_WR_LT15_OFFSET;
			v_KEY_WR_LT23 = v_KEY_USE_AREA + KEY_WR_LT23_OFFSET;
		}

#ifdef TouchNeedTimer		
		pa.QuadPart = (UINT32)SAM9261_BASE_REG_PA_PMC;
		v_pPMCRegs = (volatile AT91S_PMC *)MmMapIoSpace(pa, sizeof(AT91S_PMC), FALSE);
		if (v_pPMCRegs == NULL)
		{
			ERRORMSG(1,(TEXT("For PMCreg: VirtualAlloc failed!\r\n")));
            break;
		}

		pa.QuadPart = (UINT32)SAM9261_BASE_REG_PA_TC0;
		v_pTCRegs = (volatile AT91S_TC *)MmMapIoSpace(pa, sizeof(AT91S_TC), FALSE);
		if (v_pTCRegs == NULL)
		{
			ERRORMSG(1,(TEXT("For TCreg: VirtualAlloc failed!\r\n")));
            break;
		}
#endif
		r = TRUE;
	} while(0);
	
	if (r == FALSE)
	{
		TSP_VirtualFree();
RETAILMSG(1,(TEXT("::: TSP_VirtualAlloc() - Fail\r\n")));
	}
	else
	{
RETAILMSG(1,(TEXT("::: TSP_VirtualAlloc() - Success\r\n")));		
	}
	return (r);
}

/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* Iitialize TC0 */
/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
PRIVATE VOID TSP_PowerOn(VOID)
{
#ifdef TouchNeedTimer
	UINT32	RCValue;
#endif
RETAILMSG(1,(TEXT("::: TSP_PowerOn()\r\n")));
#ifdef TouchNeedTimer	
	// Enale TC0 clock
	v_pPMCRegs->PMC_PCER = 1<<AT91C_ID_TC0;
	// Disable counter clock
	v_pTCRegs->TC_CCR = AT91C_TC_CLKDIS;
    // Select Waveform Mode mode, TIMER_DIV5_CLOCK (SCLK) ,RC Compare Trigger
	v_pTCRegs->TC_CMR = ( AT91C_TC_CLKS_TIMER_DIV5_CLOCK | AT91C_TC_WAVESEL_UP_AUTO | AT91C_TC_WAVE );
	// Set timer RC register, 1000ms sample again
	RCValue = 100 * (AT91C_TIMER0_CLOCK / 1000);
	v_pTCRegs->TC_RC = RCValue;
	// Enable RC compare Interrupt
	v_pTCRegs->TC_IER = AT91C_TC_CPCS;
// Enable and start counter clock,don't do here
//    OUTREG32(&v_pTCRegs->TC_CCR, AT91C_TC_CLKEN);		    
//    OUTREG32(&v_pTCRegs->TC_CCR, AT91C_TC_SWTRG);
#endif
}

/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
PRIVATE VOID TSP_PowerOff(VOID)
{
RETAILMSG(1,(TEXT("::: TSP_PowerOff()\r\n")));
#ifdef	TouchNeedTimer
	//Disable interrupt
	v_pTCRegs->TC_IDR = AT91C_TC_CPCS;
	v_pTCRegs->TC_CCR = AT91C_TC_CLKDIS;
#endif
}

// Disable PIOBIRQ
PRIVATE VOID DisableKeyInt(VOID)
{
	if(v_pAicregs)
	{
		v_pAicregs->AIC_IDCR = 1 << AT91C_ID_PIOB;
		v_pAicregs->AIC_ICCR = 1 << AT91C_ID_PIOB;
	}
}

// Enable PIOBIRQ 
PRIVATE VOID EnableKeyInt(VOID)
{
	if(v_pAicregs)
	{
		v_pAicregs->AIC_ICCR = 1 << AT91C_ID_PIOB;
		v_pAicregs->AIC_IECR = 1 << AT91C_ID_PIOB;
	}
}

/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* Set Timing para */
/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
PRIVATE VOID InitializeNCS4(VOID)
{
	volatile AT91S_SMC	*v_pSmcRegs;
	volatile AT91S_PIO	*v_pPioCRegs;
	PHYSICAL_ADDRESS pa;
	
//RETAILMSG(1,(TEXT("Set NCS4 Parameter!\r\n")));	
	
	pa.QuadPart = (UINT32)SAM9261_BASE_REG_PA_SMC;
	v_pSmcRegs = (volatile AT91S_SMC *)MmMapIoSpace(pa, sizeof(AT91S_SMC), FALSE);
	
	pa.QuadPart = (UINT32)SAM9261_BASE_REG_PA_PIOC;
	v_pPioCRegs = (volatile AT91S_PIO *)MmMapIoSpace(pa, sizeof(AT91S_PIO), FALSE);

	v_pPioCRegs->PIO_ASR = TouchPanel_CS;
	v_pPioCRegs->PIO_PDR = TouchPanel_CS;

//	v_pSmcRegs->SMC_SETUP4 = (2 << 24) | (2 << 8);
//	v_pSmcRegs->SMC_PULSE4 = (0x0C << 24) | (0x0C << 16) | (0x0C << 8) | (0x0C);
//	v_pSmcRegs->SMC_CYCLE4 = (0x18 << 16) | (0x18);
	v_pSmcRegs->SMC_SETUP4 = (3 << 24) | (3 << 8);
	v_pSmcRegs->SMC_PULSE4 = (0x10 << 24) | (0x10 << 16) | (0x10 << 8) | (0x10);
	v_pSmcRegs->SMC_CYCLE4 = (0x18 << 16) | (0x18);


	v_pSmcRegs->SMC_CTRL4 = AT91C_SMC_READMODE;
	
	MmUnmapIoSpace((PVOID)v_pSmcRegs, sizeof(AT91S_SMC));
	MmUnmapIoSpace((PVOID)v_pPioCRegs, sizeof(AT91S_PIO));
}

/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* Initialize Key Interrupt */
/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
PRIVATE VOID InitKeyInt(VOID)
{
	volatile AT91S_PIO	*pPIOCregs;
	volatile AT91S_PMC	*pPMCregs;
	volatile AT91S_AIC	*pAICregs;
	UINT32		PioBIsr;
	PHYSICAL_ADDRESS pa;
	
//RETAILMSG(1,(TEXT("Init Key Interrupt!\r\n")));		

	pa.QuadPart =  (UINT32)SAM9261_BASE_REG_PA_PMC;
	pPMCregs = (volatile AT91S_PMC *)MmMapIoSpace(pa, sizeof(AT91S_PMC), FALSE);
	
	pa.QuadPart =  (UINT32)SAM9261_BASE_REG_PA_PIOC;
	pPIOCregs = (volatile AT91S_PIO *)MmMapIoSpace(pa, sizeof(AT91S_PIO), FALSE);
	
	pa.QuadPart =  (UINT32)SAM9261_BASE_REG_PA_AIC;
	pAICregs = (volatile AT91S_AIC *)MmMapIoSpace(pa, sizeof(AT91S_AIC), FALSE);
	
	// Config PB31 as Touch Interrupt
	pPMCregs->PMC_PCER = (1 << AT91C_ID_PIOC);
	pPIOCregs->PIO_IFER = TouchPanel_IRQ;
	pPIOCregs->PIO_ODR = TouchPanel_IRQ;
	PioBIsr = pPIOCregs->PIO_ISR;
	pPIOCregs->PIO_IER = TouchPanel_IRQ;
	pPIOCregs->PIO_PER = TouchPanel_IRQ;
	pAICregs->AIC_SVR[AT91C_ID_PIOB] = (UINT32)AT91C_ID_PIOB;
	pAICregs->AIC_SMR[AT91C_ID_PIOB] = (INTR_TOUCH_PRIORITY | AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE);
	
	MmUnmapIoSpace((PVOID)pPMCregs, sizeof(AT91S_PMC));
	MmUnmapIoSpace((PVOID)pPIOCregs, sizeof(AT91S_PIO));
	MmUnmapIoSpace((PVOID)pAICregs, sizeof(AT91S_AIC));
}

/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* Load dll , not great 1 */
/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
LONG DdsiTouchPanelAttach(VOID)
{
RETAILMSG(1,(TEXT("::: DdsiTouchPanelAttach(), Load Dll\r\n")));
	InitializeNCS4();
	InitKeyInt();
	
    return(0);
}

/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* unload dll */
/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
LONG DdsiTouchPanelDetach(VOID)
{
RETAILMSG(1,(TEXT("::: DdsiTouchPanelDetach(), UnLoad Dll\r\n")));
    return(0);
}

/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* Touch disable */
/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
PUBLIC VOID DdsiTouchPanelDisable(VOID)
{
//RETAILMSG(1, (TEXT("::: DdsiTouchPanelDisable()\r\n")));  
    //DisableKeyInt();
    if( v_pAicregs )
    {	// Disable Touch interrupt, Maybe needn't call,because TouchPanelDisable can do disable Key Interrupt
    	TSP_PowerOff();
    	TSP_VirtualFree();
    	KernelIoControl(IOCTL_HAL_RELEASE_SYSINTR, &gIntrTouch, sizeof(UINT32), NULL, 0, NULL);
    	gIntrTouch = SYSINTR_NOP;
#ifdef	TouchNeedTimer	
    	KernelIoControl(IOCTL_HAL_RELEASE_SYSINTR, &gIntrTouchChanged, sizeof(UINT32), NULL, 0, NULL);
    	gIntrTouchChanged = SYSINTR_NOP;
#endif
    }
}

/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
/* Touch panel initialize */
/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
PUBLIC BOOL DdsiTouchPanelEnable(VOID)
{
	BOOL r;
	UINT32 Irq;
	
RETAILMSG(1, (TEXT("::: DdsiTouchPanelEnable()\r\n")));	
	r = TSP_VirtualAlloc();
	
	Irq = IRQ_PIOIRQ;
	/* Note! OEMIoControl must implement IOCTL_HAL_REQUEST_SYSINTR */
	if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &Irq, sizeof(UINT32), &gIntrTouch, sizeof(UINT32), NULL))
	{
		RETAILMSG(1, (TEXT("ERROR: Failed to request the touch sysintr.\r\n")));
        gIntrTouch = SYSINTR_UNDEFINED;
        return(FALSE);
	}	
#ifdef	TouchNeedTimer	
	Irq = IRQ_TIMER0;
	if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &Irq, sizeof(UINT32), &gIntrTouchChanged, sizeof(UINT32), NULL))
    {
        RETAILMSG(1, (TEXT("ERROR: Failed to request the touch changed sysintr.\r\n")));
        gIntrTouchChanged = SYSINTR_UNDEFINED;
        return(FALSE);
    }  
#endif
    if (r)
    {
        TSP_PowerOn();
    }
    
    return (r);
}

PRIVATE BOOL TSP_CalibrationPointGet(TPDC_CALIBRATION_POINT *pTCP)
{

    INT32	cDisplayWidth  = pTCP->cDisplayWidth;
    INT32 	cDisplayHeight = pTCP->cDisplayHeight;

    switch (pTCP -> PointNumber)
    {
    case    0:
        pTCP->CalibrationX = cDisplayWidth  / 2;
        pTCP->CalibrationY = cDisplayHeight / 2;
        break;

    case    1:
        pTCP->CalibrationX = cDisplayWidth  / 5;
        pTCP->CalibrationY = cDisplayHeight / 5;
        break;

    case    2:
        pTCP->CalibrationX = cDisplayWidth  / 5;
        pTCP->CalibrationY = cDisplayHeight / 5 * 4;
        break;

    case    3:
        pTCP->CalibrationX = cDisplayWidth  / 5 * 4;
        pTCP->CalibrationY = cDisplayHeight / 5 * 4;
        break;

    case    4:
        pTCP->CalibrationX = cDisplayWidth  / 5 * 4;
        pTCP->CalibrationY = cDisplayHeight / 5;
        break;

    default:
        pTCP->CalibrationX = cDisplayWidth  / 2;
        pTCP->CalibrationY = cDisplayHeight / 2;

        SetLastError(ERROR_INVALID_PARAMETER);
        return (FALSE);
    }

    RETAILMSG(0, (TEXT("::: TSP_CalibrationPointGet()\r\n")));
    RETAILMSG(0, (TEXT("cDisplayWidth        : %4X\r\n"), cDisplayWidth     ));
    RETAILMSG(0, (TEXT("cDisplayHeight       : %4X\r\n"), cDisplayHeight    ));
    RETAILMSG(0, (TEXT("pTCP -> PointNumber  : %4d\r\n"), pTCP->PointNumber));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av在线观| 在线国产电影不卡| 亚洲gay无套男同| 国产亚洲成aⅴ人片在线观看| 欧美日韩免费视频| 国产成人av一区二区三区在线 | 欧美天堂亚洲电影院在线播放| 极品少妇一区二区| 天堂一区二区在线免费观看| 最新中文字幕一区二区三区| 久久综合av免费| 欧美精品777| 色系网站成人免费| 成人午夜视频网站| 国产在线精品免费av| 日韩成人伦理电影在线观看| 一区二区三区四区在线| 国产精品狼人久久影院观看方式| 精品久久久影院| 日韩欧美国产一区二区三区| 欧美日韩大陆在线| 在线观看亚洲a| 一本色道综合亚洲| www.欧美精品一二区| 国产一区二区美女诱惑| 美国十次综合导航| 日本免费新一区视频| 亚洲国产另类av| 亚洲国产一区二区视频| 亚洲永久精品国产| 亚洲精品成人精品456| 亚洲视频你懂的| 亚洲女同一区二区| 亚洲精品一二三| 亚洲精品成人天堂一二三| 亚洲精品水蜜桃| 亚洲永久精品国产| 天天综合色天天综合| 亚洲成人av在线电影| 午夜电影网亚洲视频| 亚洲成人资源在线| 五月综合激情婷婷六月色窝| 性做久久久久久| 青娱乐精品视频| 久久国产尿小便嘘嘘尿| 麻豆精品在线视频| 国产精品一区久久久久| 成人一区在线看| 色哟哟精品一区| 欧美午夜精品久久久久久超碰 | 国内精品久久久久影院一蜜桃| 美女高潮久久久| 国产成人亚洲综合a∨婷婷图片 | 欧美色倩网站大全免费| 欧美视频你懂的| 日韩一区二区在线观看视频| 日韩一二三区不卡| 国产日韩欧美在线一区| 中文字幕中文字幕在线一区 | 蜜桃传媒麻豆第一区在线观看| 六月婷婷色综合| 国产成人99久久亚洲综合精品| jlzzjlzz欧美大全| 欧美伊人久久大香线蕉综合69| 欧美美女一区二区三区| 欧美tickling网站挠脚心| 国产女人aaa级久久久级| 亚洲婷婷在线视频| 日韩成人精品在线| 高清久久久久久| 欧美日韩精品一区二区三区 | 欧美精品一区二区高清在线观看| 久久精品一区四区| 一区二区久久久| 美腿丝袜在线亚洲一区| 99久久伊人久久99| 91精品国产综合久久久久| 国产亚洲一区二区三区四区| 一区二区三区丝袜| 蜜桃av一区二区在线观看| eeuss影院一区二区三区| 91精品国产综合久久久久| 中文字幕av资源一区| 亚洲gay无套男同| 成人午夜av影视| 日韩一区二区免费高清| 中文字幕一区二区三区在线播放| 三级久久三级久久久| 97精品久久久午夜一区二区三区| 日韩亚洲欧美在线观看| 一区二区三区在线免费观看| 精品一区二区三区在线视频| 色八戒一区二区三区| 亚洲精品一线二线三线| 一区二区三区**美女毛片| 国产盗摄女厕一区二区三区 | 亚洲欧洲av色图| 精品影院一区二区久久久| 欧美色综合影院| 国产精品美女久久久久av爽李琼 | 美女国产一区二区三区| 色哦色哦哦色天天综合| 国产欧美精品区一区二区三区| 免费精品99久久国产综合精品| 色婷婷综合激情| 国产精品理论在线观看| 国产伦理精品不卡| 在线成人午夜影院| 亚洲精品网站在线观看| 成人午夜电影网站| 久久久国产精华| 看片网站欧美日韩| 日韩一区二区中文字幕| 亚洲国产wwwccc36天堂| 日本乱人伦一区| 亚洲欧洲一区二区在线播放| 国产成人av在线影院| 久久久无码精品亚洲日韩按摩| 日韩高清在线电影| 欧美日韩第一区日日骚| 亚洲一区二区三区中文字幕| 一本到三区不卡视频| 国产精品不卡一区| 粉嫩aⅴ一区二区三区四区| 精品国产成人在线影院| 麻豆国产精品视频| 日韩午夜激情电影| 蜜桃一区二区三区在线观看| 欧美一区二区观看视频| 免费精品视频在线| 91精品国产欧美一区二区成人 | voyeur盗摄精品| 国产精品网曝门| 97久久超碰精品国产| 亚洲欧美日韩成人高清在线一区| 91一区一区三区| 伊人一区二区三区| 欧美日韩一区二区三区在线| 亚洲高清视频在线| 欧美精品vⅰdeose4hd| 日韩av网站免费在线| 欧美成人精精品一区二区频| 美国欧美日韩国产在线播放| 日韩精品在线一区二区| 国产综合久久久久久久久久久久| 精品久久久三级丝袜| 国产精品一二三在| 亚洲欧洲精品一区二区三区| 色哦色哦哦色天天综合| 天堂在线亚洲视频| 精品福利一区二区三区免费视频| 国产精品资源在线看| 亚洲欧洲日韩av| 欧美日韩激情在线| 精品一区二区久久| 中文文精品字幕一区二区| 91美女片黄在线观看| 午夜精品久久一牛影视| 欧美videossexotv100| 国产**成人网毛片九色| 亚洲精品中文在线观看| 欧美一区二区免费| 国产高清精品在线| 亚洲一区二区免费视频| 日韩三级高清在线| 成人免费不卡视频| 亚洲成人中文在线| 久久免费的精品国产v∧| 99亚偷拍自图区亚洲| 丝袜美腿亚洲综合| 国产欧美日韩视频在线观看| 91福利国产成人精品照片| 久久99精品一区二区三区| 国产精品久久久久久亚洲毛片| 欧美在线视频全部完| 久久爱www久久做| 亚洲精品videosex极品| 欧美岛国在线观看| 一本一道久久a久久精品综合蜜臀| 五月婷婷综合激情| 国产精品理伦片| 日韩欧美在线不卡| 91蝌蚪porny| 寂寞少妇一区二区三区| 亚洲精品亚洲人成人网| 欧美精品一区二区三区蜜臀| 在线观看视频一区| 国产精品亚洲成人| 日韩在线卡一卡二| 亚洲免费观看在线视频| 亚洲精品一区二区三区影院| 91国偷自产一区二区开放时间| 国产九色sp调教91| 日韩高清在线不卡| 亚洲精品伦理在线| 欧美激情一区二区三区不卡| 91精品国产免费久久综合| 99久久精品免费观看| 国产精品一区二区91| 老司机精品视频线观看86|