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

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

?? skxmac2.c

?? 移植好的楊創utu2440F ARM9 的uboot1.1.4代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
	if (pPrt->PhyType != SK_PHY_XMAC) {		do {			XM_IN16(IoC, Port, XM_MMU_CMD, &Mmu);			/* wait until 'Ready' is set */		} while ((Mmu & XM_MMU_PHY_RDY) == 0);		/* get the PHY register's value */		XM_IN16(IoC, Port, XM_PHY_DATA, pVal);	}}	/* SkXmPhyRead *//****************************************************************************** * *	SkXmPhyWrite() - Write to XMAC PHY register * * Description:	writes a 16-bit word to XMAC PHY or ext. PHY * * Returns: *	nothing */void SkXmPhyWrite(SK_AC	*pAC,		/* Adapter Context */SK_IOC	IoC,		/* I/O Context */int		Port,		/* Port Index (MAC_1 + n) */int		PhyReg,		/* Register Address (Offset) */SK_U16	Val)		/* Value */{	SK_U16		Mmu;	SK_GEPORT	*pPrt;	pPrt = &pAC->GIni.GP[Port];	if (pPrt->PhyType != SK_PHY_XMAC) {		do {			XM_IN16(IoC, Port, XM_MMU_CMD, &Mmu);			/* wait until 'Busy' is cleared */		} while ((Mmu & XM_MMU_PHY_BUSY) != 0);	}	/* write the PHY register's address */	XM_OUT16(IoC, Port, XM_PHY_ADDR, PhyReg | pPrt->PhyAddr);	/* write the PHY register's value */	XM_OUT16(IoC, Port, XM_PHY_DATA, Val);	if (pPrt->PhyType != SK_PHY_XMAC) {		do {			XM_IN16(IoC, Port, XM_MMU_CMD, &Mmu);			/* wait until 'Busy' is cleared */		} while ((Mmu & XM_MMU_PHY_BUSY) != 0);	}}	/* SkXmPhyWrite *//****************************************************************************** * *	SkGmPhyRead() - Read from GPHY register * * Description:	reads a 16-bit word from GPHY through MDIO * * Returns: *	nothing */void SkGmPhyRead(SK_AC	*pAC,		/* Adapter Context */SK_IOC	IoC,		/* I/O Context */int		Port,		/* Port Index (MAC_1 + n) */int		PhyReg,		/* Register Address (Offset) */SK_U16	*pVal)		/* Pointer to Value */{	SK_U16	Ctrl;	SK_GEPORT	*pPrt;#ifdef VCPU	u_long SimCyle;	u_long SimLowTime;	VCPUgetTime(&SimCyle, &SimLowTime);	VCPUprintf(0, "SkGmPhyRead(%u), SimCyle=%u, SimLowTime=%u\n",		PhyReg, SimCyle, SimLowTime);#endif /* VCPU */	pPrt = &pAC->GIni.GP[Port];	/* set PHY-Register offset and 'Read' OpCode (= 1) */	*pVal = (SK_U16)(GM_SMI_CT_PHY_AD(pPrt->PhyAddr) |		GM_SMI_CT_REG_AD(PhyReg) | GM_SMI_CT_OP_RD);	GM_OUT16(IoC, Port, GM_SMI_CTRL, *pVal);	GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl);	/* additional check for MDC/MDIO activity */	if ((Ctrl & GM_SMI_CT_BUSY) == 0) {		*pVal = 0;		return;	}	*pVal |= GM_SMI_CT_BUSY;	do {#ifdef VCPU		VCPUwaitTime(1000);#endif /* VCPU */		GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl);	/* wait until 'ReadValid' is set */	} while (Ctrl == *pVal);	/* get the PHY register's value */	GM_IN16(IoC, Port, GM_SMI_DATA, pVal);#ifdef VCPU	VCPUgetTime(&SimCyle, &SimLowTime);	VCPUprintf(0, "VCPUgetTime(), SimCyle=%u, SimLowTime=%u\n",		SimCyle, SimLowTime);#endif /* VCPU */}	/* SkGmPhyRead *//****************************************************************************** * *	SkGmPhyWrite() - Write to GPHY register * * Description:	writes a 16-bit word to GPHY through MDIO * * Returns: *	nothing */void SkGmPhyWrite(SK_AC	*pAC,		/* Adapter Context */SK_IOC	IoC,		/* I/O Context */int		Port,		/* Port Index (MAC_1 + n) */int		PhyReg,		/* Register Address (Offset) */SK_U16	Val)		/* Value */{	SK_U16	Ctrl;	SK_GEPORT	*pPrt;#ifdef VCPU	SK_U32	DWord;	u_long	SimCyle;	u_long	SimLowTime;	VCPUgetTime(&SimCyle, &SimLowTime);	VCPUprintf(0, "SkGmPhyWrite(Reg=%u, Val=0x%04x), SimCyle=%u, SimLowTime=%u\n",		PhyReg, Val, SimCyle, SimLowTime);#endif /* VCPU */	pPrt = &pAC->GIni.GP[Port];	/* write the PHY register's value */	GM_OUT16(IoC, Port, GM_SMI_DATA, Val);	/* set PHY-Register offset and 'Write' OpCode (= 0) */	Val = GM_SMI_CT_PHY_AD(pPrt->PhyAddr) | GM_SMI_CT_REG_AD(PhyReg);	GM_OUT16(IoC, Port, GM_SMI_CTRL, Val);	GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl);	/* additional check for MDC/MDIO activity */	if ((Ctrl & GM_SMI_CT_BUSY) == 0) {		return;	}	Val |= GM_SMI_CT_BUSY;	do {#ifdef VCPU		/* read Timer value */		SK_IN32(IoC, B2_TI_VAL, &DWord);		VCPUwaitTime(1000);#endif /* VCPU */		GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl);	/* wait until 'Busy' is cleared */	} while (Ctrl == Val);#ifdef VCPU	VCPUgetTime(&SimCyle, &SimLowTime);	VCPUprintf(0, "VCPUgetTime(), SimCyle=%u, SimLowTime=%u\n",		SimCyle, SimLowTime);#endif /* VCPU */}	/* SkGmPhyWrite *//****************************************************************************** * *	SkGePhyRead() - Read from PHY register * * Description:	calls a read PHY routine dep. on board type * * Returns: *	nothing */void SkGePhyRead(SK_AC	*pAC,		/* Adapter Context */SK_IOC	IoC,		/* I/O Context */int		Port,		/* Port Index (MAC_1 + n) */int		PhyReg,		/* Register Address (Offset) */SK_U16	*pVal)		/* Pointer to Value */{	void (*r_func)(SK_AC *pAC, SK_IOC IoC, int Port, int Reg, SK_U16 *pVal);	if (pAC->GIni.GIGenesis) {		r_func = SkXmPhyRead;	}	else {		r_func = SkGmPhyRead;	}	r_func(pAC, IoC, Port, PhyReg, pVal);}	/* SkGePhyRead *//****************************************************************************** * *	SkGePhyWrite() - Write to PHY register * * Description:	calls a write PHY routine dep. on board type * * Returns: *	nothing */void SkGePhyWrite(SK_AC	*pAC,		/* Adapter Context */SK_IOC	IoC,		/* I/O Context */int		Port,		/* Port Index (MAC_1 + n) */int		PhyReg,		/* Register Address (Offset) */SK_U16	Val)		/* Value */{	void (*w_func)(SK_AC *pAC, SK_IOC IoC, int Port, int Reg, SK_U16 Val);	if (pAC->GIni.GIGenesis) {		w_func = SkXmPhyWrite;	}	else {		w_func = SkGmPhyWrite;	}	w_func(pAC, IoC, Port, PhyReg, Val);}	/* SkGePhyWrite *//****************************************************************************** * *	SkMacPromiscMode() - Enable / Disable Promiscuous Mode * * Description: *   enables / disables promiscuous mode by setting Mode Register (XMAC) or *   Receive Control Register (GMAC) dep. on board type * * Returns: *	nothing */void SkMacPromiscMode(SK_AC	*pAC,	/* adapter context */SK_IOC	IoC,	/* IO context */int		Port,	/* Port Index (MAC_1 + n) */SK_BOOL	Enable)	/* Enable / Disable */{	SK_U16	RcReg;	SK_U32	MdReg;	if (pAC->GIni.GIGenesis) {		XM_IN32(IoC, Port, XM_MODE, &MdReg);		/* enable or disable promiscuous mode */		if (Enable) {			MdReg |= XM_MD_ENA_PROM;		}		else {			MdReg &= ~XM_MD_ENA_PROM;		}		/* setup Mode Register */		XM_OUT32(IoC, Port, XM_MODE, MdReg);	}	else {		GM_IN16(IoC, Port, GM_RX_CTRL, &RcReg);		/* enable or disable unicast and multicast filtering */		if (Enable) {			RcReg &= ~(GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA);		}		else {			RcReg |= (GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA);		}		/* setup Receive Control Register */		GM_OUT16(IoC, Port, GM_RX_CTRL, RcReg);	}}	/* SkMacPromiscMode*//****************************************************************************** * *	SkMacHashing() - Enable / Disable Hashing * * Description: *   enables / disables hashing by setting Mode Register (XMAC) or *   Receive Control Register (GMAC) dep. on board type * * Returns: *	nothing */void SkMacHashing(SK_AC	*pAC,	/* adapter context */SK_IOC	IoC,	/* IO context */int		Port,	/* Port Index (MAC_1 + n) */SK_BOOL	Enable)	/* Enable / Disable */{	SK_U16	RcReg;	SK_U32	MdReg;	if (pAC->GIni.GIGenesis) {		XM_IN32(IoC, Port, XM_MODE, &MdReg);		/* enable or disable hashing */		if (Enable) {			MdReg |= XM_MD_ENA_HASH;		}		else {			MdReg &= ~XM_MD_ENA_HASH;		}		/* setup Mode Register */		XM_OUT32(IoC, Port, XM_MODE, MdReg);	}	else {		GM_IN16(IoC, Port, GM_RX_CTRL, &RcReg);		/* enable or disable multicast filtering */		if (Enable) {			RcReg |= GM_RXCR_MCF_ENA;		}		else {			RcReg &= ~GM_RXCR_MCF_ENA;		}		/* setup Receive Control Register */		GM_OUT16(IoC, Port, GM_RX_CTRL, RcReg);	}}	/* SkMacHashing*/#ifdef SK_DIAG/****************************************************************************** * *	SkXmSetRxCmd() - Modify the value of the XMAC's Rx Command Register * * Description: *	The features *	 - FCS stripping,					SK_STRIP_FCS_ON/OFF *	 - pad byte stripping,				SK_STRIP_PAD_ON/OFF *	 - don't set XMR_FS_ERR in status	SK_LENERR_OK_ON/OFF *	   for inrange length error frames *	 - don't set XMR_FS_ERR in status	SK_BIG_PK_OK_ON/OFF *	   for frames > 1514 bytes *   - enable Rx of own packets         SK_SELF_RX_ON/OFF * *	for incoming packets may be enabled/disabled by this function. *	Additional modes may be added later. *	Multiple modes can be enabled/disabled at the same time. *	The new configuration is written to the Rx Command register immediately. * * Returns: *	nothing */static void SkXmSetRxCmd(SK_AC	*pAC,		/* adapter context */SK_IOC	IoC,		/* IO context */int		Port,		/* Port Index (MAC_1 + n) */int		Mode)		/* Mode is SK_STRIP_FCS_ON/OFF, SK_STRIP_PAD_ON/OFF,					   SK_LENERR_OK_ON/OFF, or SK_BIG_PK_OK_ON/OFF */{	SK_U16	OldRxCmd;	SK_U16	RxCmd;	XM_IN16(IoC, Port, XM_RX_CMD, &OldRxCmd);	RxCmd = OldRxCmd;	switch (Mode & (SK_STRIP_FCS_ON | SK_STRIP_FCS_OFF)) {	case SK_STRIP_FCS_ON:		RxCmd |= XM_RX_STRIP_FCS;		break;	case SK_STRIP_FCS_OFF:		RxCmd &= ~XM_RX_STRIP_FCS;		break;	}	switch (Mode & (SK_STRIP_PAD_ON | SK_STRIP_PAD_OFF)) {	case SK_STRIP_PAD_ON:		RxCmd |= XM_RX_STRIP_PAD;		break;	case SK_STRIP_PAD_OFF:		RxCmd &= ~XM_RX_STRIP_PAD;		break;	}	switch (Mode & (SK_LENERR_OK_ON | SK_LENERR_OK_OFF)) {	case SK_LENERR_OK_ON:		RxCmd |= XM_RX_LENERR_OK;		break;	case SK_LENERR_OK_OFF:		RxCmd &= ~XM_RX_LENERR_OK;		break;	}	switch (Mode & (SK_BIG_PK_OK_ON | SK_BIG_PK_OK_OFF)) {	case SK_BIG_PK_OK_ON:		RxCmd |= XM_RX_BIG_PK_OK;		break;	case SK_BIG_PK_OK_OFF:		RxCmd &= ~XM_RX_BIG_PK_OK;		break;	}	switch (Mode & (SK_SELF_RX_ON | SK_SELF_RX_OFF)) {	case SK_SELF_RX_ON:		RxCmd |= XM_RX_SELF_RX;		break;	case SK_SELF_RX_OFF:		RxCmd &= ~XM_RX_SELF_RX;		break;	}	/* Write the new mode to the Rx command register if required */	if (OldRxCmd != RxCmd) {		XM_OUT16(IoC, Port, XM_RX_CMD, RxCmd);	}}	/* SkXmSetRxCmd *//****************************************************************************** * *	SkGmSetRxCmd() - Modify the value of the GMAC's Rx Control Register * * Description: *	The features *	 - FCS (CRC) stripping,				SK_STRIP_FCS_ON/OFF *	 - don't set GMR_FS_LONG_ERR		SK_BIG_PK_OK_ON/OFF *	   for frames > 1514 bytes *   - enable Rx of own packets         SK_SELF_RX_ON/OFF * *	for incoming packets may be enabled/disabled by this function. *	Additional modes may be added later. *	Multiple modes can be enabled/disabled at the same time. *	The new configuration is written to the Rx Command register immediately. * * Returns: *	nothing */static void SkGmSetRxCmd(SK_AC	*pAC,		/* adapter context */SK_IOC	IoC,		/* IO context */int		Port,		/* Port Index (MAC_1 + n) */int		Mode)		/* Mode is SK_STRIP_FCS_ON/OFF, SK_STRIP_PAD_ON/OFF,					   SK_LENERR_OK_ON/OFF, or SK_BIG_PK_OK_ON/OFF */{	SK_U16	OldRxCmd;	SK_U16	RxCmd;	if ((Mode & (SK_STRIP_FCS_ON | SK_STRIP_FCS_OFF)) != 0) {		GM_IN16(IoC, Port, GM_RX_CTRL, &OldRxCmd);		RxCmd = OldRxCmd;		if ((Mode & SK_STRIP_FCS_ON) != 0) {			RxCmd |= GM_RXCR_CRC_DIS;		}		else {			RxCmd &= ~GM_RXCR_CRC_DIS;		}		/* Write the new mode to the Rx control register if required */		if (OldRxCmd != RxCmd) {			GM_OUT16(IoC, Port, GM_RX_CTRL, RxCmd);		}	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美a| 欧美v亚洲v综合ⅴ国产v| 国产精品成人免费精品自在线观看 | 成人免费视频免费观看| 国产欧美精品一区aⅴ影院| 成人一区二区三区在线观看| 欧美极品aⅴ影院| 成人av在线影院| 一区二区不卡在线播放| 欧美日韩成人综合| 国产制服丝袜一区| 国产精品亲子伦对白| 一本大道久久a久久精品综合| 洋洋av久久久久久久一区| 51精品久久久久久久蜜臀| 国产一区二区三区免费播放 | 国产精品乱子久久久久| 在线国产亚洲欧美| 欧美96一区二区免费视频| 国产日韩高清在线| 欧美羞羞免费网站| 久久精品国产网站| 国产精品福利av | 日韩亚洲欧美成人一区| 国产999精品久久久久久绿帽| 亚洲精品成人悠悠色影视| 欧美sm美女调教| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 波多野结衣中文字幕一区 | 亚洲欧美日韩一区二区三区在线观看| 欧美日韩极品在线观看一区| 国产精品996| 亚洲国产视频一区| 久久综合成人精品亚洲另类欧美 | 亚洲国产成人av网| 国产欧美一区二区在线| 欧美日韩综合在线免费观看| 国产伦理精品不卡| 亚洲chinese男男1069| 久久久精品综合| 欧美日韩午夜在线| av亚洲精华国产精华精| 激情欧美一区二区三区在线观看| 亚洲男同1069视频| 国产色一区二区| 欧美一区二区三区视频免费播放| 成人av在线一区二区| 精品一二三四区| 久久精品久久99精品久久| 亚洲综合成人在线| 久久九九全国免费| 日韩三级电影网址| 欧美乱熟臀69xxxxxx| 色婷婷av一区二区| 成人av免费观看| 国产电影一区二区三区| 麻豆精品国产传媒mv男同| 亚洲综合成人在线视频| 亚洲欧美偷拍卡通变态| 国产亚洲精久久久久久| 精品对白一区国产伦| 日韩一级欧美一级| 制服丝袜日韩国产| 欧美高清视频在线高清观看mv色露露十八| 91免费视频网址| 成人激情开心网| 成人一级黄色片| 国产精品一区二区x88av| 久久疯狂做爰流白浆xx| 久久精品理论片| 久久国产福利国产秒拍| 久久se精品一区二区| 秋霞电影一区二区| 久久电影网电视剧免费观看| 日韩av成人高清| 日本成人中文字幕| 精品一区二区在线看| 久久99精品久久久久久动态图| 免费看黄色91| 韩国三级电影一区二区| 国产一区福利在线| 精品一区二区三区在线视频| 国产麻豆精品在线观看| 成人网在线播放| 99re在线视频这里只有精品| 色欧美乱欧美15图片| 欧美人牲a欧美精品| 欧美一级日韩不卡播放免费| 欧美大片国产精品| 久久久久久久久岛国免费| 日本一区二区三区国色天香 | 亚洲欧美日韩国产成人精品影院| 中文字幕在线播放不卡一区| 亚洲美女免费视频| 日韩美女视频19| 亚洲福利视频导航| 亚洲色图一区二区三区| 中文字幕第一区二区| 欧美xxxx老人做受| 6080亚洲精品一区二区| 日韩亚洲欧美高清| 亚洲一区二区高清| 久久综合久久久久88| 在线观看亚洲专区| 一区二区在线观看免费| 国产电影一区在线| 91免费版在线| 欧美日韩精品专区| 欧美videos大乳护士334| 捆绑调教美女网站视频一区| 欧美日韩高清不卡| 国产精品三级av在线播放| 精品国产自在久精品国产| 欧美日韩激情一区| 日韩亚洲电影在线| 中文成人av在线| 欧美激情一区二区三区蜜桃视频| 一区二区不卡在线播放 | va亚洲va日韩不卡在线观看| 国产成人免费视频网站 | 亚洲天天做日日做天天谢日日欢| 奇米精品一区二区三区四区| 99国产精品久久久久久久久久| 欧美亚洲动漫制服丝袜| 欧美色视频在线观看| 伊人色综合久久天天人手人婷| 国产一区二区三区不卡在线观看| 欧美午夜免费电影| 久久精品视频一区二区三区| 亚洲一区二区av在线| 久久99热狠狠色一区二区| 在线观看免费视频综合| 亚洲精品国产成人久久av盗摄 | 久久丁香综合五月国产三级网站| 麻豆精品一区二区综合av| 天天综合天天做天天综合| 日本不卡视频一二三区| 成人黄色小视频在线观看| 91精品国产91热久久久做人人| 国产日韩欧美高清在线| 亚洲国产精品影院| 色又黄又爽网站www久久| 日本伊人精品一区二区三区观看方式| 欧美日本一道本| 蜜臀av一区二区在线观看| 欧美手机在线视频| 一区二区三区中文免费| 国产凹凸在线观看一区二区| 精品日韩av一区二区| 国产老妇另类xxxxx| 午夜国产精品一区| 欧美日韩午夜在线| 亚洲亚洲人成综合网络| 六月婷婷色综合| 欧美日韩久久一区二区| 亚洲人成在线播放网站岛国| 国产91色综合久久免费分享| 精品国产乱码久久久久久夜甘婷婷| 亚洲不卡在线观看| 欧洲一区在线观看| 夜夜嗨av一区二区三区| 91啪亚洲精品| 亚洲视频一区二区在线观看| 国产91在线|亚洲| 国产日韩欧美精品在线| 国产黄色精品视频| 国产三级精品三级| 丰满放荡岳乱妇91ww| 国产精品视频看| 91麻豆国产福利在线观看| 亚洲同性gay激情无套| 91麻豆免费视频| 亚洲精选视频免费看| 色婷婷亚洲精品| 亚洲午夜久久久久久久久电影院 | 91蜜桃网址入口| 中文字幕欧美一| 99在线精品观看| 一区二区国产视频| 欧美丰满少妇xxxbbb| 久久国产精品第一页| 欧美大度的电影原声| 国产精品小仙女| 亚洲色图都市小说| 欧美精品xxxxbbbb| 黑人巨大精品欧美一区| 中文字幕欧美国产| 91美女片黄在线| 天天综合色天天综合色h| 欧美成人午夜电影| 成人午夜又粗又硬又大| 亚洲女爱视频在线| 欧美伦理电影网| 国产精品羞羞答答xxdd| 亚洲品质自拍视频| 91精品国产高清一区二区三区蜜臀| 麻豆成人91精品二区三区| 欧美国产激情一区二区三区蜜月| 91香蕉视频mp4| 丝袜美腿亚洲色图|