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

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

?? smsc111.c

?? WinCE5.0BSP for Renesas SH7770
?? C
?? 第 1 頁 / 共 5 頁
字號:
 * Arguments:
 *	pAdapter - Pointer to the adapter structure.
 *	hConfigurationHandle - Handle passed to Smsc111Initialize.
 *	ConfigError - Was there an error during configuration reading.
 *	ConfigErrorValue - Value to log if there is an error.
 *
 * Return Value:
 *	Indicates the success or failure of the registration.
 */
#pragma NDIS_PAGEABLE_FUNCTION(Smsc111RegisterAdapter)
NDIS_STATUS
Smsc111RegisterAdapter (IN PSMSC111_ADAPTER pAdapter, IN NDIS_HANDLE hConfigurationHandle, IN BOOLEAN bConfigError, IN ULONG ulConfigErrorValue)
{
    NDIS_STATUS status;	// General purpose return from NDIS calls

	DEBUGMSG (ZONE_INIT, (TEXT ("+CELAN: RegisterAdapter: pAdapter is 0x%x\r\n"), pAdapter));
    //
    // Check for a configuration error
    //
    if (bConfigError)
		{
        //
        // Log Error and exit.
        //
        NdisWriteErrorLogEntry (pAdapter->hMiniportAdapterHandle, NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION, 1, ulConfigErrorValue);
        DEBUGMSG (ZONE_INIT, (TEXT ("!CELAN: RegisterAdapter: LAN91C111Initialize had a config error %d\r\n"), ulConfigErrorValue));
        DEBUGMSG (ZONE_INIT, (TEXT ("-CELAN: RegisterAdapter\r\n")));
        return (NDIS_STATUS_FAILURE);
		}

    //
    // Inform the wrapper of the physical attributes of this adapter.
    //
	NdisMSetAttributes (pAdapter->hMiniportAdapterHandle, (NDIS_HANDLE)pAdapter, FALSE, NdisInterfaceInternal);
    //
    // Initialize the card.
    //
    DEBUGMSG (ZONE_INIT, (TEXT (" CELAN: RegisterAdapter: Calling CardInitialize\r\n")));
    if (!CardInitialize (pAdapter))
		{
        //
        // Card seems to have failed.
        //
        DEBUGMSG (ZONE_INIT, (TEXT ("!CELAN: RegisterAdapter: CardInitialize -- Failed\r\n")));
        NdisWriteErrorLogEntry (pAdapter->hMiniportAdapterHandle, NDIS_ERROR_CODE_ADAPTER_NOT_FOUND, 0);
        status = NDIS_STATUS_ADAPTER_NOT_FOUND;
	    return (status);
	    }
    DEBUGMSG (ZONE_INIT, (TEXT (" CELAN: RegisterAdapter: CardInitialize  -- Success\r\n")));
    //
    // Initialize the receive variables.
    //
    pAdapter->usNicReceiveConfig = RCR_ENABLE | RCR_STRIP_CRC;
    //
    // Read the Ethernet address out of the EEPROM.
    //
    CardReadEthernetAddress (pAdapter);
    //
    // Now initialize the NIC.
    //
    pAdapter->usNicInterruptMask = IM_TX_INT | IM_RCV_INT | IM_RX_OVRN_INT | IM_EPH_INT;
    //
    // Link us on to the chain of adapters for this driver.
    //
    pAdapter->NextAdapter = gSmsc111MiniportBlock.AdapterQueue;
    gSmsc111MiniportBlock.AdapterQueue = pAdapter;

    //
    // Setup the card based on the initialization information
    //
    DEBUGMSG (ZONE_INIT, (TEXT (" CELAN: RegisterAdapter CardSetup\r\n")));
    if (CardSetup (pAdapter))
		{
		//
		// Initialize the interrupt.
		//
		status = NdisMRegisterInterrupt (&pAdapter->Interrupt, pAdapter->hMiniportAdapterHandle, pAdapter->ucInterruptNumber, pAdapter->ucInterruptNumber, FALSE, FALSE, NdisInterruptLatched);
		if (status == NDIS_STATUS_SUCCESS)
			{
			DEBUGMSG (ZONE_INIT, (TEXT (" CELAN: RegisterAdapter Interrupt Connected\r\n")));
			// register a shutdown handler for this card
			NdisMRegisterAdapterShutdownHandler (pAdapter->hMiniportAdapterHandle, pAdapter, Smsc111Shutdown);
			//
			// Start up the adapter.
			//
			CardStart (pAdapter);
			//
			// Initialization completed successfully.
			//
			DEBUGMSG (ZONE_INIT, (TEXT (" CELAN: RegisterAdapter OK\r\n")));
			return (NDIS_STATUS_SUCCESS);
			}
		else
			DEBUGMSG (ZONE_INIT, (TEXT ("!CELAN: RegisterAdapter NdisRegisterInterrupt Failed\r\n")));
		NdisWriteErrorLogEntry (pAdapter->hMiniportAdapterHandle, NDIS_ERROR_CODE_INTERRUPT_CONNECT, 0);
		}
    //
    // The NIC could not be written to.
    //
    NdisWriteErrorLogEntry (pAdapter->hMiniportAdapterHandle, NDIS_ERROR_CODE_ADAPTER_NOT_FOUND, 0);
    DEBUGMSG (ZONE_INIT, (TEXT ("!CELAN: RegisterAdapter: CardSetup -- Failed\r\n")));
    status = NDIS_STATUS_ADAPTER_NOT_FOUND;
    //
    // Code to unwind what has already been set up when a part of
    // initialization fails, which is jumped into at various
    // points based on where the failure occured. Jumping to
    // a higher-numbered failure point will execute the code
    // for that block and all lower-numbered ones.
    //
    //
    // Take the Adapter out of the AdapterQueue.
    //
    if (gSmsc111MiniportBlock.AdapterQueue == pAdapter)
        gSmsc111MiniportBlock.AdapterQueue = pAdapter->NextAdapter;
    else
	    {
        PSMSC111_ADAPTER TmpAdapter = gSmsc111MiniportBlock.AdapterQueue;
        while (TmpAdapter->NextAdapter != pAdapter)
            TmpAdapter = TmpAdapter->NextAdapter;
        TmpAdapter->NextAdapter = TmpAdapter->NextAdapter->NextAdapter;
	    }
    DEBUGMSG (ZONE_INIT, (TEXT ("-CELAN: RegisterAdapter\r\n")));
    return (status);
	}

