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

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

?? macinit.c

?? 三星4510開發(fā)板Sdns100上代的演示程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*************************************************************************/
/*                                                                       */
/* FILE NAME                                      VERSION                */
/*                                                                       */
/*      macinit.c                  		 KS32C50100   : version 1.0 */
/*                                                                       */
/* COMPONENT                                                             */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/* AUTHOR                                                                */
/*                                                                       */
/*                                                                       */
/* DATA STRUCTURES                                                       */
/*                                                                       */
/*                                                                       */
/* FUNCTIONS                                                             */
/*                                                                       */
/*          Include All MAC & BDMAC Initialize Routine                   */
/*                                                                       */
/* DEPENDENCIES                                                          */
/*                                                                       */
/*                                                                       */
/*************************************************************************/
#include <stdarg.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "std.h"
#include "sysconf.h"
#include "isr.h"
#include "mac.h"
#include "uart.h"
#include "pollio.h"
#include "timer.h"
#include "memory.h"
#include "iic.h"


/* 
 * Define MAC address source, IIC EEPROM or set value by manual
 */
#define MAC_ADDR_FROM_IIC_EEPROM  	1
#define KS32C5000_BUG_FETCH 		1

sFrameDescriptor RxFDBaseAddr[MaxRxFrameDescriptors];   // Tx Frame Descriptor
sMACFrame RxFBABaseAddr[MaxRxFrameData];		// Tx Frame Buffer

sFrameDescriptor TxFDBaseAddr[MaxTxFrameDescriptors];   // Rx Frame Descriptor
sMACFrame TxFBABaseAddr[MaxTxFrameData];		// Rx Frame Buffer

// Global variables  used for MAC driver
volatile U32 gMacCon = FullDup ;
volatile U32 gMacTxCon = EnComp ;
volatile U32 gMacRxCon = RxEn | StripCRC ; 
volatile U32 gBdmaTxCon = BTxBRST | BTxMSL110 | BTxSTSKO ;
#ifdef LITTLE
volatile U32 gBdmaRxCon = BRxDIE | BRxEn | BRxLittle | BRxMAINC | BRxBRST | \
                          BRxNLIE | BRxNOIE | BRxSTSKO ;
#else
volatile U32 gBdmaRxCon = BRxDIE | BRxEn | BRxBig | BRxMAINC | BRxBRST | \
                          BRxNLIE | BRxNOIE | BRxSTSKO ;
#endif
volatile U32 gCamCon = CompEn | BroadAcc | GroupAcc;

volatile U32 gDuplexValue = 0 ;

volatile U32 gCTxFDPtr, gWTxFDPtr ;
volatile U32 gCRxFDPtr, gPreviousFdp=0 ;
volatile U32 gCam0_Addr0 = 0 , gCam0_Addr1 = 0  ;
volatile U8 MyMacSrcAddr[6] ;
volatile int WatchDogTime = 0 ;
volatile int gErrorPacketCnt =0 ;
#if KS32C5000_BUG_FETCH
	volatile U32 gPreviousStatusField = 0 ;
#endif
volatile int BdmaRxDoneFlagForLoopBackCheck = 0 ;
volatile int MacTxDoneFlagForLoopBackCheck = 0 ;

// Global variable structure for store status
pMACTxStatus gsMacTxStatus = {0,0,0,0,0,0,0,0,0,0,0} ;
pMACRxStatus gsMacRxStatus = {0,0,0,0,0,0,0,0,0} ;
pBDMATxStatus gsBdmaTxStatus = {0,0,0} ;
pBDMARxStatus gsBdmaRxStatus = {0,0,0,0,0} ;

extern TIME tm0 ;


/*
 * void LanInitialize(void)
 */
void LanInitialize(void)
{
	// Reset the PHY chip and start Auto-negotiat
	ResetPhyChip() ;

	// Read MAC address from IIC EEPROM
	GetMyMacAddr() ;

	// Initialize MAC and BDMA controller
//	MacInitialize() ;
}

/*
 * void MacInitialize(void)
 * Initialize MAC and BDMA Controller
 */
