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

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

?? gspi_bus_2440.c

?? murata wifi 模塊源代碼
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
	//JKU: NdisMSleep(5000);
	Sleep(5);
	GspiHostSetPDHigh();
	//JKU: NdisMSleep(5000);
	Sleep(5);
	GspiHostSetPDLow();
	if (GspiUnmapMemories() != GSPI_OK)
		return !GSPI_OK;

    return GSPI_OK;
}
void GspiBusRaiseBusClock(void)
{
	g_pHwInfo->pSPIRegs->rSPPRE0 = 0;
}
void GspiBusLowerBusClock(void)
{
 	g_pHwInfo->pSPIRegs->rSPPRE0 = 1;
}
int GspiBusCtrlInit()
{	
	//SET UP Pclk
	g_pHwInfo->pSPIRegs->rSPPRE0 = 1;

	//set spi control register   
   // Baud rate
    //g_pHwInfo->pSPIRegs->rSPCON0 = (0x0<<5) | 0x18; //TAGD=0,CPHA=0,CPOL=0,MSTR=1,ENSCK=1, SMOD=polling
	g_pHwInfo->pSPIRegs->rSPPIN0 = 0x0; //KEEP=0, SPICS=0,ENMUL=0
	//DBG_PRINT(gDbgInfo,("GPGCON=0x%x\n", (unsigned long)g_pHwInfo->pGPIORegs->rGPGCON));
 	
//	DBG_PRINT(gDbgInfo,("after SPCON0 =0x%lX\n", (unsigned long)g_pHwInfo->pSPIRegs->rSPCON0));
//    DBG_PRINT(gDbgInfo,("after rSPPIN0 =0x%lX\n", (unsigned long)g_pHwInfo->pSPIRegs->rSPPIN0));
//	DBG_PRINT(gDbgInfo,("after SPPRE0 =0x%lX\n", (unsigned long)g_pHwInfo->pSPIRegs->rSPPRE0));
//    RETAILMSG(1,  (TEXT("CLKDIVN =0x%lX\n\n"), g_pHwInfo->pCLKRegs->CLKDIVN));	 

	return GSPI_OK;
}

int GspiBusGPIOInit()
{

	/* 
	 * Program gpio pins 
	 * XSY: we use
     *		gpg3 :  wlan interrupt
     *      nSS0 :  SCSn signal
     *		gph10 :  RSTn signal
	 */
    //gpg3 for input, gpe8 gpe9 and gpe10 as output
//	g_pHwInfo->pGPIORegs->rGPEDAT |= (0x1 << 9); //GPE9
    g_pHwInfo->pGPIORegs->rGPECON &= ~((0x03 << 20)|(0x03 << 18) | (0x03 << 16));  // clear
    g_pHwInfo->pGPIORegs->rGPECON |= ((0x01 << 20)|(0x01 << 18) |(0x01 << 16) );   // set
	
	g_pHwInfo->pGPIORegs->rGPECON &= ~((0x03 << 22) | (0x03 << 24) | (0x03 << 26));  // clear
    g_pHwInfo->pGPIORegs->rGPECON |= (0x02 << 22) | (0x02 << 24) | (0x02 << 26);   // set
    
	// to config spi_cs as general io pin
	g_pHwInfo->pGPIORegs->rGPGCON &= ~(0x03 << 4);  // clear 
	g_pHwInfo->pGPIORegs->rGPGCON |= 0x01 << 4;   // set
	g_pHwInfo->pGPIORegs->rGPGUP |= (0x01 << 2);

	//gph10 as output
    g_pHwInfo->pGPIORegs->rGPHCON &= ~(0x03 << 20);  // clear
    g_pHwInfo->pGPIORegs->rGPHCON |= 0x01 << 20;   // set

	// Diable the pull up function for the output pins
    g_pHwInfo->pGPIORegs->rGPEUP |= ((0x01 << 10)|(0x01 << 9) | (0x01 << 8));
	g_pHwInfo->pGPIORegs->rGPEUP |= (0x01 << 11) | (0x01 << 12);
    
	/*
	// Configure the interrupt pin
    g_pHwInfo->pGPIORegs->rGPGCON &= ~(3<<6);
    g_pHwInfo->pGPIORegs->rGPGCON |= (2<<6);
    g_pHwInfo->pGPIORegs->rGPGUP  |= (1<<3);
    g_pHwInfo->pGPIORegs->rEXTINT1 &= ~(0xf<<12);
    g_pHwInfo->pGPIORegs->rEXTINT1 |= (0x2<<12); //falling edge trigger	
	*/

	GspiHostSetSCSHigh();
  
	return GSPI_OK;
}

