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

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

?? ser2440_hw.c

?? 包含了大量文件
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
            // Then simulate a TX intr to get things moving
            pHWHead->AddTXIntr = TRUE;
        }
        if ( pHWHead->CTSFlowOff && (pHWHead->vUMSTAT & COM2440_MSR_CTS))
		{
            RETAILMSG(DEBUGMODE, (TEXT("***********************PutBytes, flowed on via CTS\n") ) );
            pHWHead->CTSFlowOff = FALSE;
            // CTS is set, so go ahead and resume sending
            EnINT(pHWHead, pHWHead->bINT);
            EnSubINT(pHWHead, pHWHead->bTxINT | pHWHead->bRxINT | pHWHead->bErrINT);
            pHWHead->fSW_EnTxINT = TRUE;
            // Then simulate a TX intr to get things moving
            pHWHead->AddTXIntr = TRUE;
        }
        
    }
    except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
            EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
        // Just exit
    }

    LeaveCriticalSection(&(pHWHead->RegCritSec));

    RETAILMSG(DEBUGMODE,(TEXT("-SL_OtherIntr 0x%X\r\n"), pHead));

}


//
// @doc OEM
// @func ULONG | SL_OtherIntr | This routine is called from the MDD
//   whenever INTR_MODEM is returned by SL_GetInterruptType.
// 
// @rdesc None
//
VOID
SL_ModemIntr(PVOID pHead)			// Hardware Head
{
	PS2440_UART_INFO   pHWHead    = (PS2440_UART_INFO)pHead;
	INTERRUPT_TYPE      it = INTR_NONE;
	ULONG               win32status = 0;

	RETAILMSG (1, (TEXT("SL_ModemIntr - pHWHead->OpenCount %d \r\n"), pHWHead->OpenCount));
	if ( !pHWHead->OpenCount )
	{
		// We want to indicate a cable event.
		RETAILMSG(1, (TEXT("!pHWHead->OpenCount : 0x%X\r\n"), pHWHead->OpenCount));

		if ( IsAPIReady(SH_WMGR))
		{
			RETAILMSG(1, (TEXT("IsAPIReady(SH_WMGR) == true\r\n")));
			CeEventHasOccurred (NOTIFICATION_EVENT_RS232_DETECTED,NULL);
			RETAILMSG(1, (TEXT("Indicating RS232 Cable Event\r\n")));
			RETAILMSG(1, (TEXT("Event occurred : NOTIFICATION_EVENT_RS232_DETECTED\r\n")));
		}
	}
	else
	{
		RETAILMSG(1,(TEXT("+SL_ModemIntr 0x%X\r\n"), pHead));
		SL_OtherIntr(pHead);
	}
}

//  
// @doc OEM
// @func    ULONG | SL_GetStatus | This structure is called by the MDD
//   to retrieve the contents of a COMSTAT structure.
//
// @rdesc    The return is a ULONG, representing success (0) or failure (-1).
//
ULONG
SL_GetStatus(
            PVOID    pHead,    // @parm PVOID returned by HWInit.
            LPCOMSTAT    lpStat    // Pointer to LPCOMMSTAT to hold status.
            )
{
    PS2440_UART_INFO pHWHead = (PS2440_UART_INFO)pHead;
    ULONG      RetVal  = pHWHead->CommErrors;

	RETAILMSG(1, (TEXT("+SL_GetStatus 0x%X\r\n"), pHead));
	pHWHead->CommErrors = 0; // Clear old errors each time

    if ( lpStat )
	{
		try
		{
            if (pHWHead->CTSFlowOff)
                pHWHead->Status.fCtsHold = 1;
            else
                pHWHead->Status.fCtsHold = 0;

            if (pHWHead->DSRFlowOff)
                pHWHead->Status.fDsrHold = 1;
            else
                pHWHead->Status.fDsrHold = 0;

            // NOTE - I think what they really want to know here is
            // the amount of data in the MDD buffer, not the amount
            // in the UART itself.  Just set to 0 for now since the
            // MDD doesn't take care of this.
            pHWHead->Status.cbInQue  = 0;
            pHWHead->Status.cbOutQue = 0;

            memcpy(lpStat, &(pHWHead->Status), sizeof(COMSTAT));
        }
        except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
                EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
		{
            RetVal = (ULONG)-1;
        }        
    } 
	else
        RetVal = (ULONG)-1;

    DEBUGMSG (ZONE_FUNCTION|USERDBG,
              (TEXT("-SL_GetStatus 0x%X\r\n"), pHead));
    return(RetVal);
}