void MacInitialize(void)
{

	/*-----------------------------------------------------------------*
	 * 1. Disable MAC and BDMA interrupts.                             *
	 *-----------------------------------------------------------------*/
	Disable_Int(nMAC_RX_INT) ;     // Disable MAC Rx Interrupt
	Disable_Int(nMAC_TX_INT) ;     // Disable MAC Tx Interrupt
	Disable_Int(nBDMA_RX_INT) ;    // Disable BDMA Rx Interrupt
	Disable_Int(nBDMA_TX_INT) ;    // Disable BDMA Tx Interrupt

	/*-----------------------------------------------------------------*
	 * 2. BDMA and MAC interrupt vector setup.                         * 
	 *-----------------------------------------------------------------*/
	SysSetInterrupt(nMAC_RX_INT, MAC_Rx_isr) ;
	SysSetInterrupt(nMAC_TX_INT, MAC_Tx_isr) ;
	SysSetInterrupt(nBDMA_RX_INT, BDMA_Rx_isr) ; 
	SysSetInterrupt(nBDMA_TX_INT, BDMA_Tx_isr) ;


	/*-----------------------------------------------------------------*
 	 * 3. Set the initial condition of the BDMA, and MAC               * 
 	 *-----------------------------------------------------------------*/
	BDMARXCON = BRxRS ;             // Reset BDMAC Receiver
	BDMATXCON = BTxRS ;             // Reset BDMAC Transceiver
	MACCON = SwReset ;
	BDMARXLSZ = MaxRxFrameSize+40 ;    // 1520
	MACCON = gMacCon ;

	/*-----------------------------------------------------------------*
 	 * 4. Set the BDMA Tx/Rx Frame Descriptor                          *
 	 *-----------------------------------------------------------------*/
	TxFDInitialize() ;
	RxFDInitialize() ;

	/*-----------------------------------------------------------------*
 	 * 5. Set the CAM Control register and the MAC address value       *
 	 *-----------------------------------------------------------------*/
 	// CAM0 register of CAM registers : 0x9100~0x9103, 0x9104, 0x9105
        CAM_Reg(0) =  gCam0_Addr0;
        CAM_Reg(1) =  gCam0_Addr1;

	// CAM Enable Register(CAMEN)
	CAMEN = 0x0001 ;
	CAMCON = gCamCon ;

	/*-----------------------------------------------------------------*
	 * 6. Enable interrupt BDMA Rx and MAC Tx interrupt.               *
	 *-----------------------------------------------------------------*/
	Enable_Int(nBDMA_RX_INT); 
	Enable_Int(nMAC_TX_INT);
	//Enable_Int(nMAC_RX_INT);

	/*-----------------------------------------------------------------*
 	 * 7. Configure the BDMA and MAC control registers.                *
 	 *-----------------------------------------------------------------*/
	ReadyMacTx() ;
	ReadyMacRx() ;
}

void MacWatchdogInit(void) 
{
	sFrameDescriptor *pRxFDptr ;

	MACRXCON = 0x0 ;		// Disable MAC contoller Rx operation
	BDMARXCON = 0x0 ;		// Disable BDMA contoller Rx operation
	BDMARXCON = BRxRS ;             // Reset BDMAC Receiver
	Disable_Int(nBDMA_RX_INT) ;     // Disable BDMA Rx Interrupt
	BDMARXLSZ = MaxRxFrameSize ;    // 1520
	pRxFDptr = (sFrameDescriptor *)gCRxFDPtr ;
	BDMARXPTR = gCRxFDPtr = (U32)(pRxFDptr->NextFrameDescriptor) ;
	Enable_Int(nBDMA_RX_INT); 
	BDMARXCON = gBdmaRxCon ;
	MACRXCON = gMacRxCon ;
}


/*
 * void TxFDInitialize(void) ;
 *           Initialize Tx frame descriptor area-buffers.
 */