/*
 * Description:
 *	Smsc111Shutdown is called to shut down the adapter. Unblock any threads and terminate any loops.
 *
 * Arguments:
 *	hMiniportAdapterContext - The context value that the Miniport returned from Smsc111Initialize.
 *
 * Return Value:
 *	None.
 */
VOID
Smsc111Shutdown (IN NDIS_HANDLE hMiniportAdapterContext)
	{
    PSMSC111_ADAPTER pAdapter = (PSMSC111_ADAPTER)(hMiniportAdapterContext);
    //
    // Shut down the chip.
    //
    CardStop (pAdapter);
	}

/*
 * Description:
 *	Disable interrupts on the adaptor card.
 *
 * Arguments:
 *	pAdapter - Pointer to the pAdapter object.
 *
 * Return Value:
 *	None.
 */
#pragma NDIS_PAGEABLE_FUNCTION (CardBlockInterrupts)
VOID
CardBlockInterrupts (IN PSMSC111_ADAPTER pAdapter)
{
	WORD wBank;
	DEBUGMSG (ZONE_INTR, (TEXT ("CELAN: CardBlockInterrupt\r\n")));
	wBank = ReadWord (pAdapter,BANK_SELECT);
	SelectBank (pAdapter,BANK2);
	WriteWord (pAdapter,INTERRUPT_REGISTER, 0);
	SelectBank (pAdapter,wBank);
}

/*
 * Description:
 *	Enable interrupts on the adaptor card.
 *
 * Arguments:
 *	pAdapter - Pointer to the pAdapter object.
 *
 * Return Value:
 *	None.
 */