//
// @doc OEM
// @func    ULONG | SL_Reset | Perform any operations associated
//   with a device reset
//
// @rdesc    None.
//
VOID
SL_Reset(PVOID   pHead)			// @parm PVOID returned by HWInit.
{
	PS2440_UART_INFO pHWHead = (PS2440_UART_INFO)pHead;

	RETAILMSG(DEBUGMODE,(TEXT("+SL_Reset 0x%X\r\n"), pHead));

	memset(&pHWHead->Status, 0, sizeof(COMSTAT));

	EnterCriticalSection(&(pHWHead->RegCritSec));
	try
	{
		DisEnINT(pHWHead, pHWHead->bINT);
		DisEnSubINT(pHWHead, pHWHead->bTxINT);
		//	if ( GetSubINTStatus(pHWHead) )
		pHWHead->fSW_EnTxINT = FALSE;
		pHWHead->RxDiscard = FALSE;
	}

	except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
	{
		// Do nothing
	}

	LeaveCriticalSection(&(pHWHead->RegCritSec));

	DEBUGMSG (ZONE_FUNCTION, (TEXT("-SL_Reset 0x%X\r\n"), pHead));
}

//
// @doc OEM
// @func    VOID | SL_GetModemStatus | Retrieves modem status.
//
// @rdesc    None.
//
VOID
SL_GetModemStatus(
                 PVOID   pHead,        // @parm PVOID returned by HWInit.
                 PULONG  pModemStatus    // @parm PULONG passed in by user.
                 )
{
	PS2440_UART_INFO pHWHead = (PS2440_UART_INFO)pHead;
	UINT8 ubModemStatus;

	RETAILMSG(DEBUGMODE,  (TEXT("SL_GetModemStatus:\r\n")));

	ReadMSR( pHWHead );
	ubModemStatus = (unsigned char)pHWHead->vUMSTAT;
	RETAILMSG(DEBUGMODE,  (TEXT("SL_GetModemStatus: ubModemStatus = 0x%x\r\n"), ubModemStatus));

	if ( ubModemStatus & COM2440_MSR_CTS )
		*pModemStatus |= MS_CTS_ON;
	
	if ( ubModemStatus & COM2440_MSR_DSR )
	{
		*pModemStatus |= MS_DSR_ON;
		*pModemStatus |= MS_RLSD_ON;
	}

	RETAILMSG(DEBUGMODE,(TEXT("-SL_GetModemStatus 0x%X (stat x%X) \r\n"), pHead, *pModemStatus));
	return;
}

//
// @doc OEM
// @func    VOID | SL_PurgeComm | Purge RX and/or TX
// 
// @rdesc    None.
//

VOID
SL_PurgeComm(
            PVOID   pHead,        // @parm PVOID returned by HWInit.
            DWORD   fdwAction        // @parm Action to take. 
            )
{
	PS2440_UART_INFO pHWHead = (PS2440_UART_INFO)pHead;

	RETAILMSG(DEBUGMODE,(TEXT("+SL_PurgeComm 0x%X\r\n"), fdwAction));
	return;
}