void TxFDInitialize(void)
{
	sFrameDescriptor *pFrameDescriptor;
	sFrameDescriptor *pStartFrameDescriptor;
	sFrameDescriptor *pLastFrameDescriptor = NULL;
	U32 FrameDataAddr;
	U32 i;

	// Get Frame descriptor's base address.   
	// +0x4000000 is for setting this area to non-cacheable area. 
	BDMATXPTR = (U32)TxFDBaseAddr + 0x4000000;
	gWTxFDPtr = gCTxFDPtr = BDMATXPTR;

	// Get Transmit buffer base address.
	FrameDataAddr = (U32)TxFBABaseAddr + 0x4000000;

	// Generate linked list.
	pFrameDescriptor = (sFrameDescriptor *) gCTxFDPtr;
	pStartFrameDescriptor = pFrameDescriptor;

	for(i=0; i < MaxTxFrameDescriptors; i++)  {
		if(pLastFrameDescriptor == NULL)
			pLastFrameDescriptor = pFrameDescriptor;
		else  	pLastFrameDescriptor->NextFrameDescriptor = (U32)pFrameDescriptor;

		pFrameDescriptor->FrameDataPtr = 
			(U32)(FrameDataAddr & fOwnership_CPU);
		pFrameDescriptor->Reserved = (U32)0x0;
		pFrameDescriptor->StatusAndFrameLength = (U32)0x0;
		pFrameDescriptor->NextFrameDescriptor = NULL;

		pLastFrameDescriptor = pFrameDescriptor;
		pFrameDescriptor++;
		FrameDataAddr += sizeof(sMACFrame);
	} // end for loop

	// Make Frame descriptor to ring buffer type.     
	pFrameDescriptor--; 
	pFrameDescriptor->NextFrameDescriptor = (U32)pStartFrameDescriptor;
}

/*
 * void RxFDInitialize(void) ;
 *           Initialize Rx frame descriptor area-buffers.
 */
void RxFDInitialize(void)
{
	sFrameDescriptor *pFrameDescriptor;
	sFrameDescriptor *pStartFrameDescriptor;
	sFrameDescriptor *pLastFrameDescriptor = NULL;
	U32 FrameDataAddr;
	U32 i;

	// Get Frame descriptor's base address.  
	// +0x4000000 is for setting this area to non-cacheable area. 
	BDMARXPTR = (U32)RxFDBaseAddr + 0x4000000;
	gCRxFDPtr = BDMARXPTR;
	
	// Get Transmit buffer base address.  
	FrameDataAddr = (U32)RxFBABaseAddr + 0x4000000;

	// Generate linked list. 
	pFrameDescriptor = (sFrameDescriptor *) gCRxFDPtr;
	pStartFrameDescriptor = pFrameDescriptor;
	
	for(i=0; i < MaxRxFrameDescriptors; i++)  {
		if(pLastFrameDescriptor == NULL)
			pLastFrameDescriptor = pFrameDescriptor;
		else  	pLastFrameDescriptor->NextFrameDescriptor = (U32)pFrameDescriptor;

		pFrameDescriptor->FrameDataPtr =
		(U32)(FrameDataAddr | fOwnership_BDMA | 0x4000000 );
		pFrameDescriptor->Reserved = (U32)0x0;
		pFrameDescriptor->StatusAndFrameLength = (U32)0x0;
		pFrameDescriptor->NextFrameDescriptor = NULL;
		
		pLastFrameDescriptor = pFrameDescriptor;
		pFrameDescriptor++;
		FrameDataAddr += sizeof(sMACFrame); 
	} // end for loop
      
	// Make Frame descriptor to ring buffer type.     
	pFrameDescriptor--; 
	pFrameDescriptor->NextFrameDescriptor = (U32)pStartFrameDescriptor;
}



/*
 * Function : ReadyMacTx
 * Description : set Tx Registers related with BDMA & MAC to transmit
 *               packet.
 */
void ReadyMacTx(void)
{
	BDMATXCON = gBdmaTxCon ;
	MACTXCON =  gMacTxCon ;
}

/*
 * Function : ReadyMacRx
 * Description : set Rx Registers related with BDMA & MAC to Receive packet.
 */
void ReadyMacRx(void)
{
	BDMARXCON = gBdmaRxCon ;
	MACRXCON = gMacRxCon ;
}

/*
 * Function : MacTxGo
 * Description : MAC Transfer Start for interactive mode
 */
void MacTxGo(void)
{
	// Enable MAC and BDMA Transfer
	if (!(BDMATXCON & BTxEn))  BDMATXCON |= BTxEn ;
	MACTXCON |= TxEn  ;
}


/*
 * Function : Lan_WatchDog
 * Description : LAN watchdog function 
 */