int GspiBusIntGPIOInit()
{
	DWORD ttt;
      // Configure the interrupt pin
    g_pHwInfo->pGPIORegs->rGPGCON &= ~(3<<6);
    g_pHwInfo->pGPIORegs->rGPGCON |= (2<<6);
    g_pHwInfo->pGPIORegs->rGPGUP  |= (1<<3);
    ttt = (g_pHwInfo->pGPIORegs->rEXTINT1 & (~(0xf<<12))) | (0x2<<12);
	g_pHwInfo->pGPIORegs->rEXTINT1 = ttt;

	return GSPI_OK;	
}

int GspiIntStatus(void)
{  
	if(0 == (g_pHwInfo->pGPIORegs->rGPGDAT & 0x8))
         return TRUE;

         return FALSE;
}
int GspiBusReinit()
{
	return GSPI_OK;
}

void GspiBusInitRxDMA()
{
    return;
}

void GspiBusInitTxDMA()
{
    return;
}

int GspiBusDmaInit()
{
	//set up DMA iRQ
	GspiBusDmaIntrInit(&g_GspiDmaData);
	// Request dma for SPI Rx
	// Setup rx dma
	GspiBusInitRxDMA();

	// Request dma for SPI Tx
	// Setup tx dma
	GspiBusInitTxDMA();

	return GSPI_OK;
}

int GspiBusDmaDeinit()
{
	//set up DMA iRQ
	GspiBusDmaIntrDeinit(&g_GspiDmaData);
	return GSPI_OK;
}


int GspiBusDmaIntrInit(IN PGSPI_DMA_DATA pDriver)
{
	DWORD irq= IRQ_DMA1;;
	pDriver->IstPriority = ISTPRIORITY;

	// Create the event flag for the IST.
	pDriver->hGspiDmaIntrEvent = CreateEvent(
										NULL,		//Ignored. Must be NULL. 
										FALSE,		//FALSE, the system automatically resets
										FALSE,		//it is nonsignaled. 
										NULL);		//NULL, the event object is created without a name.

	// Hook the interrupt and start the associated thread.
	// Initialize the interrupt to be associated with the hSerialEvent event.
//	pDriver->dwDmaIntID = SYSINTR_UNDEFINED;
	if( 0== KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &irq, sizeof(DWORD), &pDriver->dwDmaIntID, sizeof(DWORD), NULL))
	{
			GSPIMSG(1,(TEXT("IOCTL_HAL_REQUEST_SYSINTR failed\n")));
			return (!GSPI_OK);
	};
	GSPIMSG(1,(TEXT("irq = %d sysint= %d\n"),irq, pDriver->dwDmaIntID));
	//DBG_PRINT(gDbgInfo,("sysint= %d\n",pDriver->dwIntID));

	if(0 == InterruptInitialize(
						pDriver->dwDmaIntID,			// Logical ID = SYSINTR_FIRMWARE (16)+Irq
						pDriver->hGspiDmaIntrEvent,		// Event used by OS to trigger thread 
						NULL,						// Ptr passed to OEMInterruptEnable
						0))
	{
			GSPIMSG(1,(TEXT("InterruptInitialize failed\n")));
			return (!GSPI_OK);
	};
 
	
 
	// Create and start the IST thread
	pDriver->hIstDmaThread = CreateThread(
									NULL,			// no security attributes 			 
									0,				// use default stack size   
									GspiBusDmaIST,			// thread function  
									pDriver,		// argument to thread function  
									0,				// use default creation flags  
									NULL);			// returns the thread identifier 

	return (GSPI_OK);
}