#pragma NDIS_PAGEABLE_FUNCTION (CardUnblockInterrupts)
VOID
CardUnblockInterrupts (IN PSMSC111_ADAPTER pAdapter)
{
	WORD wBank;
	DEBUGMSG (ZONE_INTR, (TEXT ("CELAN: CardUnblockInterrupt: InterruptMask %04x\r\n"), pAdapter->usNicInterruptMask));
	wBank = ReadWord (pAdapter,BANK_SELECT);
	SelectBank (pAdapter,BANK2);
	WriteWord (pAdapter,INTERRUPT_REGISTER, pAdapter->usNicInterruptMask);
	SelectBank (pAdapter,wBank);
}

/*
 * Description:
 *	Stops the card.
 *
 * Arguments:
 *	pAdapter - Pointer to the adapter structure.
 *
 * Return Value:
 *	None.
 */
VOID
CardStop (IN PSMSC111_ADAPTER pAdapter)
	{
	DEBUGMSG (ZONE_FUNCTION, (TEXT ("+CELAN: CardStop\r\n")));
	SelectBank (pAdapter,BANK0);
	WriteWord (pAdapter,RCR, 0);
	DEBUGMSG (ZONE_FUNCTION, (TEXT ("-CELAN: CardStop\r\n")));
	}

/*
 * Description:
 *	Resets the card.
 *
 * Arguments:
 *	pAdapter - Pointer to the adapter structure.
 *
 * Return Value:
 *	TRUE if everything is OK.
 */
BOOLEAN
CardReset (IN PSMSC111_ADAPTER pAdapter)
	{
	WORD wRcr;

	DEBUGMSG (ZONE_FUNCTION, (TEXT ("+CELAN: CardReset\r\n")));
    //
    // Stop the chip
    //
    CardStop (pAdapter);
    //
    // Write to and read from RCR to make sure it is there.
    //
	DEBUGMSG (ZONE_INIT, (TEXT ("CELAN: Reset LAN91C111\r\n")));
	SelectBank (pAdapter,BANK0);
	WriteWord (pAdapter,RCR, RCR_SOFTRESET);
	Sleep (10);
	wRcr = ReadWord (pAdapter,RCR);

	if ((wRcr & RCR_SOFTRESET) != RCR_SOFTRESET)
	{
		DEBUGMSG (ZONE_ERROR, (TEXT ("CELAN: CardReset - RCR = 0x%x, Expected 0x%x\r\n"), wRcr, (RCR_SOFTRESET)));
		return (FALSE);
	}
	WriteWord (pAdapter,RCR, 0);
	Sleep (10);

    //
    // Restart the chip
    //
	CardSetup (pAdapter);
    CardStart (pAdapter);
	DEBUGMSG (ZONE_FUNCTION, (TEXT ("-CELAN: CardReset\r\n")));
    return (TRUE);
	}

/*
 * Description:
 *	Initializes the card into a running state.
 *
 * Arguments:
 *	pAdapter - Pointer to the adapter structure.
 *
 * Return Value:
 *	TRUE if everything is OK.
 */