//
// @doc OEM
// @func    BOOL | SL_XmitComChar | Transmit a char immediately
// 
// @rdesc    TRUE if succesful
//
BOOL
SL_XmitComChar(
              PVOID   pHead,    // @parm PVOID returned by HWInit.
              UCHAR   ComChar   // @parm Character to transmit. 
              )
{
	PS2440_UART_INFO pHWHead = (PS2440_UART_INFO)pHead;
	ULONG       rFifoStat, TxFifoCnt; 

	RETAILMSG (DEBUGMODE,(TEXT("+SL_XmitComChar 0x%X\r\n"), pHead));
	// Get critical section, then transmit when buffer empties
	RETAILMSG(DEBUGMODE, (TEXT("XmitComChar wait for CritSec %x.\r\n"),&(pHWHead->TransmitCritSec)));
	EnterCriticalSection(&(pHWHead->TransmitCritSec));
	RETAILMSG(DEBUGMODE, (TEXT("XmitComChar got CritSec %x.\r\n"),&(pHWHead->TransmitCritSec)));
	try
	{
		while ( TRUE )			// We know THR will eventually empty
		{
			EnterCriticalSection(&(pHWHead->RegCritSec));

			// Write the character if we can
			rFifoStat = INREG(pHWHead,rUFSTAT);
			TxFifoCnt = (rFifoStat & SER2440_FIFOCNT_MASK_TX) >> 8;

			if (!(rFifoStat & SER2440_FIFOFULL_TX) && (TxFifoCnt < (SER2440_FIFO_DEPTH_TX-1)))
			{
				// FIFO is empty, send this character
				//OUTB(pHWHead, pData, ComChar);
				OUTREG(pHWHead,rUTXH,ComChar);
				// Make sure we release the register critical section
				LeaveCriticalSection(&(pHWHead->RegCritSec));

				RETAILMSG(DEBUGMODE, (TEXT("XmitComChar wrote x%X\r\n"),ComChar));
				break;
			}

			// If we couldn't write the data yet, then wait for a
			// TXINTR to come in and try it again.

			// Enable xmit intr.
			EnINT(pHWHead, pHWHead->bINT);
			EnSubINT(pHWHead, pHWHead->bTxINT | pHWHead->bRxINT | pHWHead->bErrINT);
			pHWHead->fSW_EnTxINT = TRUE;
			LeaveCriticalSection(&(pHWHead->RegCritSec));

			// Wait until the txintr has signalled.
			DEBUGMSG (ZONE_WRITE, (TEXT("XmitComChar WaitIntr x%X\r\n"),
						pHWHead->FlushDone));
			WaitForSingleObject(pHWHead->FlushDone, (ULONG)1000);
		}
	}
	except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
	{
		// Make sure we release the register critical section
		LeaveCriticalSection(&(pHWHead->RegCritSec));
	}

	LeaveCriticalSection(&(pHWHead->TransmitCritSec));

	DEBUGMSG (ZONE_WRITE, (TEXT("XmitComChar released CritSec %x.\r\n"), &(pHWHead->TransmitCritSec)));

	DEBUGMSG (ZONE_FUNCTION, (TEXT("-SL_XmitComChar 0x%X\r\n"), pHead));

	return(TRUE);
}

//
// @doc OEM
// @func    BOOL | SL_PowerOff | Perform powerdown sequence.
// 
// @rdesc    TRUE if succesful
//
VOID
SL_PowerOff(PVOID   pHead)			// @parm    PVOID returned by HWInit.
{
	PS2440_UART_INFO   pHWHead   = (PS2440_UART_INFO)pHead;

	RETAILMSG(0, (TEXT("SL_PowerOff \r\n")));

	if ( !pHWHead->UseIrDA )
	{
		// DeAssert DTR
		*(pHWHead->rDTRport) |= (1<<(pHWHead->DtrPortNum));
		
		// DeAssert RTS
#if USE_AFC
			*(pHWHead->rRTSport) |= (1<<(pHWHead->RtsPortNum));
#else
			CLEARREG(pHWHead, rUMCON, SER2440_RTS);
#endif
	}

	pHWHead->sULCON = INREG(pHWHead, rULCON);
	pHWHead->sUCON  = INREG(pHWHead, rUCON);
	pHWHead->sUMCON = INREG(pHWHead, rUMCON);
	pHWHead->sUFCON = INREG(pHWHead, rUFCON);        
	pHWHead->sINTstat = (*(pHWHead->UART_INTSUBMASK) & (pHWHead->bTxINT | pHWHead->bRxINT));
}