// IST: The actual Interrupt Service Thread.
static DWORD WINAPI GspiBusDmaIST(PVOID pContext)
{
	DWORD	dwExitCode;
	PGSPI_DMA_DATA pDrv = (PGSPI_DMA_DATA)pContext;
	
	CeSetThreadPriority(GetCurrentThread(), pDrv->IstPriority);
		
	while (1) 
	{
        //DBG_PRINT(gDbgInfo,("DMA IST is running.\n"));
		// Wait for the kernel to set the event flag.
		WaitForSingleObject(pDrv->hGspiDmaIntrEvent, INFINITE);
	
		if (pDrv->gspi_dma_exit)
		{
            GSPIMSG(1,(TEXT(" DMA IST shutting down!\n")));
			break;
		}

		// Call an internal function to process the interrupt
        //DBG_PRINT(gDbgInfo,("GSPIDrvHandler is called!\n"));
	

		// Signal the end of interrupt processing
		InterruptDone(pDrv->dwDmaIntID);

	    GspiBusDMADone();
	}
	//following are resource clean up
	//InterruptDisable( pDrv->dwIntID );	//disable the hardware interrupt and to deregister the event registered.
	//CloseHandle(pDrv->hGspiIntrEvent);						//close event
	GetExitCodeThread (pDrv->hIstDmaThread, &dwExitCode);
	ExitThread(dwExitCode);									//gracefully exit thread
	//CloseHandle(pDrv->hIstThread);							//close thread handle

	return (0);
}
// Code adapted from \Public\Common\Oak\Drivers\Serial\MDD.c
// Intr_Init: Called when the driver is initialized.
int GspiBusDmaIntrDeinit(IN PGSPI_DMA_DATA pDriver)
{
    // unregister the interrupt event 	
	InterruptDisable(pDriver->dwDmaIntID);
	KernelIoControl(IOCTL_HAL_RELEASE_SYSINTR, &pDriver->dwDmaIntID, sizeof(DWORD), NULL, 0, NULL);
	//JKU: NdisMSleep(1);
	Sleep(0);
	
	// to stop IST thread
	pDriver->gspi_dma_exit = 1;
	SetEvent(pDriver->hGspiDmaIntrEvent);
    //NdisMSleep(1);

	//YYU: wait for the IST
	WaitForSingleObject(pDriver->hIstDmaThread, INFINITE);
	GSPIMSG(1,(TEXT("Dma IST ended\n")));

    // To release the event object
	CloseHandle(pDriver->hGspiDmaIntrEvent);
	CloseHandle(pDriver->hIstDmaThread);		//close thread handle

	return (GSPI_OK);
}

void GspiBusStartRxDMA(USHORT usDstOffset, USHORT usSizeInBytes)
{
    //memset(g_pHwInfo->dmaRxBuf, 0, BSP_GSPI_DMA_RX_BUF_SIZE); // clear for debug output

    while (g_pHwInfo->pDMARegs->rDSTAT1);
    // source
    g_pHwInfo->pDMARegs->rDISRC1 = (int)(PHY_RX_REG_BASE);
    g_pHwInfo->pDMARegs->rDISRCC1 = (SOURCE_PERIPHERAL_BUS | FIXED_SOURCE_ADDRESS);    // Src is  periperal bus, fixed addr

    // dest
    g_pHwInfo->pDMARegs->rDIDST1 = (int)(g_pHwInfo->dmaPhyRxBuf + (DWORD)usDstOffset);
    g_pHwInfo->pDMARegs->rDIDSTC1 &= ~(DESTINATION_PERIPHERAL_BUS | FIXED_DESTINATION_ADDRESS);                // Dest is system bus, increment addr

    // configure dma channel
    g_pHwInfo->pDMARegs->rDCON1  = ( SPI_DMA1 | DMA_TRIGGERED_BY_HARDWARE
                    | NO_DMA_AUTO_RELOAD | TRANSFER_BYTE | usSizeInBytes );
    g_pHwInfo->pDMARegs->rDMASKTRIG1 = ENABLE_DMA_CHANNEL;

}
void GspiBusStopRxDMA()
{
}