#pragma NDIS_PAGEABLE_FUNCTION(CardInitialize)
BOOLEAN
CardInitialize (IN PSMSC111_ADAPTER pAdapter)
	{
	UINT uiDelay;
	WORD wRcr;
//	PWORD pPcbRevisionRegisterBase;
//	PWORD pSw1RegisterBase;
//	ULONG ulSw1PhysicalRegisterBase;
//	ULONG ulSw1PhysicalRegisterSize;
//	USHORT usPcbRev;
//	UCHAR ucSw1;
	BOOL bResult = FALSE;

    DEBUGMSG (ZONE_INIT, (TEXT ("+CELAN: CardInitialize\r\n")));
//	NKDbgPrintfW (L"+CELAN: CardInitialize\r\n");

	//
	// VirtualAlloc Register Area SMSC111 register access.
	// Page Aliegnment
	if (pAdapter==NULL)
		return FALSE;
    pAdapter->pVirtualRegisterBase = (PBYTE)VirtualAlloc (0, SMSC111_REG_SIZE, MEM_RESERVE, PAGE_NOACCESS);
	DEBUGMSG (ZONE_INIT, (TEXT ("CELAN: VirtualAlloc at 0x%x.\r\n"), pAdapter->pVirtualRegisterBase));
	if (pAdapter->pVirtualRegisterBase==NULL)
		return FALSE;
	bResult= VirtualCopy ((PVOID)pAdapter->pVirtualRegisterBase, (PVOID)RegisterBase, SMSC111_REG_SIZE, PAGE_READWRITE | PAGE_NOCACHE);

	//page alignment for ETHERNET_BASE.
	if (bResult)
	{
		DEBUGMSG (ZONE_INIT, (TEXT ("CELAN: InitialCard at 0x%x.\r\n"), pAdapter->pVirtualRegisterBase));
		// Reset the SMSC91C111
		SelectBank (pAdapter,BANK0);
		WriteWord (pAdapter,RCR, RCR_SOFTRESET);
		Sleep (10);
		wRcr = ReadWord (pAdapter,RCR);
		
		if ((wRcr & RCR_SOFTRESET) != RCR_SOFTRESET)
		{
			DEBUGMSG (ZONE_ERROR, (TEXT ("CELAN: CardInitialize - RCR = 0x%x, Expected 0x%x\r\n"), wRcr, (RCR_SOFTRESET)));
			bResult = FALSE;
		}
		else
		{
			WriteWord (pAdapter,RCR, 0);
			Sleep (100);
			
			// Initialize the control register
			SelectBank (pAdapter,BANK1);
			WriteWord (pAdapter,CONTROL, CTL_TE_ENABLE | CTL_LE_ENABLE);
			
			// Reset MMU
			SelectBank (pAdapter,BANK2);
			WriteWord (pAdapter,MMU_CMD, MC_RESET);
			Sleep(100);
			for (uiDelay = 0; uiDelay < MMU_WAIT_LOOP*10; uiDelay++)
			{
				if (!(ReadWord (pAdapter,MMU_CMD) & MC_BUSY))
					break;
			}
			if (uiDelay == MMU_WAIT_LOOP)
			{
				DEBUGMSG (ZONE_INIT, (TEXT ("-CELAN: CardInitialize: MMU reset failed., MMU_CMD = 0x%x\r\n"), ReadWord(pAdapter,MMU_CMD)));
				bResult = FALSE;
			}
			else
			{
				DEBUGMSG (ZONE_INIT, (TEXT ("-CELAN: CardInitialize: Success\r\n")));
				return (TRUE);
			}
		}
	}
	else
		{
		DEBUGMSG (ZONE_INIT, (TEXT ("CELAN: VirtualCopy ETHERNET_BASE failed.\r\n")));
		bResult = FALSE;
		}
	if (pAdapter->pVirtualRegisterBase)		{
		VirtualFree ((PVOID)(pAdapter->pVirtualRegisterBase), 0, MEM_RELEASE);
		pAdapter->pVirtualRegisterBase = NULL;
	}
	return (bResult);
	}

/*
 * Description:
 *	Reads in the Ethernet address from the SMSC91C111.
 *
 * Arguments:
 *	pAdapter - Pointer to the adapter structure.
 *
 * Return Value:
 *	None.
 */
