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

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

?? ixethaccmii.c

?? u-boot1.3.0的原碼,從配了網絡驅動和FLASH的驅動,并該用ESC竟如
?? C
字號:
/** * @file IxEthAccMii.c * * @author Intel Corporation * @date  * * @brief  MII control functions * * Design Notes: * * IXP400 SW Release version 2.0 *  * -- Copyright Notice -- *  * @par * Copyright 2001-2005, Intel Corporation. * All rights reserved. *  * @par * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the Intel Corporation nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. *  * @par * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. *  * @par * -- End of Copyright Notice -- */#include "IxOsal.h"#include "IxEthAcc.h"#include "IxEthAcc_p.h"#include "IxEthAccMac_p.h"#include "IxEthAccMii_p.h"PRIVATE UINT32 miiBaseAddressVirt;PRIVATE IxOsalMutex miiAccessLock;PUBLIC UINT32 ixEthAccMiiRetryCount    = IX_ETH_ACC_MII_TIMEOUT_10TH_SECS;PUBLIC UINT32 ixEthAccMiiAccessTimeout = IX_ETH_ACC_MII_10TH_SEC_IN_MILLIS;/* ----------------------------------- * private function prototypes */PRIVATE voidixEthAccMdioCmdWrite(UINT32 mdioCommand);PRIVATE voidixEthAccMdioCmdRead(UINT32 *data);PRIVATE voidixEthAccMdioStatusRead(UINT32 *data);PRIVATE voidixEthAccMdioCmdWrite(UINT32 mdioCommand){    REG_WRITE(miiBaseAddressVirt,	      IX_ETH_ACC_MAC_MDIO_CMD_1,	      mdioCommand & 0xff);    REG_WRITE(miiBaseAddressVirt,	      IX_ETH_ACC_MAC_MDIO_CMD_2,	      (mdioCommand >> 8) & 0xff);    REG_WRITE(miiBaseAddressVirt,	      IX_ETH_ACC_MAC_MDIO_CMD_3,	      (mdioCommand >> 16) & 0xff);    REG_WRITE(miiBaseAddressVirt,	      IX_ETH_ACC_MAC_MDIO_CMD_4,	      (mdioCommand >> 24) & 0xff);}PRIVATE voidixEthAccMdioCmdRead(UINT32 *data){    UINT32 regval;    REG_READ(miiBaseAddressVirt,	     IX_ETH_ACC_MAC_MDIO_CMD_1,	     regval);    *data = regval & 0xff;    REG_READ(miiBaseAddressVirt,	     IX_ETH_ACC_MAC_MDIO_CMD_2,	     regval);    *data |= (regval & 0xff) << 8;    REG_READ(miiBaseAddressVirt,	     IX_ETH_ACC_MAC_MDIO_CMD_3,	     regval);    *data |= (regval & 0xff) << 16;    REG_READ(miiBaseAddressVirt,	     IX_ETH_ACC_MAC_MDIO_CMD_4,	     regval);    *data |= (regval & 0xff) << 24;}PRIVATE voidixEthAccMdioStatusRead(UINT32 *data){    UINT32 regval;    REG_READ(miiBaseAddressVirt,	     IX_ETH_ACC_MAC_MDIO_STS_1,	     regval);    *data = regval & 0xff;    REG_READ(miiBaseAddressVirt,	     IX_ETH_ACC_MAC_MDIO_STS_2,	     regval);    *data |= (regval & 0xff) << 8;    REG_READ(miiBaseAddressVirt,	     IX_ETH_ACC_MAC_MDIO_STS_3,	     regval);    *data |= (regval & 0xff) << 16;    REG_READ(miiBaseAddressVirt,	     IX_ETH_ACC_MAC_MDIO_STS_4,	     regval);        *data |= (regval & 0xff) << 24;    }/******************************************************************** * ixEthAccMiiInit */IxEthAccStatusixEthAccMiiInit(){    if(ixOsalMutexInit(&miiAccessLock)!= IX_SUCCESS)    {	return IX_ETH_ACC_FAIL;    }    miiBaseAddressVirt = (UINT32) IX_OSAL_MEM_MAP(IX_ETH_ACC_MAC_0_BASE, IX_OSAL_IXP400_ETHA_MAP_SIZE);        if (miiBaseAddressVirt == 0)    {      ixOsalLog(IX_OSAL_LOG_LVL_FATAL, 		IX_OSAL_LOG_DEV_STDOUT, 		"EthAcc: Could not map MII I/O mapped memory\n", 		0, 0, 0, 0, 0, 0);            return IX_ETH_ACC_FAIL;    }        return IX_ETH_ACC_SUCCESS;}voidixEthAccMiiUnload(void){    IX_OSAL_MEM_UNMAP(miiBaseAddressVirt);      miiBaseAddressVirt = 0;}PUBLIC IxEthAccStatusixEthAccMiiAccessTimeoutSet(UINT32 timeout, UINT32 retryCount){    if (retryCount < 1) return IX_ETH_ACC_FAIL;    ixEthAccMiiRetryCount    = retryCount;    ixEthAccMiiAccessTimeout = timeout;    return IX_ETH_ACC_SUCCESS;}/********************************************************************* * ixEthAccMiiReadRtn - read a 16 bit value from a PHY */IxEthAccStatus      ixEthAccMiiReadRtn (UINT8 phyAddr, 		    UINT8 phyReg, 		    UINT16 *value){    UINT32 mdioCommand;    UINT32 regval;    UINT32 miiTimeout;    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())    {	return (IX_ETH_ACC_FAIL);    }    if ((phyAddr >= IXP425_ETH_ACC_MII_MAX_ADDR) 	|| (phyReg >= IXP425_ETH_ACC_MII_MAX_REG))    {	return (IX_ETH_ACC_FAIL);    }    if (value == NULL)    {	return (IX_ETH_ACC_FAIL);    }    ixOsalMutexLock(&miiAccessLock, IX_OSAL_WAIT_FOREVER);    mdioCommand = phyReg <<  IX_ETH_ACC_MII_REG_SHL 	| phyAddr << IX_ETH_ACC_MII_ADDR_SHL;    mdioCommand |= IX_ETH_ACC_MII_GO;    ixEthAccMdioCmdWrite(mdioCommand);        miiTimeout = ixEthAccMiiRetryCount;    while(miiTimeout)    {		ixEthAccMdioCmdRead(&regval);     	if((regval & IX_ETH_ACC_MII_GO) == 0x0)	{	    	    break;	}	/* Sleep for a while */	ixOsalSleep(ixEthAccMiiAccessTimeout);	miiTimeout--;    }            if(miiTimeout == 0)    {		ixOsalMutexUnlock(&miiAccessLock);	*value = 0xffff;	return IX_ETH_ACC_FAIL;    }            ixEthAccMdioStatusRead(&regval);    if(regval & IX_ETH_ACC_MII_READ_FAIL)    {	ixOsalMutexUnlock(&miiAccessLock);	*value = 0xffff;	return IX_ETH_ACC_FAIL;    }    *value = regval & 0xffff;    ixOsalMutexUnlock(&miiAccessLock);    return IX_ETH_ACC_SUCCESS;    }/********************************************************************* * ixEthAccMiiWriteRtn - write a 16 bit value to a PHY */IxEthAccStatusixEthAccMiiWriteRtn (UINT8 phyAddr, 		     UINT8 phyReg, 		     UINT16 value){    UINT32 mdioCommand;    UINT32 regval;    UINT16 readVal;    UINT32 miiTimeout;    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())    {	return (IX_ETH_ACC_FAIL);    }    if ((phyAddr >= IXP425_ETH_ACC_MII_MAX_ADDR) 	|| (phyReg >= IXP425_ETH_ACC_MII_MAX_REG))    {	return (IX_ETH_ACC_FAIL);    }       /* ensure that a PHY is present at this address */    if(ixEthAccMiiReadRtn(phyAddr,                          IX_ETH_ACC_MII_CTRL_REG,                          &readVal) != IX_ETH_ACC_SUCCESS)    {        return (IX_ETH_ACC_FAIL);    }    ixOsalMutexLock(&miiAccessLock, IX_OSAL_WAIT_FOREVER);    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;    ixEthAccMdioCmdWrite(mdioCommand);        miiTimeout = ixEthAccMiiRetryCount;    while(miiTimeout)    {		ixEthAccMdioCmdRead(&regval);	/*The "GO" bit is reset to 0 when the write completes*/	if((regval & IX_ETH_ACC_MII_GO) == 0x0)	{	    	    	    break;	}	/* Sleep for a while */	ixOsalSleep(ixEthAccMiiAccessTimeout);        miiTimeout--;    }        ixOsalMutexUnlock(&miiAccessLock);    if(miiTimeout == 0)    {	return IX_ETH_ACC_FAIL;    }    return IX_ETH_ACC_SUCCESS;}/***************************************************************** * *  Phy query functions * */IxEthAccStatusixEthAccMiiStatsShow (UINT32 phyAddr){    UINT16 regval;    printf("Regisers on PHY at address 0x%x\n", phyAddr);    ixEthAccMiiReadRtn(phyAddr, IX_ETH_ACC_MII_CTRL_REG, &regval);    printf("    Control Register                  :      0x%4.4x\n", regval);    ixEthAccMiiReadRtn(phyAddr,  IX_ETH_ACC_MII_STAT_REG, &regval);    printf("    Status Register                   :      0x%4.4x\n", regval);    ixEthAccMiiReadRtn(phyAddr,  IX_ETH_ACC_MII_PHY_ID1_REG, &regval);    printf("    PHY ID1 Register                  :      0x%4.4x\n", regval);    ixEthAccMiiReadRtn(phyAddr,  IX_ETH_ACC_MII_PHY_ID2_REG, &regval);    printf("    PHY ID2 Register                  :      0x%4.4x\n", regval);    ixEthAccMiiReadRtn(phyAddr,  IX_ETH_ACC_MII_AN_ADS_REG, &regval);    printf("    Auto Neg ADS Register             :      0x%4.4x\n", regval);    ixEthAccMiiReadRtn(phyAddr,  IX_ETH_ACC_MII_AN_PRTN_REG, &regval);    printf("    Auto Neg Partner Ability Register :      0x%4.4x\n", regval);    ixEthAccMiiReadRtn(phyAddr,  IX_ETH_ACC_MII_AN_EXP_REG, &regval);    printf("    Auto Neg Expansion Register       :      0x%4.4x\n", regval);    ixEthAccMiiReadRtn(phyAddr,  IX_ETH_ACC_MII_AN_NEXT_REG, &regval);    printf("    Auto Neg Next Register            :      0x%4.4x\n", regval);    return IX_ETH_ACC_SUCCESS;}/***************************************************************** * *  Interface query functions * */IxEthAccStatusixEthAccMdioShow (void){    UINT32 regval;    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())    {	return (IX_ETH_ACC_FAIL);    }    ixOsalMutexLock(&miiAccessLock, IX_OSAL_WAIT_FOREVER);    ixEthAccMdioCmdRead(&regval);    ixOsalMutexUnlock(&miiAccessLock);        printf("MDIO command register\n");    printf("    Go bit      : 0x%x\n", (regval & BIT(31)) >> 31);    printf("    MDIO Write  : 0x%x\n", (regval & BIT(26)) >> 26);    printf("    PHY address : 0x%x\n", (regval >> 21) & 0x1f);    printf("    Reg address : 0x%x\n", (regval >> 16) & 0x1f);	    ixOsalMutexLock(&miiAccessLock, IX_OSAL_WAIT_FOREVER);    ixEthAccMdioStatusRead(&regval);    ixOsalMutexUnlock(&miiAccessLock);    printf("MDIO status register\n");    printf("    Read OK     : 0x%x\n", (regval & BIT(31)) >> 31);    printf("    Read Data   : 0x%x\n", (regval >> 16) & 0xff);    return IX_ETH_ACC_SUCCESS;   }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
69av一区二区三区| 在线一区二区三区四区五区| 麻豆精品在线看| 亚洲黄色片在线观看| 亚洲国产精品成人综合色在线婷婷| 欧美变态凌虐bdsm| 精品对白一区国产伦| 2020日本不卡一区二区视频| 久久香蕉国产线看观看99| 久久久久久久久久久久久夜| 精品国产91乱码一区二区三区| 2021中文字幕一区亚洲| 国产亚洲成aⅴ人片在线观看| 国产片一区二区| 亚洲人成精品久久久久久| 亚洲夂夂婷婷色拍ww47| 日本中文一区二区三区| 国产综合一区二区| 日本久久电影网| 91精品国产免费久久综合| 2014亚洲片线观看视频免费| 国产精品免费看片| 亚洲午夜免费视频| 精品午夜一区二区三区在线观看| 国产一区二区三区在线观看免费视频 | 亚洲综合在线视频| 丝袜诱惑亚洲看片| 捆绑调教一区二区三区| 成人免费高清在线观看| 色就色 综合激情| 日韩欧美成人午夜| 国产精品国产自产拍在线| 亚洲亚洲人成综合网络| 国产成人在线视频免费播放| 色综合咪咪久久| 日韩一区二区三区观看| 亚洲色图欧美偷拍| 蜜桃一区二区三区在线观看| 9i在线看片成人免费| 91精品综合久久久久久| 国产农村妇女精品| 日韩av一二三| 色综合天天综合| 国产xxx精品视频大全| 欧美丝袜丝nylons| 国产欧美日韩不卡| 人禽交欧美网站| 一本久道久久综合中文字幕| 精品sm在线观看| 亚洲成人福利片| 成人app软件下载大全免费| 91精品国产综合久久国产大片| 国产精品视频在线看| 青青国产91久久久久久| 一本一道久久a久久精品| 久久久久成人黄色影片| 美女网站视频久久| 在线播放国产精品二区一二区四区 | 色婷婷综合在线| 国产精品美女久久福利网站| 精品一区二区免费视频| 67194成人在线观看| 伊人一区二区三区| 91在线精品一区二区| 欧美国产精品专区| 国产精品1区2区3区在线观看| 91麻豆精品91久久久久同性| 亚洲国产成人av| 欧美日韩国产首页| 一区二区久久久| 色天使色偷偷av一区二区| 国产精品国产三级国产aⅴ入口| 黄色日韩三级电影| 2024国产精品| 国产精品综合二区| 国产日产欧美精品一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 色婷婷综合久色| 国产喂奶挤奶一区二区三区| 丝袜亚洲另类欧美综合| 香蕉久久夜色精品国产使用方法| 欧美在线视频你懂得| 国产麻豆欧美日韩一区| 亚洲444eee在线观看| 亚洲国产精品成人久久综合一区| 欧美在线视频你懂得| 成人永久aaa| 免费观看在线色综合| 一区二区久久久久久| 国产精品国产三级国产有无不卡 | 国产日韩欧美高清在线| 欧美一区二区观看视频| 在线观看视频一区二区欧美日韩| 国产乱码精品一区二区三区五月婷| 同产精品九九九| 亚洲综合一二三区| 中文字幕色av一区二区三区| 久久日韩精品一区二区五区| 欧美乱妇15p| 91久久精品日日躁夜夜躁欧美| 粉嫩蜜臀av国产精品网站| 久久精品久久精品| 日韩av不卡一区二区| 亚洲一二三四在线观看| 亚洲婷婷国产精品电影人久久| 精品国产乱码久久久久久牛牛 | 日本欧美一区二区三区乱码 | 欧美色网一区二区| 欧美系列在线观看| 色诱视频网站一区| 色八戒一区二区三区| 成人黄色网址在线观看| 成人免费的视频| 成人免费高清在线| 99re亚洲国产精品| 91玉足脚交白嫩脚丫在线播放| 99re66热这里只有精品3直播| www.欧美.com| 成人国产精品免费网站| 91捆绑美女网站| 日本黄色一区二区| 欧美日韩另类一区| 日韩女优电影在线观看| 久久精品亚洲精品国产欧美| 欧美mv日韩mv| 中文字幕av在线一区二区三区| 国产精品免费视频一区| 亚洲靠逼com| 青青草国产精品亚洲专区无| 久久爱www久久做| 国产美女娇喘av呻吟久久| 成人av网站在线观看| 日本乱人伦一区| 日韩欧美一级二级三级久久久| 亚洲精品在线电影| 亚洲色图欧洲色图| 日本aⅴ免费视频一区二区三区 | 热久久国产精品| 国产精品一区二区三区网站| 99久久精品国产麻豆演员表| 欧美影片第一页| 精品国产伦一区二区三区免费| 国产人妖乱国产精品人妖| 亚洲天堂免费看| 奇米在线7777在线精品| 东方aⅴ免费观看久久av| 在线观看91视频| 久久久www成人免费毛片麻豆| 亚洲欧美电影院| 麻豆91在线观看| 成人开心网精品视频| 欧美撒尿777hd撒尿| 久久久久高清精品| 亚洲成人黄色影院| 国产999精品久久久久久| 欧美美女黄视频| 国产精品美女久久久久久久久久久 | 日本美女一区二区| 99久久国产综合精品色伊| 8x8x8国产精品| 亚洲欧洲日产国码二区| 免费的国产精品| 色婷婷精品大在线视频| 国产亚洲综合色| 亚洲成人av在线电影| 99v久久综合狠狠综合久久| 日韩欧美国产麻豆| 午夜国产精品一区| 99re这里只有精品首页| 久久久精品黄色| 久久66热偷产精品| 欧美日韩在线一区二区| 国产精品久久久久久妇女6080| 精彩视频一区二区三区 | av成人动漫在线观看| 欧美xxxxx裸体时装秀| 一区二区三区高清| 99久久婷婷国产| 亚洲国产精品精华液ab| 韩国成人福利片在线播放| 91麻豆精品国产自产在线 | 亚洲少妇中出一区| 国产不卡视频一区二区三区| 日韩欧美的一区| 欧美bbbbb| 在线综合视频播放| 日韩国产成人精品| 国产午夜亚洲精品不卡 | 天堂蜜桃一区二区三区| 色综合天天狠狠| 亚洲欧洲在线观看av| 99久久综合99久久综合网站| 久久久激情视频| 国产成人精品免费网站| 久久精品亚洲国产奇米99| 国产精品小仙女| 亚洲国产高清在线观看视频| 粉嫩一区二区三区性色av| 中文字幕不卡在线| 色综合久久中文综合久久97|