void GspiBusStartTxDMA(USHORT usSrcOffset, USHORT usSizeInBytes)
{
    while (g_pHwInfo->pDMARegs->rDSTAT1);
    // source
    g_pHwInfo->pDMARegs->rDISRC1 = (int)(g_pHwInfo->dmaPhyTxBuf + (DWORD)usSrcOffset);
    g_pHwInfo->pDMARegs->rDISRCC1 &= ~(SOURCE_PERIPHERAL_BUS | FIXED_SOURCE_ADDRESS);                // Source is system bus, increment addr

    // dest
    g_pHwInfo->pDMARegs->rDIDST1 = (int)PHY_TX_REG_BASE;
    g_pHwInfo->pDMARegs->rDIDSTC1 = (DESTINATION_PERIPHERAL_BUS | FIXED_DESTINATION_ADDRESS);    // Dest is  periperal bus, fixed addr

    // configure dma channel
    g_pHwInfo->pDMARegs->rDCON1  = ( SPI_DMA1 | DMA_TRIGGERED_BY_HARDWARE
                    | NO_DMA_AUTO_RELOAD | TRANSFER_BYTE | usSizeInBytes);

    g_pHwInfo->pDMARegs->rDMASKTRIG1 = ENABLE_DMA_CHANNEL;
}

void GspiBusStartTxRxDMA(USHORT usSrcOffset, USHORT usSizeInBytes)
{
    while (g_pHwInfo->pDMARegs->rDSTAT1);
    // source
    g_pHwInfo->pDMARegs->rDISRC1 = (int)(g_pHwInfo->dmaPhyTxRxBuf + (DWORD)usSrcOffset);
    g_pHwInfo->pDMARegs->rDISRCC1 &= ~(SOURCE_PERIPHERAL_BUS | FIXED_SOURCE_ADDRESS);                // Source is system bus, increment addr

    // dest
    g_pHwInfo->pDMARegs->rDIDST1 = (int)PHY_TX_REG_BASE;
    g_pHwInfo->pDMARegs->rDIDSTC1 = (DESTINATION_PERIPHERAL_BUS | FIXED_DESTINATION_ADDRESS);    // Dest is  periperal bus, fixed addr

    // configure dma channel
    g_pHwInfo->pDMARegs->rDCON1  = (    SPI_DMA1 | DMA_TRIGGERED_BY_HARDWARE
                    | NO_DMA_AUTO_RELOAD | TRANSFER_BYTE | usSizeInBytes);

    g_pHwInfo->pDMARegs->rDMASKTRIG1 = ENABLE_DMA_CHANNEL;
}

void GspiBusStopTxDMA()
{
}

void GspiBusWaitForTxDMA()
{
    while (g_pHwInfo->pDMARegs->rDSTAT1);
}

void GspiBusWaitForRxDMA()
{
    while (g_pHwInfo->pDMARegs->rDSTAT1);
}
#ifndef DEBUG
UINT32 spi_bus_delay = 0;
void gspi_bus_delay(int times)
{

	int i;	
	for (i=0; i< times; i++)
		spi_bus_delay = i;

}

__inline void gspi_wait_for_bus_rdy()
{	
//while(!(*spi_status_ptr & BIT0));
	while (!(spi_status & BIT0))
		spi_status = (volatile)g_pHwInfo->pSPIRegs->rSPSTA0;
	spi_status = 0;
 }