#pragma NDIS_PAGEABLE_FUNCTION(CardReadEthernetAddress)
VOID
CardReadEthernetAddress (IN PSMSC111_ADAPTER pAdapter)
	{
	// Read the MAC address registers
	SelectBank (pAdapter,BANK1);
	pAdapter->ucPermanentAddress[0] = ReadWord(pAdapter,ADDR0) & 0xFF;
	pAdapter->ucPermanentAddress[1] = ReadWord(pAdapter,ADDR0) >> 8;
	pAdapter->ucPermanentAddress[2] = ReadWord(pAdapter,ADDR1) & 0xFF;
	pAdapter->ucPermanentAddress[3] = ReadWord(pAdapter,ADDR1) >> 8;
	pAdapter->ucPermanentAddress[4] = ReadWord(pAdapter,ADDR2) & 0xFF;
	pAdapter->ucPermanentAddress[5] = ReadWord(pAdapter,ADDR2) >> 8;

#if 1   // for ROM
    if(
    ((pAdapter->ucPermanentAddress[0] == 0) &&
     (pAdapter->ucPermanentAddress[1] == 0) &&
     (pAdapter->ucPermanentAddress[2] == 0) &&
     (pAdapter->ucPermanentAddress[3] == 0) &&
     (pAdapter->ucPermanentAddress[4] == 0) &&
     (pAdapter->ucPermanentAddress[5] == 0) )
    ||
    ((pAdapter->ucPermanentAddress[0] == 0xff) &&
     (pAdapter->ucPermanentAddress[1] == 0xff) &&
     (pAdapter->ucPermanentAddress[2] == 0xff) &&
     (pAdapter->ucPermanentAddress[3] == 0xff) &&
     (pAdapter->ucPermanentAddress[4] == 0xff) &&
     (pAdapter->ucPermanentAddress[5] == 0xff) ) )
    {
       if (pAdapter->ucPermanentAddress[0] == 0xff)
       RETAILMSG(1, (TEXT("CELAN: !!Warning!! EEPROM doesn't have MAC address. \r\n")));
       
       if ( (MAC0 == 0) && (MAC1 == 0) && (MAC2 == 0) )
       {
       RETAILMSG(1, (TEXT("CELAN: !!ERROR!! MAC address is not specified. \r\n")));
       return;    // Registry not set
       }
       else
       {
       // We do not have EEPROM, so let's set MAC address by software
       // MAC address is specified in the registry
#define SWAPB(Word) ((Word<<8)&0xff00 | (Word>>8)&0x00ff)
       SelectBank (pAdapter,BANK1);
       WriteWord(pAdapter,ADDR0,SWAPB(MAC0));
       WriteWord(pAdapter,ADDR1,SWAPB(MAC1));
       WriteWord(pAdapter,ADDR2,SWAPB(MAC2));

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜一区二区三区| 99久久精品国产麻豆演员表| 亚洲精品中文字幕在线观看| 久久嫩草精品久久久精品| 26uuu国产电影一区二区| 欧美一区二区三区色| 日韩欧美国产一区在线观看| 在线不卡免费欧美| 欧美一级免费大片| 26uuu久久综合| 国产精品麻豆网站| 一区二区中文字幕在线| 一区二区三区在线观看欧美| 亚洲第一会所有码转帖| 日本一道高清亚洲日美韩| 久久99国内精品| 国产91精品露脸国语对白| 欧美久久久久久久久| 精品奇米国产一区二区三区| 久久精品视频在线免费观看| 成人免费毛片app| 欧洲视频一区二区| 91精品国产综合久久久久久久久久| 欧美成人一区二区三区在线观看| 日韩欧美高清一区| 国产日产欧美一区二区三区| 亚洲欧美另类久久久精品| 亚洲福利视频一区二区| 久久不见久久见中文字幕免费| 国产麻豆一精品一av一免费| 色综合久久久久综合体桃花网| 欧美午夜在线一二页| 制服丝袜激情欧洲亚洲| 久久久久久久综合| 欧美亚洲自拍偷拍| 欧美成人官网二区| 亚洲另类中文字| 狠狠色综合播放一区二区| 成人黄色软件下载| 制服丝袜中文字幕一区| 欧美国产禁国产网站cc| 日韩精品电影一区亚洲| 99久久99久久精品免费观看 | 国产精品欧美一区喷水| 一区二区三区日韩欧美精品| 国产一区在线不卡| 欧日韩精品视频| 日韩欧美中文字幕精品| 亚洲精品成人少妇| 美女mm1313爽爽久久久蜜臀| 色婷婷精品久久二区二区蜜臂av| 精品一区二区三区免费毛片爱| 99久精品国产| 日韩一区二区三区视频在线| 亚洲图片你懂的| 精品一区二区免费在线观看| 欧美亚洲动漫另类| 亚洲欧美国产毛片在线| 国产风韵犹存在线视精品| 欧美一区二区三区在线观看视频| 一区二区三区在线视频播放| 丁香婷婷综合色啪| 久久精品人人做| 久久精品噜噜噜成人av农村| 欧美卡1卡2卡| 亚洲成年人网站在线观看| 99久久99久久精品国产片果冻| 国产色综合久久| 国产精品系列在线播放| 毛片av一区二区| 日韩一级片在线播放| 天天综合网 天天综合色| 欧美三级一区二区| 亚洲一区二区视频在线观看| 欧美午夜视频网站| 亚洲va韩国va欧美va| 欧美日本国产视频| 日韩国产欧美在线观看| 91精品国产综合久久久蜜臀粉嫩| 日韩一区国产二区欧美三区| 日韩主播视频在线| 91精品国产麻豆| 激情小说亚洲一区| 国产视频一区二区在线观看| 高清在线不卡av| 最近日韩中文字幕| 欧美色区777第一页| 午夜在线成人av| 欧美变态tickling挠脚心| 久久av中文字幕片| 国产1区2区3区精品美女| 国产精品丝袜91| 色综合久久中文综合久久97| 亚洲一二三专区| 日韩欧美一区二区在线视频| 极品尤物av久久免费看| 中文一区一区三区高中清不卡| av一区二区三区四区| 亚洲女同女同女同女同女同69| 欧美影院午夜播放| 狠狠色伊人亚洲综合成人| 国产成人丝袜美腿| 亚洲欧美一区二区三区极速播放 | 国产精品一区二区在线播放| 国产精品美女一区二区在线观看| 91福利在线播放| 久久99久久久欧美国产| 国产精品久久久久久久久搜平片| 欧美中文字幕一区| 国内精品国产三级国产a久久| 中文字幕一区二区三区av| 欧美日韩二区三区| 粉嫩一区二区三区性色av| 亚洲另类春色国产| 久久综合国产精品| 欧美日韩中文字幕一区二区| 国产在线一区二区| 亚洲高清视频的网址| 国产日韩精品一区二区三区| 欧洲av在线精品| 国产精品一级片在线观看| 亚洲一区二区三区四区不卡| 久久久久成人黄色影片| 欧美精品自拍偷拍动漫精品| 成人少妇影院yyyy| 精油按摩中文字幕久久| 亚洲成av人片在线| 综合久久国产九一剧情麻豆| 日韩久久免费av| 欧美日韩三级一区| 91丝袜美女网| 成人免费看视频| 国产精品一二二区| 久久99久久99精品免视看婷婷| 亚洲午夜精品在线| 亚洲精品ww久久久久久p站| 久久精品免费在线观看| 欧美精品一区二区三区高清aⅴ | 国产午夜精品福利| 欧美一三区三区四区免费在线看 | 久久激情五月婷婷| 亚洲成av人影院在线观看网| 亚洲精品国产成人久久av盗摄| 中文字幕欧美区| 日本一区二区高清| 久久综合九色欧美综合狠狠| 日韩美女视频一区二区在线观看| 欧美精品三级日韩久久| 一区二区三区.www| 一区二区三区四区蜜桃 | 日韩高清欧美激情| 亚洲成人av电影在线| 亚洲成国产人片在线观看| 亚洲一区在线免费观看| 亚洲欧美乱综合| 亚洲精品国产精华液| 亚洲精品综合在线| 亚洲图片欧美综合| 欧美日韩一区久久| 欧美丰满少妇xxxxx高潮对白| 欧美老肥妇做.爰bbww| 正在播放亚洲一区| 日韩女同互慰一区二区| 欧美va日韩va| 国产欧美一区二区三区在线看蜜臀| 精品国产3级a| 99在线精品一区二区三区| 激情图区综合网| 成人av午夜电影| 色综合久久中文综合久久97| 91久久国产最好的精华液| 9191成人精品久久| www国产精品av| 中文字幕一区不卡| 午夜欧美在线一二页| 蜜臀av亚洲一区中文字幕| 国产精品911| 91福利精品视频| 精品国产麻豆免费人成网站| 国产女人aaa级久久久级 | 亚洲超碰精品一区二区| 美洲天堂一区二卡三卡四卡视频 | 亚洲柠檬福利资源导航| 婷婷综合久久一区二区三区| 国产一区二区三区国产| 91偷拍与自偷拍精品| 日韩一级黄色大片| 国产精品第四页| 日本成人在线看| 成年人国产精品| 日韩三级中文字幕| 国产精品白丝在线| 麻豆久久一区二区| 9色porny自拍视频一区二区| 欧美一级国产精品| 一卡二卡三卡日韩欧美| 国产精品自拍一区| 91麻豆精品国产91久久久久久久久| 国产午夜精品一区二区| 日本麻豆一区二区三区视频|