void Lan_WatchDog(void)
{

	WatchDogTime++ ;
        if ( !(WatchDogTime%100) ) {
                if (gCRxFDPtr == gPreviousFdp) {
			MacWatchdogInit() ; 
		}
                else gPreviousFdp = gCRxFDPtr ;
	}
}


/*
 * Function : GetMyMacAddr 
 * Description : Get MAC Address From IIC EEPROM
 */
	
void GetMyMacAddr(void)
{
	U8 *MacAddr;
	U8 TempAddr[MAC_ADDR_SIZE];
	int i;
	
	gCam0_Addr0 = gCam0_Addr1 = 0 ;

#if MAC_ADDR_FROM_IIC_EEPROM // when use IIC EEPROM for store MAC address 
	MacAddr=(U8 *)IICReadInt((U8)IIC_DEV_0,(U32)iMacAddrPtr,(U32)MAC_ADDR_SIZE) ;
#else	// When manual ly setting the MAC address
	MacAddr[0] = 0x00 ;
	MacAddr[1] = 0x00 ;
	MacAddr[2] = 0xf0 ;
	MacAddr[3] = 0x11 ;
	MacAddr[4] = 0x00 ;
	MacAddr[5] = 0x00 ;
#endif

	/* Get MAC Address */
	for (i=0;i<(int)MAC_ADDR_SIZE;i++)  TempAddr[i] = *MacAddr++;
	
	/* Copy MAC Address to global variable */
	for (i=0;i<(int)MAC_ADDR_SIZE-2;i++)
		gCam0_Addr0 = (gCam0_Addr0 << 8) | TempAddr[i] ;

	for (i=(int)(MAC_ADDR_SIZE-2);i<(int)MAC_ADDR_SIZE;i++)
		gCam0_Addr1 = (gCam0_Addr1 << 8) | TempAddr[i] ;
	gCam0_Addr1 = (gCam0_Addr1 << 16) ;

 	/* Set CAM0 register : 0x9100~0x9103, 0x9104, 0x9105 */
        CAM_Reg(0) =  gCam0_Addr0;
        CAM_Reg(1) =  gCam0_Addr1;

	for (i=0;i<(int)MAC_ADDR_SIZE;i++) MyMacSrcAddr[i] = TempAddr[i];
}


/*
 * Function : ResetPhyChip
 * Description : Reset The Phychip, Auto-Negotiation Enable 
 */
void ResetPhyChip(void)
{
	U32	value ;

	if(MACCON&MACLoop) MiiStationWrite(PHY_CNTL_REG,PHYHWADDR,DR_100MB|PHY_FULLDUPLEX) ;
	else {

#if 0  /* This routine is not used, because have some error */
	// 1. Reset PHY chip
	MiiStationWrite(PHY_CNTL_REG, PHYHWADDR, RESET_PHY ) ;
	while ( (MiiStationRead(PHY_CNTL_REG, PHYHWADDR) & RESET_PHY) )  ;

	// 2. Restart PHY auto-negotiation
	MiiStationWrite(PHY_CNTL_REG, PHYHWADDR, ENABLE_AN | RESTART_AN); 

	// 3. Wait until auto-negotiation complete
	while ( !(MiiStationRead(PHY_STATUS_REG, PHYHWADDR) & AN_COMPLETE) ) ;

	// 4. Read auto-negotiation status from PHY register
	value = MiiStationRead(PHY_ANLPAR_REG, PHYHWADDR)  ;

	// 5. Set PHY control register as auto-negotiation status 
	if ( (value & DR100_TX_FULL) ) {
		MiiStationWrite(PHY_CNTL_REG,PHYHWADDR,DR_100MB|PHY_FULLDUPLEX) ;
		gDuplexValue = FullDup ;
	}
	else if ( (value & DR100_TX_HALF) )
		MiiStationWrite(PHY_CNTL_REG,PHYHWADDR,DR_100MB) ;
	else if ( (value & DR10_TX_FULL) ) {
		MiiStationWrite(PHY_CNTL_REG,PHYHWADDR,PHY_FULLDUPLEX) ;
		gDuplexValue = FullDup ;
	}
	else 	MiiStationWrite(PHY_CNTL_REG,PHYHWADDR,0) ;
#endif
	}

	//MiiStationWrite(PHY_CNTL_REG, PHYHWADDR, ENABLE_AN | RESTART_AN); 
	//MiiStationWrite(PHY_CNTL_REG,PHYHWADDR,DR_100MB|PHY_FULLDUPLEX) ;
	//MiiStationWrite(PHY_CNTL_REG,PHYHWADDR,DR_100MB) ;
	//MiiStationWrite(PHY_CNTL_REG,PHYHWADDR,PHY_FULLDUPLEX) ;
	//MiiStationWrite(PHY_CNTL_REG,PHYHWADDR,0) ;
	//gDuplexValue = FullDup ;
}