//
// @doc OEM
// @func    BOOL | SL_PowerOn | Perform poweron sequence.
// 
// @rdesc    TRUE if succesful
//
VOID
SL_PowerOn(PVOID   pHead)			// @parm    PVOID returned by HWInit.
{
	PS2440_UART_INFO pHWHead = (PS2440_UART_INFO)pHead;

	// Restore any registers that we need
	RETAILMSG(DEBUGMODE, (TEXT("SL_PowerOn \r\n")));

	if ( !pHWHead->UseIrDA )
	{
		// Assert DTR
		*(pHWHead->rDTRport) &= ~(1<<(pHWHead->DtrPortNum));
		
		// Assert RTS
#if USE_AFC
			*(pHWHead->rRTSport) &= ~(1<<(pHWHead->RtsPortNum));
#else
			SETREG(pHWHead, rUMCON, SER2440_RTS);
#endif
	}
	
	// In power handler context, so don't try to do a critical section
	OUTREG(pHWHead, rULCON, pHWHead->sULCON); 
	OUTREG(pHWHead, rUCON,  pHWHead->sUCON); 
	OUTREG(pHWHead, rUMCON, pHWHead->sUMCON); 
	OUTREG(pHWHead, rUFCON, pHWHead->sUFCON); 

	if((pHWHead->sINTstat) & (pHWHead->bTxINT))
	{
		EnINT(pHWHead, pHWHead->bINT);
		EnSubINT(pHWHead, pHWHead->bTxINT);
		pHWHead->fSW_EnTxINT = TRUE;
		pHWHead->RxDiscard = FALSE;
	}

	if((pHWHead->sINTstat) & (pHWHead->bRxINT))
	{
		EnINT(pHWHead, pHWHead->bINT);
		EnSubINT(pHWHead, pHWHead->bRxINT);
	}

	// And we didn't save the Divisor Reg, so set baud rate
	// But don't call SL_SetBaud, since it does DebugMsg.
	// Call our internal function instead.  Can't acquire
	// the RegCritSec, but shouldn't really need to since
	// we are in power context.
	SetBaudRate( pHWHead, pHWHead->dcb.BaudRate );

	return;

	pHWHead->EventCallback( pHWHead->pMddHead, EV_POWER );

}

//
// @doc OEM
// @func    BOOL | SL_SetDCB | Sets new values for DCB.  This
// routine gets a DCB from the MDD.  It must then compare
// this to the current DCB, and if any fields have changed take
// appropriate action.
// 
// @rdesc    BOOL
//
BOOL
SL_SetDCB(
         PVOID   pHead,        // @parm    PVOID returned by HWInit.
         LPDCB   lpDCB       // @parm    Pointer to DCB structure
         )
{
	PS2440_UART_INFO pHWHead = (PS2440_UART_INFO)pHead;
	BOOL bRet;

	bRet = TRUE;

	RETAILMSG(DEBUGMODE,(TEXT("SL_SetDCB : BaudRate is %d\r\n"), lpDCB->BaudRate));
	RETAILMSG(DEBUGMODE,(TEXT("SL_SetDCB : Set ByteSize is %d\r\n"), lpDCB->ByteSize));
	RETAILMSG(DEBUGMODE,(TEXT("SL_SetDCB : Set Parity is %d\r\n"), lpDCB->Parity));
	RETAILMSG(DEBUGMODE,(TEXT("SL_SetDCB : Set StopBits is %d\r\n"), lpDCB->StopBits));

	// If the device is open, scan for changes and do whatever
	// is needed for the changed fields.  if the device isn't
	// open yet, just save the DCB for later use by the open.
	if ( pHWHead->OpenCount )
	{
		// Note, fparity just says whether we should check
		// receive parity.  And the 16550 won't let us NOT
		// check parity if we generate it.  So this field
		// has no effect on the hardware.

		if ( lpDCB->BaudRate != pHWHead->dcb.BaudRate )
		{
			RETAILMSG(DEBUGMODE,(TEXT("SL_SetDCB : Set BaudRate to %d\r\n"), lpDCB->BaudRate));
			bRet = SL_SetBaudRate( pHWHead, lpDCB->BaudRate );
		}

		if ( bRet && (lpDCB->ByteSize != pHWHead->dcb.ByteSize ))
		{
			RETAILMSG(DEBUGMODE,(TEXT("SL_SetDCB : Set ByteSize to %d\r\n"), lpDCB->ByteSize));
			bRet = SL_SetByteSize( pHWHead, lpDCB->ByteSize );
		}

		if ( bRet && (lpDCB->Parity != pHWHead->dcb.Parity ))
		{
			RETAILMSG(DEBUGMODE,(TEXT("SL_SetDCB : Set Parity to %d\r\n"), lpDCB->Parity));
			bRet = SL_SetParity( pHWHead, lpDCB->Parity );
		}

		if ( bRet && (lpDCB->StopBits != pHWHead->dcb.StopBits ))
		{
			RETAILMSG(DEBUGMODE,(TEXT("SL_SetDCB : Set StopBits to %d\r\n"), lpDCB->StopBits));
			bRet = SL_SetStopBits( pHWHead, lpDCB->StopBits );
		}

		// Don't worry about fOutxCtsFlow.  It is a flag which
		// will be examined every time we load the TX buffer.
		// No special action required here.
	}

	if (bRet)
	{
		// Now that we have done the right thing, store this DCB
		pHWHead->dcb = *lpDCB;
	}

	RETAILMSG(DEBUGMODE,(TEXT("-SL_SetDCB 0x%X\r\n"), pHead));

	return(bRet);
}

