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

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

?? rtlmiiapi.c

?? INTEL IXP425的VXWORKS BSP
?? C
?? 第 1 頁 / 共 2 頁
字號:
/** * file relMiAPIi.c * * * * brief realtek MII control functions * */#include <stdio.h>#include "IxOsServices.h"#include "IxEthAcc.h"#include "IxEthAcc_p.h"#include "IxTypes.h"#include "IxEthAccMac_p.h"#include "IxEthAccMii_p.h"#include "rtlMiiAPI.h"/* realtek8305 vlan register definitions -  */PRIVATE VLAN_register_t  RTL_PORT_PVID_REGISTER[]={{RTL8305_PHY0,0x21},  {RTL8305_PHY0,0x21},  {RTL8305_PHY0,0x21},  {RTL8305_PHY0,0x21},  {RTL8305_PHY0,0x22}, };PRIVATE VLAN_register_t RTL_VLAN_MEMBER_REGISTER[]= {{RTL8305_PHY1,0x25},  {RTL8305_PHY1,0x26},  {RTL8305_PHY1,0x28},  {RTL8305_PHY1,0x29},  {RTL8305_PHY1,0x31},};PRIVATE VLAN_register_t RTL_VLANA_IDENTIFIER_REGISTER={RTL8305_PHY1,0x24};PRIVATE VLAN_register_t RTL_VLANB_IDENTIFIER_LOWER_REGISTER={RTL8305_PHY1,0x25};PRIVATE VLAN_register_t RTL_VLANB_IDENTIFIER_UPPER_REGISTER={RTL8305_PHY1,0x26};PRIVATE VLAN_register_t RTL_VLANC_IDENTIFIER_REGISTER={RTL8305_PHY1,0x27};PRIVATE VLAN_register_t RTL_VLAND_IDENTIFIER_LOWER_REGISTER={RTL8305_PHY1,0x28};PRIVATE VLAN_register_t RTL_VLAND_IDENTIFIER_UPPER_REGISTER={RTL8305_PHY1,0x29};PRIVATE VLAN_register_t RTL_VLANE_IDENTIFIER_REGISTER={RTL8305_PHY1,0x30};PRIVATE VLAN_register_t RTL_PRIORITY_CTRL_REGISTER={RTL8305_PHY2,0x16};PRIVATE VLAN_register_t  RTL_VLAN_CTRL_REGISTER={RTL8305_PHY2,0x17};PRIVATE VLAN_register_t RTL_PORT_CTRL_REGISTER={RTL8305_PHY3, 0x16};PRIVATE IxMutex rtlmiiAccessLock;PRIVATE voidrealtekMdioCmdWrite(UINT32 port, UINT32 mdioCommand){    UINT32 baseAddress;    if (port == PORTA )	baseAddress = IX_ETH_ACC_MAC_0_BASE;    else if ( port == PORTB )	baseAddress = IX_ETH_ACC_MAC_1_BASE;    else return;		    REG_WRITE(baseAddress,	      IX_ETH_ACC_MAC_MDIO_CMD_1,	      mdioCommand & 0xff);    REG_WRITE(baseAddress,	      IX_ETH_ACC_MAC_MDIO_CMD_2,	      (mdioCommand >> 8) & 0xff);    REG_WRITE(baseAddress,	      IX_ETH_ACC_MAC_MDIO_CMD_3,	      (mdioCommand >> 16) & 0xff);    REG_WRITE(baseAddress,	      IX_ETH_ACC_MAC_MDIO_CMD_4,	      (mdioCommand >> 24) & 0xff);}PRIVATE voidrealtekMdioCmdRead(UINT32 port, UINT32 *data){    UINT32 regval;    UINT32 baseAddress;    if (port == PORTA )	baseAddress = IX_ETH_ACC_MAC_0_BASE;    else if ( port == PORTB )	baseAddress = IX_ETH_ACC_MAC_1_BASE;    else return;    REG_READ(baseAddress,	     IX_ETH_ACC_MAC_MDIO_CMD_1,	     regval);    *data = regval & 0xff;    REG_READ(baseAddress,	     IX_ETH_ACC_MAC_MDIO_CMD_2,	     regval);    *data |= (regval & 0xff) << 8;    REG_READ(baseAddress,	     IX_ETH_ACC_MAC_MDIO_CMD_3,	     regval);    *data |= (regval & 0xff) << 16;    REG_READ(baseAddress,	     IX_ETH_ACC_MAC_MDIO_CMD_4,	     regval);        *data |= (regval & 0xff) << 24;    }PRIVATE voidrealtekMdioStatusRead(UINT32 port,UINT32 *data){    UINT32 regval;    UINT32 baseAddress;    if (port == PORTA )	baseAddress = IX_ETH_ACC_MAC_0_BASE;    else if ( port == PORTB )	baseAddress = IX_ETH_ACC_MAC_1_BASE;    else return;    REG_READ(baseAddress,	     IX_ETH_ACC_MAC_MDIO_STS_1,	     regval);    *data = regval & 0xff;    REG_READ(baseAddress,	     IX_ETH_ACC_MAC_MDIO_STS_2,	     regval);    *data |= (regval & 0xff) << 8;    REG_READ(baseAddress,	     IX_ETH_ACC_MAC_MDIO_STS_3,	     regval);    *data |= (regval & 0xff) << 16;    REG_READ(baseAddress,	     IX_ETH_ACC_MAC_MDIO_STS_4,	     regval);        *data |= (regval & 0xff) << 24;    }/******************************************************************** * realtekMiiInit */IxEthAccStatusrealtekMiiInit(){    if(ixOsServMutexInit(&rtlmiiAccessLock)!= IX_SUCCESS)    {	return IX_ETH_ACC_FAIL;    }    if(ixOsServMutexUnlock(&rtlmiiAccessLock)!= IX_SUCCESS)    {	return IX_ETH_ACC_FAIL;    }    return IX_ETH_ACC_SUCCESS;}/********************************************************************* * realtekMiiReadRtn - read a 16 bit value from realtek 8305SB */IxEthAccStatus      realtekMiiReadRtn (UINT32 port,UINT8 phyAddr, 		    UINT8 phyReg, 		    UINT16 *value){    UINT32 mdioCommand;    UINT32 regval;    UINT32 miiTimeout;    ixOsServMutexLock(&rtlmiiAccessLock);    mdioCommand = phyReg <<  IX_ETH_ACC_MII_REG_SHL 	| phyAddr << IX_ETH_ACC_MII_ADDR_SHL;    mdioCommand |= IX_ETH_ACC_MII_GO;    realtekMdioCmdWrite(port,mdioCommand);        miiTimeout = IX_ETH_ACC_MII_TIMEOUT_10TH_SECS;    while(miiTimeout)    {		realtekMdioCmdRead(port,&regval);     	if((regval & IX_ETH_ACC_MII_GO) == 0x0)	{	    	    break;	}	/*Sleep for 10th of a second*/	ixOsServTaskSleep(IX_ETH_ACC_MII_10TH_SEC_IN_MILLIS);	miiTimeout--;    }            if(miiTimeout == 0)    {		ixOsServMutexUnlock(&rtlmiiAccessLock);	return IX_ETH_ACC_FAIL;    }            realtekMdioStatusRead(port,&regval);    if(regval & IX_ETH_ACC_MII_READ_FAIL)    {	ixOsServMutexUnlock(&rtlmiiAccessLock);	return IX_ETH_ACC_FAIL;    }    *value = regval & 0xffff;    ixOsServMutexUnlock(&rtlmiiAccessLock);    return IX_ETH_ACC_SUCCESS;    }/********************************************************************* * realtekMiiWriteRtn - write a 16 bit value to realtek 8305SB */IxEthAccStatusrealtekMiiWriteRtn (UINT32 port,UINT8 phyAddr, 		     UINT8 phyReg, 		     UINT16 value){    UINT32 mdioCommand;    UINT32 regval;    UINT32 miiTimeout;    ixOsServMutexLock(&rtlmiiAccessLock);    mdioCommand = phyReg << IX_ETH_ACC_MII_REG_SHL	| phyAddr << IX_ETH_ACC_MII_ADDR_SHL ;    mdioCommand |= IX_ETH_ACC_MII_GO | IX_ETH_ACC_MII_WRITE | value;    realtekMdioCmdWrite(port,mdioCommand);        miiTimeout = IX_ETH_ACC_MII_TIMEOUT_10TH_SECS;    while(miiTimeout--)    {		realtekMdioCmdRead(port,&regval);	/*The "GO" bit is reset to 0 when the write completes*/	if((regval & IX_ETH_ACC_MII_GO) == 0x0)	{	    	    	    break;	}	/*Sleep for 100 milliseconds*/	ixOsServTaskSleep(IX_ETH_ACC_MII_10TH_SEC_IN_MILLIS);    }        ixOsServMutexUnlock(&rtlmiiAccessLock);    if(miiTimeout == 0)    {	return IX_ETH_ACC_FAIL;    }    return IX_ETH_ACC_SUCCESS;}/************************************************************ * * Configure the rtl8305 at the specified address *  */IxEthAccStatusrealtekMiiPhyConfig(UINT32 port,UINT32 phyAddr,		     BOOL speed100, 		     BOOL fullDuplex, 		     BOOL autonegotiate){    UINT16 regval=0;        if(autonegotiate)    {	regval |= IX_ETH_ACC_MII_CR_AUTO_EN | IX_ETH_ACC_MII_CR_RESTART;    }    else    {	if(speed100) 	{	    regval |= IX_ETH_ACC_MII_CR_100;	}	if(fullDuplex)	{	    regval |= IX_ETH_ACC_MII_CR_FDX;	}    }    return realtekMiiWriteRtn(port,phyAddr, IX_ETH_ACC_MII_CTRL_REG, regval);}/********************************************************* * * Scan for rtl8305 on the MII bus. This function returns * an array of booleans, one for each PHY address. * If a PHY is found at a particular address, the  * corresponding entry in the array is set to TRUE. * */IxEthAccStatusrealtekMiiPhyScan(BOOL *phyPresent[]){    UINT32 i;    UINT16 regval;    /*Search for PHYs on the MII*/    /*Search for extant phys on the MDIO bus*/    for(i=0;i<IXP425_ETH_ACC_MII_MAX_ADDR;i++)    {	if(realtekMiiReadRtn(PORTA,i,IX_ETH_ACC_MII_CTRL_REG,&regval)	   ==IX_ETH_ACC_SUCCESS)	{	    if((regval & 0xffff) != 0xffff)	    {		phyPresent[PORTA][i] = TRUE;	    }	    else	    {		phyPresent[PORTA][i] = FALSE;	    }	}	else	{	    phyPresent[PORTA][i] = FALSE;	}	if(realtekMiiReadRtn(PORTB,i,IX_ETH_ACC_MII_CTRL_REG,&regval)	   ==IX_ETH_ACC_SUCCESS)	{	    if((regval & 0xffff) != 0xffff)	    {		phyPresent[PORTB][i] = TRUE;	    }	    else	    {		phyPresent[PORTB][i] = FALSE;	    }	}	else	{	    phyPresent[PORTB][i] = FALSE;	}    }    return IX_ETH_ACC_SUCCESS;}/****************************************************************** * *  Reset the realtek8305 at the specified address */IxEthAccStatusrealtekMiiPhyReset(UINT32 port,UINT32 phyAddr){        realtekMiiWriteRtn(port,phyAddr, IX_ETH_ACC_MII_CTRL_REG, 			IX_ETH_ACC_MII_CR_RESET);    ixOsServTaskSleep (IX_ETH_ACC_MII_RESET_DELAY_MS);    realtekMiiWriteRtn(port,phyAddr, IX_ETH_ACC_MII_CTRL_REG, 			IX_ETH_ACC_MII_CR_NORM_EN);    return IX_ETH_ACC_SUCCESS;}/************************************************************ * * Configure the rtl8305  port pvid at the specified address *  */IxEthAccStatusrealtekPvidSetup(UINT32 port, UINT8 rtl8305port, UINT8 pvid){    UINT16 regval=0;        UINT8 phyAddr=0;    UINT8 vlanReg =0;    if(port!=PORTB)  return ERR_PORT_ERROR;    if (rtl8305port >= 5 ) return ERR_PORT_ERROR;    phyAddr = RTL_PORT_PVID_REGISTER[rtl8305port].PHY_address;    vlanReg = RTL_PORT_PVID_REGISTER[rtl8305port].VLAN_register;    realtekMiiReadRtn(port, phyAddr,vlanReg, &regval);    realtekMiiReadRtn(port, phyAddr,vlanReg, &regval);    pvid &= RTL_PVID_BIT_WITH;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产另类av| 久久精品国产第一区二区三区| 亚洲伦理在线免费看| 天堂蜜桃91精品| av电影天堂一区二区在线观看| 日韩视频一区二区三区在线播放 | 国产精品一区二区无线| 色哟哟在线观看一区二区三区| 精品日产卡一卡二卡麻豆| 亚洲成人激情综合网| 成人激情电影免费在线观看| 精品免费国产二区三区| 日韩av一区二区三区四区| 91传媒视频在线播放| 国产精品久久久久久久裸模| 久久不见久久见免费视频1| 欧美日韩在线播放三区| 亚洲日本免费电影| 成人av电影在线网| 久久久久久一二三区| 国内不卡的二区三区中文字幕| 欧美日韩国产一二三| 亚洲综合男人的天堂| 色综合色综合色综合色综合色综合| 国产色一区二区| 国产成人aaaa| 国产人伦精品一区二区| 国产麻豆欧美日韩一区| 26uuu亚洲| 国产精品一二三| 久久久777精品电影网影网 | 成人美女视频在线看| 久久视频一区二区| 经典三级视频一区| 精品国产成人系列| 国产一区三区三区| 国产三区在线成人av| 成人99免费视频| 18欧美亚洲精品| 日本高清不卡视频| 午夜精品久久久久久久| 欧美日韩国产免费一区二区| 日韩福利视频导航| 精品国产乱码久久久久久老虎| 韩国三级电影一区二区| 国产精品私人自拍| 日本久久电影网| 日本在线播放一区二区三区| 精品国产精品一区二区夜夜嗨| 国产成人一区二区精品非洲| 国产精品美女www爽爽爽| 91年精品国产| 丝袜诱惑制服诱惑色一区在线观看| 欧美电影免费观看完整版| 成人性生交大片免费| 亚洲色欲色欲www| 91精品国产综合久久蜜臀| 精品一区二区久久| 中文字幕在线一区二区三区| 欧美四级电影网| 久久成人羞羞网站| 国产精品二区一区二区aⅴ污介绍| 一本大道久久a久久精二百| 亚洲综合激情另类小说区| 日韩欧美色电影| 99久久99久久精品免费看蜜桃| 亚洲一区二区视频在线| 久久久另类综合| 在线免费不卡视频| 精品亚洲成av人在线观看| 亚洲免费看黄网站| 日韩精品中文字幕一区二区三区| 成人激情av网| 久久99久久精品| 亚洲男同性恋视频| 久久综合九色欧美综合狠狠| 欧美调教femdomvk| 高清视频一区二区| 日本欧美一区二区三区乱码| 亚洲欧洲日本在线| 久久影音资源网| 欧美美女视频在线观看| 成人黄色在线视频| 久久99精品久久久久久| 樱花影视一区二区| 国产亚洲精品bt天堂精选| 欧美精品xxxxbbbb| 97久久超碰国产精品| 国产成人在线网站| 蜜臀久久久99精品久久久久久| 自拍偷拍亚洲欧美日韩| 久久久久久久综合日本| 日韩一区二区免费电影| 一本到高清视频免费精品| 国产不卡视频在线观看| 激情综合网天天干| 日韩精品一级中文字幕精品视频免费观看 | 久久久精品免费观看| 欧美一区二区三区色| 色综合久久99| 91丨国产丨九色丨pron| 国产成人精品免费看| 蜜桃av一区二区三区电影| 亚洲高清免费视频| 一区二区三区日韩欧美精品| 欧美激情中文不卡| 国产欧美日本一区视频| 欧美精品一区二区精品网| 日韩三级视频中文字幕| 欧美伦理电影网| 欧美日韩国产a| 欧美日韩一区二区在线观看| 色婷婷av一区| 欧美性生活一区| 在线观看91视频| 欧美日韩一区不卡| 欧美丝袜自拍制服另类| 欧美人xxxx| 6080午夜不卡| 日韩一级欧美一级| 精品国精品国产尤物美女| 精品少妇一区二区三区在线播放 | 94-欧美-setu| 91国产免费观看| 在线观看一区日韩| 欧美日韩免费高清一区色橹橹| 欧美婷婷六月丁香综合色| 欧美日韩精品欧美日韩精品| 欧美一区二区精品久久911| 日韩亚洲欧美一区二区三区| 欧美v日韩v国产v| 国产亚洲一区二区在线观看| 国产精品理论片在线观看| 亚洲日本中文字幕区| 亚洲一区二区三区视频在线播放| 午夜激情一区二区三区| 国产一区二区三区免费在线观看| 国产不卡在线播放| 在线视频中文字幕一区二区| 欧美精品丝袜久久久中文字幕| 亚洲精品一线二线三线无人区| 亚洲国产精品成人综合色在线婷婷| 国产精品美日韩| 伊人夜夜躁av伊人久久| 喷水一区二区三区| 国产91精品一区二区麻豆亚洲| 91在线国产福利| 欧美一级久久久久久久大片| 精品动漫一区二区三区在线观看| 国产精品乱码妇女bbbb| 亚洲成人一区二区| 国产精品一区在线| 欧美吻胸吃奶大尺度电影| 精品国产污网站| 一区二区三区蜜桃| 极品美女销魂一区二区三区| 色狠狠一区二区| 久久蜜桃av一区二区天堂| 亚洲精品欧美综合四区| 国内精品视频666| 一本色道a无线码一区v| 欧美v日韩v国产v| 亚洲成人激情综合网| 成人av在线资源| 日韩欧美国产一区二区在线播放| 亚洲丝袜另类动漫二区| 国产美女精品在线| 欧美三日本三级三级在线播放| 中文一区一区三区高中清不卡| 日韩综合小视频| 色菇凉天天综合网| 国产女人水真多18毛片18精品视频| 午夜精品久久久久久久久| 成人app软件下载大全免费| 精品国产髙清在线看国产毛片| 亚洲午夜私人影院| 色综合久久久久网| 亚洲国产精品99久久久久久久久| 久久精品免费观看| 欧美精品丝袜久久久中文字幕| 亚洲欧美自拍偷拍| 国产盗摄一区二区三区| 日韩精品一区二区三区四区| 亚洲成av人综合在线观看| 色婷婷av一区二区三区大白胸 | 欧美xingq一区二区| 亚洲不卡av一区二区三区| 色综合激情久久| 1000精品久久久久久久久| 国产成人午夜精品影院观看视频| 日韩欧美的一区| 日本不卡一二三| 欧美一区二区三区在线看| 午夜精品福利在线| 欧美日韩成人综合| 亚洲伊人色欲综合网| 在线国产亚洲欧美| 亚洲第一二三四区| 欧美精品一卡两卡| 免费观看日韩av|