#endif 
void gspi_xmt_data(UINT16* pData,UINT16 size) 
{
		
	register int ii;
	for (ii = 0; ii < size; ii++) 
	{ 
		GSPI_WAIT_FOR_BUS_RDY();
			//while (!((volatile)(g_pHwInfo->pSPIRegs->rSPSTA0) & BIT0));  	
		*(UINT8*)(&g_pHwInfo->pSPIRegs->rSPTDAT0) = (UINT8)((*pData & 0xff00) >> 8); 
		//while (!((volatile)(g_pHwInfo->pSPIRegs->rSPSTA0) & BIT0));  	
		GSPI_WAIT_FOR_BUS_RDY();	
		*(UINT8*)(&g_pHwInfo->pSPIRegs->rSPTDAT0) = (UINT8)(*pData & 0xff); 
		pData++;
	}
	GSPI_WAIT_FOR_BUS_RDY();

	//while (!((volatile)(g_pHwInfo->pSPIRegs->rSPSTA0) & BIT0))
	
}
void gspi_recv_data(UINT16* pData,UINT16 size) 
{ 
//	UINT8 buf[100];
	//UINT8 *pBuf = buf;
    register int ii; 
	GspiBusSetReceiver_nodma();
	//throw away the first byte

	//DBG_PRINT(gDbgInfo,("gspi_recv_data=0x%x size =%d\n", *pData, size));
	GSPI_WAIT_FOR_BUS_RDY();
	//while (!((volatile)(g_pHwInfo->pSPIRegs->rSPSTA0) & BIT0));
	pData[0] =	(UINT8)(g_pHwInfo->pSPIRegs->rSPRDAT0);
	//GSPI_BUS_DELAY(20);	
	GSPI_WAIT_FOR_BUS_RDY();
	//while (!((volatile)(g_pHwInfo->pSPIRegs->rSPSTA0) & BIT0));
	pData[0] =	(UINT8)(g_pHwInfo->pSPIRegs->rSPRDAT0);
	//GSPI_BUS_DELAY(20);	
	for (ii = 0; ii < size ; ii ++) 
	{  
		GSPI_WAIT_FOR_BUS_RDY();
		//while (!((volatile)(g_pHwInfo->pSPIRegs->rSPSTA0) & BIT0));
	
		pData[ii ] =	(UINT8)(g_pHwInfo->pSPIRegs->rSPRDAT0) << 8;
	
		GSPI_WAIT_FOR_BUS_RDY();
		//while (!((volatile)(g_pHwInfo->pSPIRegs->rSPSTA0) & BIT0));
	
		pData[ii ] |=	(UINT8)g_pHwInfo->pSPIRegs->rSPRDAT0;
		//GSPI_BUS_DELAY(20);	
	} 
	GSPI_WAIT_FOR_BUS_RDY();
	GspiBusResetReceiver();	
}

void gspi_write_for_read(UINT16 data, INT32 now)
{

   register int ii;
	UINT16 dummy = 0xffff;

   gspi_xmt_data((UINT16*)&data,1);		
   for (ii = 0; ii < now - 1; ii++)
   {
	gspi_xmt_data((UINT16*)&dummy, 1);		
   }
}