/*
 * Function : MiiStationRead, MiiStationWrite  
 * Description : MII Interface Station Management Register Read or Write
 * Input : PhyInAddr(PHY internal register address)
 *         PhyAddr(PHY unique address)
 *         PhyWrData(When Write) 
 * Output: PhyRdData(WhenRead) 
 */
void MiiStationWrite(U32 PhyInAddr, U32 PhyAddr, U32 PhyWrData)
{
	STADATA = PhyWrData ;
	STACON = PhyInAddr | PhyAddr |  MiiBusy | PHYREGWRITE ;
	while( (STACON & MiiBusy) )  ;
	delay_physet() ;
}
U32 MiiStationRead(U32 PhyInAddr, U32 PhyAddr) 
{
	U32	PhyRdData ;
	STACON = PhyInAddr | PhyAddr |  MiiBusy ;
	while( (STACON & MiiBusy) )  ;
	PhyRdData = STADATA ;
	return PhyRdData ;
}

void delay_physet(void) 
{
	int i=1000 ;
	while(i--) ;
}


/*

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品三级视频| 日韩精品一区二区三区视频在线观看| 精品国产乱码久久久久久闺蜜 | 首页国产欧美久久| 国产精品福利电影一区二区三区四区| 精品少妇一区二区三区免费观看| 日韩国产一二三区| 国产日韩欧美综合一区| 欧美久久久久久蜜桃| 不卡av免费在线观看| 日本美女一区二区| 日日夜夜一区二区| 亚洲一区av在线| 亚洲乱码国产乱码精品精98午夜| 国产欧美日韩另类视频免费观看| 日韩女优视频免费观看| 91精品婷婷国产综合久久性色| 在线看国产一区| 91福利国产成人精品照片| 99久久99久久精品国产片果冻 | 成人ar影院免费观看视频| 黑人精品欧美一区二区蜜桃| 久久99精品国产.久久久久久| 轻轻草成人在线| 另类综合日韩欧美亚洲| 九九国产精品视频| 国产精品资源在线观看| 国产成人亚洲综合a∨猫咪| 国产成人午夜精品5599| 99re这里只有精品视频首页| 色国产综合视频| 欧美一区二区在线不卡| 亚洲精品一区二区三区99| 久久久久久久久岛国免费| 中文字幕一区二区不卡| 亚洲一区在线看| 奇米777欧美一区二区| 国产激情视频一区二区三区欧美| 9l国产精品久久久久麻豆| 91福利小视频| 国产日韩精品一区二区浪潮av| 欧美精彩视频一区二区三区| 亚洲综合免费观看高清完整版在线| 男男成人高潮片免费网站| 国产黄人亚洲片| 在线观看日产精品| 欧美大片顶级少妇| 国产精品视频你懂的| 五月婷婷色综合| 成人看片黄a免费看在线| 欧美性猛交xxxx乱大交退制版 | 青青草97国产精品免费观看 | 555夜色666亚洲国产免| 精品少妇一区二区三区| 一区二区三区日韩欧美| 国产二区国产一区在线观看| 欧美日本韩国一区| 亚洲免费看黄网站| 波多野结衣在线aⅴ中文字幕不卡| 91精品国产aⅴ一区二区| 亚洲激情自拍偷拍| 91免费版pro下载短视频| 国产精品久久久久影院老司| 美女诱惑一区二区| 在线成人av网站| 午夜成人免费视频| 欧美偷拍一区二区| 一二三四社区欧美黄| 在线观看视频91| 亚洲国产综合在线| 欧美区一区二区三区| 亚洲一区二区三区四区在线免费观看 | 椎名由奈av一区二区三区| 国产高清久久久| 欧美激情综合在线| 91色porny在线视频| 亚洲在线观看免费| www.欧美日韩| 久久久久高清精品| 日韩女同互慰一区二区| 国产乱人伦精品一区二区在线观看 | 欧美日韩www| 在线观看日韩高清av| 久久久久久久久久久久久女国产乱| 亚洲高清视频的网址| 欧美无人高清视频在线观看| 色综合久久99| 欧美视频在线观看一区| 91精品国产综合久久久久久| 日韩欧美成人午夜| 国产精品嫩草99a| 国产精品美女久久久久久久| 91在线看国产| 亚洲手机成人高清视频| 国产精品中文字幕日韩精品| 欧美网站大全在线观看| 国产网站一区二区| 成人午夜激情视频| 亚洲男女毛片无遮挡| 成人免费av资源| 777午夜精品视频在线播放| 亚洲午夜日本在线观看| 91麻豆6部合集magnet| 亚洲精品成a人| 日韩一区二区电影网| 国产自产2019最新不卡| 中文字幕av一区二区三区高| 99久久久国产精品| 美女视频黄 久久| 亚洲另类色综合网站| 色国产综合视频| 在线免费观看成人短视频| 国产一区中文字幕| 一区二区三区日韩在线观看| 中文字幕第一区第二区| 欧美欧美午夜aⅴ在线观看| 波多野结衣一区二区三区| 成熟亚洲日本毛茸茸凸凹| 国产一区999| 久久99久久99| 久久er99热精品一区二区| 蜜桃视频第一区免费观看| 日本不卡中文字幕| 亚洲午夜在线电影| 亚洲综合av网| 午夜久久久久久| 亚洲成人中文在线| 日韩欧美中文一区二区| 久久影院午夜论| 亚洲情趣在线观看| 麻豆中文一区二区| 色综合天天狠狠| 欧美mv和日韩mv国产网站| 中日韩av电影| 777a∨成人精品桃花网| 7777精品伊人久久久大香线蕉经典版下载 | 91精品中文字幕一区二区三区| 制服丝袜亚洲精品中文字幕| 日韩视频在线你懂得| 久久精品亚洲麻豆av一区二区| 久久久噜噜噜久噜久久综合| 国产精品视频在线看| 一区二区三区欧美久久| 狂野欧美性猛交blacked| 国产精品18久久久久久久久| 99麻豆久久久国产精品免费 | 精品福利一二区| ...av二区三区久久精品| 婷婷综合久久一区二区三区| 日本乱人伦aⅴ精品| 欧美在线看片a免费观看| 精品国产123| 日本成人中文字幕| 风间由美性色一区二区三区| 欧美日韩一区二区三区高清| 国产女人18毛片水真多成人如厕| 一区二区三区四区中文字幕| 国产精品一级片| 欧美一区二区视频网站| 亚洲欧洲精品一区二区三区| 激情综合色丁香一区二区| 欧美色窝79yyyycom| 亚洲欧洲一区二区在线播放| 麻豆91免费看| 在线不卡的av| 一区二区三区在线看| 国产成a人亚洲| 欧美精品一区二| 精品一区二区三区影院在线午夜| 欧美日韩视频第一区| 亚洲免费在线观看| www.欧美日韩| 亚洲精品国产视频| 91玉足脚交白嫩脚丫在线播放| 国产精品视频麻豆| 国产aⅴ精品一区二区三区色成熟| 欧美www视频| 精油按摩中文字幕久久| 日韩欧美卡一卡二| 麻豆久久久久久久| 久久综合999| 处破女av一区二区| 亚洲人成精品久久久久久| 一本一道久久a久久精品| 一区二区免费在线播放| 欧洲国内综合视频| 香蕉影视欧美成人| 精品国产欧美一区二区| 国产成人在线色| 国产精品成人一区二区三区夜夜夜 | 国产精品网站导航| 欧美日韩一区成人| 韩国v欧美v亚洲v日本v| 中文字幕一区二区三区不卡| 欧美在线色视频| 麻豆精品视频在线观看视频| 日韩精品免费视频人成| 欧美精品一区二区在线播放| 97精品国产97久久久久久久久久久久| 亚洲精品免费在线观看|