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

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

?? drivers_net_arm_ep93xx_eth_c_diff.htm

?? linux2.6.11.6drivers_net_arm_ep93xx_eth_c
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
+}/*_phy_write()*/
+
+/*****************************************************************************
+* _phy_read()
+*****************************************************************************/
+static u16 _phy_read(struct net_device *pD, int idPhy, int reg)
+{
+	u16 dt;
+
+/*    _PRTK_ENTRY(("_phy_read(pD:0x%p,idPhy:%d,reg:0x%x)\n",pD,idPhy,reg)); */
+
+	phy_waitRdy();
+	RegWr32(REG_MIICmd,
+		MIICmd_OP_RD | ((idPhy & 0x1f) << 5) | ((reg & 0x1f) << 0));
+	phy_waitRdy();
+	dt = (unsigned short)RegRd32(REG_MIIData);
+
+/*    _PRTK_INFO(("_phy_read(): read 0x%x\n",dt));*/
+
+	return dt;
+}/*_phy_read()*/
+
+#ifndef _PRTK_DUMP
+#define _dbg_phy_dumpReg(pD)
+#else
+/*****************************************************************************
+* _dbg_phy_dumpReg()
+*****************************************************************************/
+static void _dbg_phy_dumpReg(struct net_device *pD)
+{
+	_PRTK_DUMP(("Dumping registers of Ethernet PHY\n"));
+	_PRTK_DUMP((" pD:0x%p, Eth Base Address:0x%x\n", pD,
+		    (unsigned int)pD->base_addr));
+
+	_PRTK_DUMP((" 0-3:0x%04x 0x%04x  0x%04x 0x%04x\n",
+		    phy_rd(0), phy_rd(1), phy_rd(2), phy_rd(3)));
+	_PRTK_DUMP((" 4-6:0x%04x 0x%04x  0x%04x\n",
+		    phy_rd(4), phy_rd(5), phy_rd(6)));
+	_PRTK_DUMP((" 16-19:0x%04x 0x%04x  0x%04x  0x%04x\n",
+		    phy_rd(16), phy_rd(17), phy_rd(18), phy_rd(19)));
+	_PRTK_DUMP((" 20:0x%04x\n", phy_rd(20)));
+}/*_dbg_phy_dumpReg()*/
+#endif				/*ifndef _PRTK_DUMP else */
+
+/*****************************************************************************
+* phy_autoNegotiation()
+*****************************************************************************/
+static int phy_autoNegotiation(struct net_device *pD)
+{
+	u16 val;
+	u16 oldVal;
+	u16 count = 0;
+
+	phy_wr(4, 0x01e1);	/* Set 802.3, 100M/10M Full/Half ability */
+	phy_wr(0, (1 << 12) | (1 << 9));	/* enable auto negotiation */
+	while (1) {
+		val = phy_rd(1);	/* read BM status Reg */
+		if (val & 0x0020) {	/* if Auto_Neg_complete? */
+			break;
+		} else {
+			if (count >= 3)
+				return -1;
+			mdelay(1000);	/* delay 1 second. */
+			count++;
+		}
+	}
+
+	/* CS8952 PHY needs the delay.  Otherwise it won't send the 1st frame. */
+	mdelay(1000);		/* delay 1 second. */
+
+	val = phy_rd(5);	/* read ANLPAR Reg */
+	if (val & 0x0140) {	/* if 100M_FDX or 10M_FDX? */
+		oldVal = RegRd16(REG_TestCTL);
+		/* Enable MAC's Full Duplex mode. */
+		RegWr16(REG_TestCTL, oldVal | TestCTL_MFDX);
+		/* printk("ep93xx_eth(): set MAC to Full Duplex mode\n"); */
+	} else {
+		/* printk("ep93xx_eth(): set MAC to Half Duplex mode\n"); */
+	}
+	/* TODO PJJ-added to get rid of _dbg_phy_dumpReg be sure returning zero is ok. */
+	gPhyAutoNegoDone = 1;
+	return 0;
+}
+
+/*****************************************************************************
+* phy_init()
+*****************************************************************************/
+static int phy_init(struct net_device *pD)
+{
+	u32 oldVal;
+	int status = -1;
+	u16 val;
+
+	_PRTK_ENTRY(("phy_init(pD:0x%x)\n", (unsigned int)pD));
+
+	oldVal = RegRd32(REG_SelfCTL);
+	RegWr32(REG_SelfCTL, 0x0e00);	/*Set MDC clock to be divided by 8
+					   and disable PreambleSuppress bit */
+
+	val = phy_rd(1);	/* read BM status Reg; Link Status Bit remains cleared
+				   until the Reg is read. */
+	val = phy_rd(1);	/* read BMStaReg again to get the current link status */
+	if (val & 0x0004) {	/* if Link Status == established? */
+		status = phy_autoNegotiation(pD);
+	}
+
+	RegWr32(REG_SelfCTL, oldVal);	/*restore the old value */
+
+	return status;
+}				/*phy_init() */
+
+/*****************************************************************************
+* phy_reset()
+*****************************************************************************/
+#if 0
+static int phy_reset(struct net_device *pD)
+{
+	int i;
+
+	_PRTK_ENTRY(("phy_reset(pD:0x%p)\n", pD));
+
+	phy_wr(0, 1 << 15);	/*reset PHY */
+	for (i = 0; i < 1000; i++)
+		if (0 == ((1 << 15) & phy_rd(0)))
+			break;
+	if (0 != ((1 << 15) & phy_rd(0))) {
+		_PRTK_HWFAIL(("phy_reset(): PHY reset does not self-clear\n"));
+		return -1;
+	}
+	/*if */
+	phy_wr(19, 0x00);	/*@ override default value from H/W pin that is not correct */
+	phy_wr(4, (1 << 8) | (1 << 7) | (1 << 6) | (1 << 5) | (0x01 << 0));	/*advertise 100/10M full/half */
+	phy_wr(0, (1 << 12) | (1 << 9));	/*enable auto negotiation */
+
+	return 0;
+}				/*phy_reset() */
+#endif
+
+#ifndef _PRTK_DUMP
+# define _dbg_ep9312Eth_dumpQueues(pD)
+#else
+/*****************************************************************************
+* _dbg_ep9312Eth_dumpQueues()
+*****************************************************************************/
+static void _dbg_ep9312Eth_dumpQueues(struct net_device *pD)
+{
+
+	int i;
+
+	_PRTK_DUMP(("Dumping Descriptor/Status Queues\n"));
+	_PRTK_DUMP((" pD:0x%p, Base Address:0x%x\n", pD,
+		    (unsigned int)pD->base_addr));
+
+	_PRTK_DUMP((" o Rx Status Queue: at 0x%p, %d entries\n",
+		    pP->s.pQueRxSts, LEN_QueRxSts));
+	for (i = 0; i < LEN_QueRxSts; i++)
+		_PRTK_DUMP(("  - %2d: 0x%08x 0x%08x \n",
+			    i, (unsigned int)pP->s.pQueRxSts[i].w.e0,
+			    (unsigned int)pP->s.pQueRxSts[i].w.e1));
+
+	_PRTK_DUMP((" o Rx Descriptor Queue: at 0x%p, %d entries\n",
+		    pP->s.pQueRxDesc, LEN_QueRxDesc));
+	for (i = 0; i < LEN_QueRxDesc; i++)
+		_PRTK_DUMP(("  - %2d: 0x%08x 0x%08x \n",
+			    i, (unsigned int)pP->s.pQueRxDesc[i].w.e0,
+			    (unsigned int)pP->s.pQueRxDesc[i].w.e1));
+
+	_PRTK_DUMP((" o Tx Status Queue: at 0x%p, %d entries\n",
+		    pP->s.pQueTxSts, LEN_QueTxSts));
+	for (i = 0; i < LEN_QueTxSts; i++)
+		_PRTK_DUMP(("  - %2d: 0x%08x \n", i,
+			    (unsigned int)pP->s.pQueTxSts[i].w.e0));
+
+	_PRTK_DUMP((" o Tx Descriptor Queue: at 0x%p, %d entries\n",
+		    pP->s.pQueTxDesc, LEN_QueTxDesc));
+	for (i = 0; i < LEN_QueTxDesc; i++)
+		_PRTK_DUMP(("  - %2d: 0x%08x 0x%08x \n",
+			    i, (unsigned int)pP->s.pQueTxDesc[i].w.e0,
+			    (unsigned int)pP->s.pQueTxDesc[i].w.e1));
+}/*_dbg_ep9312Eth_dumpQueues()*/
+#endif				/*ifndef _PRTK_DUMP else */
+
+/*****************************************************************************
+* devQue_start()
+*
+  make descriptor queues active
+  allocate queue entries if needed
+  and set device registers up to make it operational
+  assume device has been initialized
+* 
+*****************************************************************************/
+static int devQue_start(struct net_device *pD)
+{
+	int err;
+	struct ep93xxEth_info *pP = netdev_priv(pD);
+	int i;
+	void *pBuf;
+	u32 phyA;
+
+	_PRTK_ENTRY(("devQue_start(pD:0x%p)\n", pD));
+
+	/*turn off device bus mastering */
+	RegWr32(REG_BMCtl, BMCtl_RxDis | BMCtl_TxDis | RegRd32(REG_BMCtl));
+	err = waitOnReg32(pD, REG_BMSts, BMSts_TxAct, ~BMSts_TxAct, 1);
+	err |= waitOnReg32(pD, REG_BMSts, BMSts_RxAct, ~BMSts_RxAct, 1);
+	if (err)
+		_PRTK_HWFAIL(("devQue_start(): BM does not stop\n"));
+
+	/*if */
+	/*Tx Status Queue */
+	memset(pP->s.pQueTxSts, 0, sizeof(pP->s.pQueTxSts[0]) * LEN_QueTxSts);	/*clear status */
+	pP->d.idxQueTxSts = 0;	/*init index */
+	RegWr32(REG_TxSBA, pP->s.phyQueTxSts);	/*base addr */
+	RegWr32(REG_TxSCA, pP->s.phyQueTxSts);	/*current addr */
+	RegWr16(REG_TxSBL, sizeof(pP->s.pQueTxSts[0]) * LEN_QueTxSts);	/*base len */
+	RegWr16(REG_TxSCL, sizeof(pP->s.pQueTxSts[0]) * LEN_QueTxSts);	/*current len */
+
+	/*Tx Descriptor Queue */
+	memset(pP->s.pQueTxDesc, 0, sizeof(pP->s.pQueTxDesc[0]) * LEN_QueTxDesc);	/*clear descriptor */
+	pP->d.idxQueTxDescHead = pP->d.idxQueTxDescTail = 0;	/*init index */
+	RegWr32(REG_TxDBA, pP->s.phyQueTxDesc);	/*base addr */
+	RegWr32(REG_TxDCA, pP->s.phyQueTxDesc);	/*current addr */
+	RegWr16(REG_TxDBL, sizeof(pP->s.pQueTxDesc[0]) * LEN_QueTxDesc);	/*base len */
+	RegWr16(REG_TxDCL, sizeof(pP->s.pQueTxDesc[0]) * LEN_QueTxDesc);	/*current len */
+
+	/*Rx Status Queue */
+	memset(pP->s.pQueRxSts, 0, sizeof(pP->s.pQueRxSts[0]) * LEN_QueRxSts);	/*clear status */
+	pP->d.idxQueRxSts = 0;	/*init index */
+	RegWr32(REG_RxSBA, pP->s.phyQueRxSts);	/*base addr */
+	RegWr32(REG_RxSCA, pP->s.phyQueRxSts);	/*current addr */
+	RegWr16(REG_RxSBL, sizeof(pP->s.pQueRxSts[0]) * LEN_QueRxSts);	/*base len */
+	RegWr16(REG_RxSCL, sizeof(pP->s.pQueRxSts[0]) * LEN_QueRxSts);	/*current len */
+
+	/*Rx Descriptor Queue */
+	memset(pP->s.pQueRxDesc, 0, sizeof(pP->s.pQueRxDesc[0]) * LEN_QueRxDesc);	/*clear descriptor */
+	phyA = pP->s.phyRxBuf;
+	for (i = 0; i < LEN_QueRxDesc; i++) {
+		pP->s.pQueRxDesc[i].f.bi = i;	/*Rx Buffer Index */
+		pP->s.pQueRxDesc[i].f.ba = phyA;	/*physical address of Rx Buf */
+		pP->s.pQueRxDesc[i].f.bl = LEN_RxBuf;	/*Rx Buffer Length */
+		phyA += (LEN_RxBuf + 3) & ~0x03;
+	}			/*for */
+	pP->d.idxQueRxDesc = 0;	/*init index */
+	RegWr32(REG_RxDBA, pP->s.phyQueRxDesc);	/*base addr */
+	RegWr32(REG_RxDCA, pP->s.phyQueRxDesc);	/*current addr */
+	RegWr16(REG_RxDBL, sizeof(pP->s.pQueRxDesc[0]) * LEN_QueRxDesc);	/*base len */
+	RegWr16(REG_RxDCL, sizeof(pP->s.pQueRxDesc[0]) * LEN_QueRxDesc);	/*current len */
+
+	/*init Rx Buffer Descriptors */
+	pBuf = pP->s.pRxBuf;
+	for (i = 0; i < LEN_QueRxDesc; i++) {
+		pP->s.pRxBufDesc[i].vaddr = pBuf;	/*system address of buffer */
+		pP->s.pRxBufDesc[i].pFreeRtn = NULL;	/*no freeing after use */
+		pBuf += (LEN_RxBuf + 3) & ~0x03;
+	}			/*for */
+
+	/*init Tx Buffer Descriptors */
+	memset(pP->s.pTxBufDesc, 0x0,
+	       sizeof(*pP->s.pTxBufDesc) * LEN_QueTxDesc);
+	pP->s.pTxBuf = &gTxDataBuff[0][0];
+	for (i = 0; i < LEN_QueTxDesc; i++) {
+		pP->s.pTxBufDesc[i].vaddr = &gTxDataBuff[i][0];	/*system address of buffer */
+		pP->s.pTxBufDesc[i].pFreeRtn = NULL;	/*no freeing after use */
+	}			/*for */
+
+	/*turn on device bus mastering */
+	RegWr32(REG_BMCtl, BMCtl_TxEn | BMCtl_RxEn | RegRd32(REG_BMCtl));
+	err =
+	    waitOnReg32(pD, REG_BMSts, BMSts_TxAct | BMSts_TxAct,
+			BMSts_TxAct | BMSts_TxAct, 1);
+	if (err)
+		_PRTK_HWFAIL(("devQue_start(): BM does not start\n"));
+
+	/*if */
+	/*Enqueue whole entries; this must be done after BM activation */
+	RegWr32(REG_RxSEQ, LEN_QueRxSts);	/*Rx Status Queue */
+	RegWr32(REG_RxDEQ, LEN_QueRxDesc);	/*Rx Descriptor queue */
+
+	return 0;
+}				/*devQue_start() */
+
+/*****************************************************************************
+* devQue_init()
+  init device descriptor queues at system level
+  device access is not recommended at this point
+* 
+*****************************************************************************/
+static int devQue_init(struct net_device *pD)
+{
+	struct ep93xxEth_info *pP = netdev_priv(pD);
+	void *pBuf;
+	int size;
+
+	_PRTK_ENTRY(("devQue_init(pD:0x%x)\n", (unsigned int)pD));
+
+	/*verify device Tx/Rx Descriptor/Status Queue data size */
+	if (8 != sizeof(union receiveDescriptor)) {
+		_PRTK_SWERR(("devQue_init(): size of receiveDescriptor is not 8 bytes!!!\n"));
+		return -1;
+	} else if (8 != sizeof(union receiveStatus)) {
+		_PRTK_SWERR(("devQue_init(): size of receiveStatus is not 8 bytes!!!\n"));
+		return -1;
+	} else if (8 != sizeof(union transmitDescriptor)) {
+		_PRTK_SWERR(("devQue_init(): size of transmitDescriptor is not 8 bytes!!!\n"));
+		return -1;
+	} else if (4 != sizeof(union transmitStatus)) {
+		_PRTK_SWERR(("devQue_init(): size of transmitStatus is not 4 bytes!!!\n"));
+		return -1;
+	}
+
+	/*else */
+	/*
+	   allocate kernel memory for whole queues
+	   best if non-cached memory block due to DMA access by the device
+	   if CPU doesn't have bus snooping
+	 */
+	size = sizeof(union receiveDescriptor) * (LEN_QueRxDesc + 1) +
+	    sizeof(union receiveStatus) * (LEN_QueRxSts + 1) +
+	    sizeof(union transmitDescriptor) * (LEN_QueTxDesc + 1) +
+	    sizeof(union transmitStatus) * (LEN_QueTxSts + 1) +
+	    sizeof(unsigned long) * 4;
+
+	pBuf = MALLOC_DMA(size, &pP->s.phyQueueBase);	/*request memory allocation */
+	if (!pBuf) {
+		_PRTK_SYSFAIL(("devQue_initAll(): fail to allocate memory for queues\n"));
+		return -1;
+	}
+
+	/*if */
+	/*
+	   assign memory to each queue
+	 */
+	pP->s.pQueRxDesc = (void *)Align32(pBuf);
+	pBuf =
+	    (char *)pBuf + sizeof(union receiveDescriptor) * (LEN_QueRxDesc +
+							      1);
+	pP->s.pQueRxSts = (void *)Align32(pBuf);
+	pBuf = (char *)pBuf + sizeof(union receiveStatus) * (LEN_QueRxSts + 1);
+	pP->s.pQueTxDesc = (void *)Align32(pBuf);
+	pBuf =
+	    (char *)pBuf + sizeof(union transmitDescriptor) * (LEN_QueTxDesc +
+							       1);
+	pP->s.pQueTxSts = (void *)Align32(pBuf);
+	pBuf = (char *)pBuf + sizeof(union transmitStatus) * (LEN_QueTxSts + 1);
+
+	/*
+	   store physical address of each queue
+	 */
+	pP->s.phyQueRxDesc = Align32(pP->s.phyQueueBase);
+	pP->s.phyQueRxSts =
+	    pP->s.phyQueRxDesc + ((u32) pP->s.pQueRxSts -
+				  (u32) pP->s.pQueRxDesc);
+	pP->s.phyQueTxDesc =
+	    pP->s.phyQueRxDesc + ((u32) pP->s.pQueTxDesc -
+				  (u32) pP->s.pQueRxDesc);
+	pP->s.phyQueTxSts =
+	    pP->s.phyQueRxDesc + ((u32) pP->s.pQueTxSts -
+				  (u32) pP->s.pQueRxDesc);
+

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区亚洲一区| 国产综合久久久久久久久久久久| 免费看日韩a级影片| 97成人超碰视| 欧美亚男人的天堂| 日韩午夜在线观看| 国产高清一区日本| 国产精品18久久久久久久网站| 欧美日本高清视频在线观看| 日韩黄色免费电影| 久久在线观看免费| 91网站视频在线观看| 亚洲女与黑人做爰| 国产欧美精品国产国产专区| 亚洲一二三区视频在线观看| 一本到不卡免费一区二区| 一区二区三区在线看| 欧洲色大大久久| 日韩电影免费在线观看网站| 看电视剧不卡顿的网站| 久久99精品久久久| 精品福利二区三区| 日本色综合中文字幕| 国产成人在线观看| 亚洲人成网站在线| 国产精品情趣视频| 天天综合网 天天综合色| 欧美视频中文字幕| 亚洲精品在线三区| 国产精品免费视频观看| 视频一区国产视频| 日本一区二区三区高清不卡| 日韩三级av在线播放| 欧美亚洲一区二区在线观看| 一区二区三区中文免费| 国产成人在线免费| 亚洲乱码日产精品bd| 成人毛片老司机大片| 国产精品第四页| 4438x亚洲最大成人网| 成人av免费网站| 精品99一区二区三区| 国产午夜亚洲精品理论片色戒| 国产欧美一区二区精品性色超碰| 久久精品视频在线看| 国产九九视频一区二区三区| 麻豆精品一区二区三区| 日韩女优视频免费观看| 国产麻豆精品95视频| 亚洲色图19p| 一本色道久久综合亚洲91| 97精品久久久午夜一区二区三区 | 亚洲精品成a人| 精品国产乱子伦一区| 亚洲成a人片综合在线| 菠萝蜜视频在线观看一区| 2023国产精品视频| 成人av免费在线观看| 狠狠色狠狠色综合系列| 欧美挠脚心视频网站| 中文字幕在线播放不卡一区| 亚洲在线视频免费观看| 看电视剧不卡顿的网站| 欧美人牲a欧美精品| 久久这里只有精品首页| 日日夜夜精品视频免费| 2023国产精品| 欧美视频在线播放| 久久se精品一区二区| 国产性色一区二区| 欧美日韩国产综合一区二区 | 亚洲午夜视频在线观看| 欧美日韩五月天| 琪琪一区二区三区| 日韩欧美一级特黄在线播放| 精品一区二区三区免费播放| 亚洲欧美偷拍另类a∨色屁股| 91九色最新地址| 国产精品网站在线播放| 欧美男同性恋视频网站| 欧美一区二区视频在线观看| 精品一区二区三区免费观看| 91精品国产乱码久久蜜臀| 亚洲精品一线二线三线| 成熟亚洲日本毛茸茸凸凹| 亚洲电影欧美电影有声小说| 国产精品亚洲第一区在线暖暖韩国| 欧美午夜精品一区| 精品成人佐山爱一区二区| 97se亚洲国产综合在线| 婷婷综合另类小说色区| 亚洲女子a中天字幕| 欧美国产乱子伦| 亚洲综合激情网| 中文字幕一区二区三区色视频| 激情亚洲综合在线| 亚洲欧美一区二区三区久本道91| 欧美电影在线免费观看| 菠萝蜜视频在线观看一区| 激情文学综合丁香| 日本网站在线观看一区二区三区 | 国产一区二三区好的| 精品乱人伦一区二区三区| 国产精品视频免费| 色综合久久99| 欧美做爰猛烈大尺度电影无法无天| 91视频一区二区| 欧美日韩视频不卡| 精品粉嫩aⅴ一区二区三区四区| 欧美日韩免费不卡视频一区二区三区| 欧美在线你懂得| www久久精品| 婷婷久久综合九色综合绿巨人| 国产日韩三级在线| 国产精品色哟哟| 国产精品国模大尺度视频| 国产一区二区三区久久悠悠色av| 天天综合网天天综合色| 99精品在线免费| 欧美精品成人一区二区三区四区| 亚洲欧美一区二区不卡| 国产一区二区三区四区在线观看| 99久精品国产| 欧美日韩电影在线| 亚洲天堂a在线| 在线亚洲一区观看| 日韩精品色哟哟| 在线播放欧美女士性生活| 亚洲第一成人在线| 欧美日韩国产成人在线免费| 日韩欧美高清dvd碟片| 日本成人在线网站| 欧美精品一区二| 久久99精品网久久| 日韩免费电影一区| 免费在线视频一区| 麻豆精品在线视频| 精品黑人一区二区三区久久| 成人a免费在线看| 欧美v日韩v国产v| 夜夜嗨av一区二区三区| 国产精品 欧美精品| 中文字幕乱码一区二区免费| 另类的小说在线视频另类成人小视频在线| 51精品久久久久久久蜜臀| 懂色av一区二区三区免费观看| 欧美精品一区二区久久婷婷| 国产精品123区| 国产精品一区二区无线| 99久久久免费精品国产一区二区| 日韩高清不卡一区二区| 欧美精品亚洲一区二区在线播放| 久草在线在线精品观看| 亚洲精品写真福利| 91精品久久久久久蜜臀| 色综合欧美在线视频区| 亚洲午夜在线电影| 国产精品私人自拍| 精品国产免费久久| 91网站在线观看视频| 免费日本视频一区| 成人av资源在线| 精品一区精品二区高清| 亚洲va韩国va欧美va精品| 51午夜精品国产| 欧美人伦禁忌dvd放荡欲情| 欧美日韩视频在线第一区 | 亚洲亚洲精品在线观看| 不卡的电影网站| 国产盗摄视频一区二区三区| 亚洲激情综合网| 亚洲乱码日产精品bd| 91精品国产综合久久精品性色| 欧美综合天天夜夜久久| 色域天天综合网| a美女胸又www黄视频久久| 全部av―极品视觉盛宴亚洲| 亚洲v日本v欧美v久久精品| 亚洲国产日韩a在线播放性色| 亚洲午夜免费福利视频| 亚洲制服丝袜在线| 久久久久久久综合色一本| 精品国产乱码久久久久久1区2区| 26uuu欧美日本| 中文字幕日本乱码精品影院| 亚洲一区二区欧美激情| 亚洲欧美一区二区在线观看| 亚洲精品大片www| 美国三级日本三级久久99| 国产精品正在播放| 成人美女视频在线观看18| 在线看日本不卡| 久久亚洲免费视频| 国产日韩欧美不卡在线| 一区二区三区美女| 成人激情电影免费在线观看| 国产裸体歌舞团一区二区| 91激情五月电影| 国产精品国产三级国产专播品爱网| 亚洲福利电影网|