int gspi_read_data_direct(UCHAR *data, UINT16 reg, UINT16 size)
{
 
	GspiBusAcquireIO();
    GspiHostSetSCSHigh();
	GspiHostSetSCSLow();
    GspiBusSetTransmitter_nodma();

	gspi_write_for_read(reg, 1 + g_spi_dummy_clk_data); 

	GspiBusSetReceiver();
	GspiBusStartRxDMA(0, size * 2 + 2);
	GspiBusWaitForRxDMA();
	GSPI_WAIT_FOR_BUS_RDY();

//	GspiHostSetSCSHigh();
	GspiBusResetReceiver();

    //if (((volatile)(g_pHwInfo->pSPIRegs->rSPSTA0) & BIT0))
    { // read the last byte
        g_pHwInfo->dmaRxBuf[size * 2] = g_pHwInfo->pSPIRegs->rSPRDAT0 & 0xff;
    }

    /*
    DBG_PRINT(gDbgInfo,("rbuffer: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", 
        g_pHwInfo->dmaRxBuf[0], 
        g_pHwInfo->dmaRxBuf[1], 
        g_pHwInfo->dmaRxBuf[2], 
        g_pHwInfo->dmaRxBuf[3],
        g_pHwInfo->dmaRxBuf[4],
        g_pHwInfo->dmaRxBuf[5],
        g_pHwInfo->dmaRxBuf[6],
        g_pHwInfo->dmaRxBuf[7],
        g_pHwInfo->dmaRxBuf[8],
        g_pHwInfo->dmaRxBuf[9],
        g_pHwInfo->dmaRxBuf[10],
        g_pHwInfo->dmaRxBuf[11],
        g_pHwInfo->dmaRxBuf[12],
        g_pHwInfo->dmaRxBuf[13],
        g_pHwInfo->dmaRxBuf[14],
        g_pHwInfo->dmaRxBuf[15],
        g_pHwInfo->dmaRxBuf[16],
        g_pHwInfo->dmaRxBuf[17],
        g_pHwInfo->dmaRxBuf[18],

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲超丰满肉感bbw| 成人小视频免费在线观看| 日韩午夜激情av| jlzzjlzz欧美大全| 青青草成人在线观看| 亚洲欧美色图小说| 精品国产伦一区二区三区免费| 97精品国产97久久久久久久久久久久 | 国产麻豆精品视频| 一区二区三区四区亚洲| 国产三级精品三级| 91精品啪在线观看国产60岁| 91麻豆国产在线观看| 国产成人啪免费观看软件| 日本成人中文字幕| 亚洲国产sm捆绑调教视频| 成人欧美一区二区三区| 日本一区二区视频在线观看| 日韩美女一区二区三区四区| 欧美日韩美少妇| 日本高清免费不卡视频| 不卡免费追剧大全电视剧网站| 国产在线精品一区在线观看麻豆| 亚洲电影一级黄| 一区二区三区91| 亚洲理论在线观看| 亚洲欧美一区二区视频| 国产精品久久久久一区二区三区共| 欧美成人艳星乳罩| 日韩欧美在线观看一区二区三区| 在线电影一区二区三区| 欧美精品777| 在线成人av网站| 91精品国产综合久久精品图片| 欧美日韩免费视频| 欧美精品免费视频| 欧美精品 国产精品| 欧美高清www午色夜在线视频| 欧美美女一区二区三区| 欧美日韩国产中文| 欧美一区二区三区视频在线观看| 欧美一区二区三区电影| 欧美一级xxx| 亚洲精品在线三区| 欧美精品一区二区三区四区| 久久青草国产手机看片福利盒子 | 亚洲天堂福利av| 中文字幕日本乱码精品影院| 亚洲欧美日韩电影| 亚洲一区二区在线播放相泽| 婷婷成人综合网| 日本网站在线观看一区二区三区| 精品一区二区三区在线观看国产| 国产一区二区三区精品欧美日韩一区二区三区| 国产美女主播视频一区| 国产成人免费视频网站| 91网上在线视频| 欧美肥妇bbw| 久久夜色精品一区| 中文字幕一区二区三| 亚洲国产综合91精品麻豆| 日韩精品一二区| 国产精品夜夜嗨| 99re成人在线| 4438成人网| 久久精品一区二区三区不卡牛牛 | 精品国产成人系列| 日本一区二区在线不卡| 亚洲最大成人综合| 久久成人久久爱| 成人精品亚洲人成在线| 欧美主播一区二区三区| 精品日韩成人av| 亚洲日本青草视频在线怡红院| 亚洲影院免费观看| 国产精品一品视频| 成人aaaa免费全部观看| 欧美高清dvd| 亚洲欧洲日韩av| 蜜臀av国产精品久久久久 | 欧美一区二区三区日韩| 国产欧美综合色| 亚洲国产一区在线观看| 经典一区二区三区| 在线一区二区视频| 久久久久久99久久久精品网站| 亚洲综合视频在线| 国产麻豆精品在线| 欧美福利视频一区| 亚洲天堂免费看| 国产精品一级二级三级| 欧美日本一区二区三区| 亚洲欧洲韩国日本视频 | 91国偷自产一区二区三区观看 | 风流少妇一区二区| 欧美日韩国产色站一区二区三区| 亚洲国产精品高清| 久久99久久久欧美国产| 欧美日韩一区三区| 中文字幕一区免费在线观看| 精品在线播放免费| 欧美日韩国产影片| 亚洲靠逼com| 成人性色生活片| 久久女同互慰一区二区三区| 亚洲福利一区二区三区| 99vv1com这只有精品| 国产欧美一区二区精品性| 精品一区二区三区欧美| 欧美高清激情brazzers| 亚洲一区在线观看视频| 91免费在线看| 国产精品麻豆欧美日韩ww| 国产麻豆9l精品三级站| 26uuu亚洲婷婷狠狠天堂| 日本不卡一区二区| 欧美日本一区二区| 亚洲高清一区二区三区| 91成人免费网站| 亚洲黄色av一区| 91在线播放网址| 亚洲视频免费观看| 波多野结衣在线一区| 国产精品私房写真福利视频| 国产馆精品极品| 国产亚洲一区二区三区四区| 国产精品综合av一区二区国产馆| 日韩精品一区二区三区视频播放| 美女国产一区二区三区| 日韩欧美在线不卡| 久久不见久久见免费视频1| 日韩一级二级三级精品视频| 美女视频网站久久| 日韩午夜av电影| 久久精品国产久精国产| 欧美一区二区女人| 久草中文综合在线| 欧美mv和日韩mv国产网站| 久久国产免费看| 久久久噜噜噜久噜久久综合| 国产99精品视频| 亚洲欧洲精品一区二区三区不卡| 一本一本大道香蕉久在线精品 | 亚洲成a人v欧美综合天堂下载 | 午夜一区二区三区在线观看| 欧美四级电影在线观看| 日韩影视精彩在线| 日韩欧美激情一区| 国产**成人网毛片九色| 国产精品乱码一区二三区小蝌蚪| 91色在线porny| 亚洲 欧美综合在线网络| 日韩欧美在线网站| 高清不卡在线观看av| 综合电影一区二区三区| 欧美性生活大片视频| 蜜桃一区二区三区在线| 国产亚洲精品超碰| 91视频国产资源| 日本伊人色综合网| 久久网站热最新地址| 91色九色蝌蚪| 蜜桃免费网站一区二区三区| 国产三级一区二区三区| 欧美亚洲综合在线| 久久精工是国产品牌吗| 国产精品午夜久久| 在线免费观看一区| 激情综合网av| 亚洲男人天堂av网| 欧美一区二区黄色| 粉嫩av一区二区三区| 亚洲图片欧美色图| 久久精品视频网| 欧美日韩一区二区三区高清| 国产一区二区三区精品欧美日韩一区二区三区 | 国内精品写真在线观看| 亚洲欧美一区二区三区孕妇| 欧美一区二区福利视频| 99久久精品国产导航| 免费观看在线色综合| 日韩美女视频一区二区| 欧美本精品男人aⅴ天堂| 一道本成人在线| 国产乱码字幕精品高清av| 亚洲午夜成aⅴ人片| 国产欧美一区二区三区在线老狼| 欧美日韩一本到| 高清国产一区二区三区| 日本不卡高清视频| 亚洲品质自拍视频| 久久精品网站免费观看| 在线不卡a资源高清| 色综合久久天天综合网| 国产一区二区三区在线观看精品| 亚洲国产aⅴ天堂久久| 一区在线观看免费| 久久免费精品国产久精品久久久久 | 91网站黄www| 国产精品69久久久久水密桃|