//
// @doc OEM
// @func    BOOL | SL_SetCommTimeouts | Sets new values for the
// CommTimeouts structure. routine gets a DCB from the MDD.  It
// must then compare this to the current DCB, and if any fields
// have changed take appropriate action.
// 
// @rdesc    ULONG
//
ULONG
SL_SetCommTimeouts(
                  PVOID   pHead,        // @parm    PVOID returned by HWInit.
                  LPCOMMTIMEOUTS   lpCommTimeouts // @parm Pointer to CommTimeout structure
                  )
{
	PS2440_UART_INFO pHWHead = (PS2440_UART_INFO)pHead;
	ULONG retval = 0;

	RETAILMSG(DEBUGMODE,(TEXT("+SL_SetCommTimeout 0x%X\r\n"), pHead));
//	ShowSerialRegisters(pHead);

	// OK, first check for any changes and act upon them
	if ( lpCommTimeouts->WriteTot

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2021久久国产精品不只是精品| 久久久久久99久久久精品网站| 99久久99久久综合| 成人在线综合网| 成人一区二区视频| 成人h动漫精品| 91网站在线播放| 色久综合一二码| 欧美在线视频你懂得| 欧美在线免费观看视频| 欧美性猛片xxxx免费看久爱| 精品视频999| 7777精品伊人久久久大香线蕉最新版| 欧美日本高清视频在线观看| 欧美久久一区二区| 欧美videos中文字幕| 2020国产精品自拍| 国产精品午夜免费| 亚洲男人天堂av| 亚洲福利视频三区| 麻豆91在线看| 国产激情精品久久久第一区二区 | 国产成人在线免费观看| 国产91精品精华液一区二区三区 | 在线免费一区三区| 欧美日韩免费高清一区色橹橹| 51午夜精品国产| 日韩免费视频一区| 国产欧美精品国产国产专区| 中文字幕一区二区三区不卡在线 | 日韩中文字幕不卡| 激情五月激情综合网| 成人网在线免费视频| 色婷婷av一区二区三区gif| 欧美日韩在线观看一区二区| 国产一区二区成人久久免费影院| 伊人色综合久久天天| 午夜欧美在线一二页| 免费观看一级欧美片| 国产成人av影院| 在线观看日韩高清av| 欧美成人video| 国产精品国产三级国产aⅴ入口| 亚洲国产aⅴ天堂久久| 国产一区免费电影| 色88888久久久久久影院按摩| 91精品国产综合久久蜜臀| 国产欧美精品国产国产专区 | 日韩**一区毛片| 国产成a人亚洲精品| 在线免费观看日本欧美| 精品福利av导航| 亚洲美女视频在线| 精品在线一区二区| 欧美在线三级电影| 国产色产综合产在线视频| 亚洲一区二区欧美| 粉嫩久久99精品久久久久久夜| 欧美性色欧美a在线播放| 日本一区二区在线不卡| 日日摸夜夜添夜夜添国产精品| 高清成人在线观看| 日韩色在线观看| 一区二区久久久久| 成人黄色大片在线观看| 日韩欧美中文字幕公布| 一区二区三区在线不卡| 风流少妇一区二区| 欧美va亚洲va| 亚洲成av人片在www色猫咪| 成人禁用看黄a在线| 欧美电影免费观看高清完整版在| 一区二区三区电影在线播| 国产精品影视在线观看| 日韩天堂在线观看| 亚洲h动漫在线| 色综合久久天天| 国产欧美日韩综合| 久久 天天综合| 777奇米四色成人影色区| 亚洲香肠在线观看| 99久久精品免费看| 中文字幕乱码亚洲精品一区| 黄色日韩网站视频| 日韩三级视频在线观看| 亚洲电影在线播放| 欧美亚洲综合一区| 国产精品美女久久久久久| 亚洲三级电影网站| 成人蜜臀av电影| 国产日韩欧美一区二区三区乱码| 美女视频黄免费的久久| 欧美高清hd18日本| 亚洲成人先锋电影| 欧美图片一区二区三区| 亚洲乱码国产乱码精品精小说 | 国产精品丝袜黑色高跟| 国产资源精品在线观看| 欧美成人乱码一区二区三区| 五月婷婷久久综合| 欧美男生操女生| 日韩影院免费视频| 日韩一区二区在线观看视频| 日韩精品一级中文字幕精品视频免费观看| 91成人看片片| 亚洲国产一二三| 欧美日韩二区三区| 日韩av一区二区在线影视| 91麻豆精品国产综合久久久久久| 亚洲成人综合在线| 欧美一级一区二区| 久久99精品国产麻豆婷婷| 精品国产一区二区国模嫣然| 国产一区二区免费视频| 久久久久久久久久久久电影| 福利一区在线观看| 国产精品电影一区二区三区| 99精品视频在线免费观看| 一区二区三区在线视频播放| 欧美色图免费看| 日本aⅴ亚洲精品中文乱码| 日韩精品中文字幕一区| 国产精品自产自拍| 日韩一区欧美一区| 欧美日韩中字一区| 麻豆精品精品国产自在97香蕉| 久久免费视频一区| 99久久免费视频.com| 亚洲国产美女搞黄色| 日韩精品一区二区三区四区| 国产麻豆视频一区二区| 国产精品伦一区| 欧美无砖专区一中文字| 麻豆成人久久精品二区三区红| 国产欧美在线观看一区| 在线免费观看不卡av| 免费成人结看片| 国产精品你懂的在线| 欧美日韩精品欧美日韩精品一| 看电影不卡的网站| 国产精品久久久久影院亚瑟 | 欧美高清激情brazzers| 国产中文字幕一区| 亚洲免费资源在线播放| 日韩区在线观看| 成人av中文字幕| 日韩黄色免费网站| 日本一区二区不卡视频| 欧美色图一区二区三区| 国产美女精品人人做人人爽| 一区二区在线观看免费视频播放| 日韩三区在线观看| 91亚洲男人天堂| 久久不见久久见中文字幕免费| 国产精品久久久久国产精品日日| 欧美精品一二三| 丁香婷婷综合色啪| 日本亚洲视频在线| 亚洲男人的天堂av| 337p粉嫩大胆色噜噜噜噜亚洲| 一道本成人在线| 日韩av网站在线观看| 91精品国产91久久综合桃花| av资源网一区| 美女视频免费一区| 亚洲免费观看高清完整版在线观看 | 国产传媒久久文化传媒| 亚洲成av人片一区二区梦乃| 中文字幕欧美国产| 日韩精品在线一区| 欧美三级电影精品| eeuss鲁片一区二区三区| 精品一区二区影视| 午夜激情久久久| 亚洲三级在线观看| 国产亚洲成av人在线观看导航| 欧美午夜精品电影| 91麻豆文化传媒在线观看| 国产精品亚洲午夜一区二区三区| 亚洲18色成人| 一区二区三区蜜桃网| 国产精品久久一卡二卡| 久久久精品免费网站| 日韩欧美二区三区| 91精品在线一区二区| 在线观看欧美日本| 91网站在线观看视频| 风间由美一区二区三区在线观看| 麻豆精品一区二区综合av| 丝袜亚洲精品中文字幕一区| 樱花草国产18久久久久| 亚洲色图制服诱惑| 日韩伦理免费电影| 国产精品久久久爽爽爽麻豆色哟哟| 久久久91精品国产一区二区精品| 日韩久久精品一区| 日韩美女在线视频| 欧美一区二区在线看| 欧美一卡二卡在线观看| 欧美一级黄色片|