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

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

?? mii.c

?? u-boot1.3.0的原碼,從配了網絡驅動和FLASH的驅動,并該用ESC竟如
?? C
字號:
/* * Copyright (C) 2004-2007 Freescale Semiconductor, Inc. * TsiChung Liew (Tsi-Chung.Liew@freescale.com) * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */#include <common.h>#include <asm/fec.h>#include <asm/immap.h>#include <config.h>#include <net.h>DECLARE_GLOBAL_DATA_PTR;#if defined(CONFIG_CMD_NET) && defined(CONFIG_NET_MULTI)#undef MII_DEBUG#undef ET_DEBUGint fecpin_setclear(struct eth_device *dev, int setclear){	volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO;	struct fec_info_s *info = (struct fec_info_s *)dev->priv;	if (setclear) {		gpio->par_feci2c |=		    (GPIO_PAR_FECI2C_MDC0_MDC0 | GPIO_PAR_FECI2C_MDIO0_MDIO0);		if (info->iobase == CFG_FEC0_IOBASE)			gpio->par_fec |= GPIO_PAR_FEC_FEC0_RMII_GPIO;		else			gpio->par_fec |= GPIO_PAR_FEC_FEC1_RMII_ATA;	} else {		gpio->par_feci2c &=		    ~(GPIO_PAR_FECI2C_MDC0_MDC0 | GPIO_PAR_FECI2C_MDIO0_MDIO0);		if (info->iobase == CFG_FEC0_IOBASE)			gpio->par_fec &= GPIO_PAR_FEC_FEC0_MASK;		else			gpio->par_fec &= GPIO_PAR_FEC_FEC1_MASK;	}	return 0;}#if defined(CFG_DISCOVER_PHY) || defined(CONFIG_CMD_MII)#include <miiphy.h>/* Make MII read/write commands for the FEC. */#define mk_mii_read(ADDR, REG)	(0x60020000 | ((ADDR << 23) | (REG & 0x1f) << 18))#define mk_mii_write(ADDR, REG, VAL)	(0x50020000 | ((ADDR << 23) | (REG & 0x1f) << 18) | (VAL & 0xffff))/* PHY identification */#define PHY_ID_LXT970		0x78100000	/* LXT970 */#define PHY_ID_LXT971		0x001378e0	/* LXT971 and 972 */#define PHY_ID_82555		0x02a80150	/* Intel 82555 */#define PHY_ID_QS6612		0x01814400	/* QS6612 */#define PHY_ID_AMD79C784	0x00225610	/* AMD 79C784 */#define PHY_ID_LSI80225		0x0016f870	/* LSI 80225 */#define PHY_ID_LSI80225B	0x0016f880	/* LSI 80225/B */#define PHY_ID_DP83848VV	0x20005C90	/* National 83848 */#define PHY_ID_DP83849		0x20005CA2	/* National 82849 */#define STR_ID_LXT970		"LXT970"#define STR_ID_LXT971		"LXT971"#define STR_ID_82555		"Intel82555"#define STR_ID_QS6612		"QS6612"#define STR_ID_AMD79C784	"AMD79C784"#define STR_ID_LSI80225		"LSI80225"#define STR_ID_LSI80225B	"LSI80225/B"#define STR_ID_DP83848VV	"N83848"#define STR_ID_DP83849		"N83849"/**************************************************************************** * mii_init -- Initialize the MII for MII command without ethernet * This function is a subset of eth_init **************************************************************************** */void mii_reset(struct fec_info_s *info){	volatile fec_t *fecp = (fec_t *) (info->miibase);	struct eth_device *dev;	int i, miispd;	u16 rst = 0;	dev = eth_get_dev();	miispd = (gd->bus_clk / 1000000) / 5;	fecp->mscr = miispd << 1;	miiphy_write(dev->name, info->phy_addr, PHY_BMCR, PHY_BMCR_RESET);	for (i = 0; i < FEC_RESET_DELAY; ++i) {		udelay(500);		miiphy_read(dev->name, info->phy_addr, PHY_BMCR, &rst);		if ((rst & PHY_BMCR_RESET) == 0)			break;	}	if (i == FEC_RESET_DELAY)		printf("Mii reset timeout %d\n", i);}/* send command to phy using mii, wait for result */uint mii_send(uint mii_cmd){	struct fec_info_s *info;	struct eth_device *dev;	volatile fec_t *ep;	uint mii_reply;	int j = 0;	/* retrieve from register structure */	dev = eth_get_dev();	info = dev->priv;	ep = (fec_t *) info->miibase;	ep->mmfr = mii_cmd;	/* command to phy */	/* wait for mii complete */	while (!(ep->eir & FEC_EIR_MII) && (j < MCFFEC_TOUT_LOOP)) {		udelay(1);		j++;	}	if (j >= MCFFEC_TOUT_LOOP) {		printf("MII not complete\n");		return -1;	}	mii_reply = ep->mmfr;	/* result from phy */	ep->eir = FEC_EIR_MII;	/* clear MII complete */#ifdef ET_DEBUG	printf("%s[%d] %s: sent=0x%8.8x, reply=0x%8.8x\n",	       __FILE__, __LINE__, __FUNCTION__, mii_cmd, mii_reply);#endif	return (mii_reply & 0xffff);	/* data read from phy */}#endif				/* CFG_DISCOVER_PHY || (CONFIG_MII) */#if defined(CFG_DISCOVER_PHY)int mii_discover_phy(struct eth_device *dev){#define MAX_PHY_PASSES 11	struct fec_info_s *info = dev->priv;	int phyaddr, pass;	uint phyno, phytype;	if (info->phyname_init)		return info->phy_addr;	phyaddr = -1;		/* didn't find a PHY yet */	for (pass = 1; pass <= MAX_PHY_PASSES && phyaddr < 0; ++pass) {		if (pass > 1) {			/* PHY may need more time to recover from reset.			 * The LXT970 needs 50ms typical, no maximum is			 * specified, so wait 10ms before try again.			 * With 11 passes this gives it 100ms to wake up.			 */			udelay(10000);	/* wait 10ms */		}		for (phyno = 0; phyno < 32 && phyaddr < 0; ++phyno) {			phytype = mii_send(mk_mii_read(phyno, PHY_PHYIDR1));#ifdef ET_DEBUG			printf("PHY type 0x%x pass %d type\n", phytype, pass);#endif			if (phytype != 0xffff) {				phyaddr = phyno;				phytype <<= 16;				phytype |=				    mii_send(mk_mii_read(phyno, PHY_PHYIDR2));				switch (phytype & 0xffffffff) {				case PHY_ID_DP83848VV:					strcpy(info->phy_name,					       STR_ID_DP83848VV);					info->phyname_init = 1;					break;				default:					strcpy(info->phy_name, "unknown");					info->phyname_init = 1;					break;				}#ifdef ET_DEBUG				printf("PHY @ 0x%x pass %d type ", phyno, pass);				switch (phytype & 0xffffffff) {				case PHY_ID_DP83848VV:					printf(STR_ID_DP83848VV);					break;				default:					printf("0x%08x\n", phytype);					break;				}#endif			}		}	}	if (phyaddr < 0)		printf("No PHY device found.\n");	return phyaddr;}#endif				/* CFG_DISCOVER_PHY */void mii_init(void) __attribute__((weak,alias("__mii_init")));void __mii_init(void){	volatile fec_t *fecp;	struct fec_info_s *info;	struct eth_device *dev;	int miispd = 0, i = 0;	u16 autoneg = 0;	/* retrieve from register structure */	dev = eth_get_dev();	info = dev->priv;	fecp = (fec_t *) info->miibase;	/* We use strictly polling mode only */	fecp->eimr = 0;	/* Clear any pending interrupt */	fecp->eir = 0xffffffff;	/* Set MII speed */	miispd = (gd->bus_clk / 1000000) / 5;	fecp->mscr = miispd << 1;	info->phy_addr = mii_discover_phy(dev);#define AUTONEGLINK		(PHY_BMSR_AUTN_COMP | PHY_BMSR_LS)	while (i < MCFFEC_TOUT_LOOP) {		autoneg = 0;		miiphy_read(dev->name, info->phy_addr, PHY_BMSR, &autoneg);		i++;		if ((autoneg & AUTONEGLINK) == AUTONEGLINK)			break;		udelay(500);	}	if (i >= MCFFEC_TOUT_LOOP) {		printf("Auto Negotiation not complete\n");	}	/* adapt to the half/full speed settings */	info->dup_spd = miiphy_duplex(dev->name, info->phy_addr) << 16;	info->dup_spd |= miiphy_speed(dev->name, info->phy_addr);}/***************************************************************************** * Read and write a MII PHY register, routines used by MII Utilities * * FIXME: These routines are expected to return 0 on success, but mii_send *	  does _not_ return an error code. Maybe 0xFFFF means error, i.e. *	  no PHY connected... *	  For now always return 0. * FIXME: These routines only work after calling eth_init() at least once! *	  Otherwise they hang in mii_send() !!! Sorry! *****************************************************************************/int mcffec_miiphy_read(char *devname, unsigned char addr, unsigned char reg,		       unsigned short *value){	short rdreg;		/* register working value */#ifdef MII_DEBUG	printf("miiphy_read(0x%x) @ 0x%x = ", reg, addr);#endif	rdreg = mii_send(mk_mii_read(addr, reg));	*value = rdreg;#ifdef MII_DEBUG	printf("0x%04x\n", *value);#endif	return 0;}int mcffec_miiphy_write(char *devname, unsigned char addr, unsigned char reg,			unsigned short value){	short rdreg;		/* register working value */#ifdef MII_DEBUG	printf("miiphy_write(0x%x) @ 0x%x = ", reg, addr);#endif	rdreg = mii_send(mk_mii_write(addr, reg, value));#ifdef MII_DEBUG	printf("0x%04x\n", value);#endif	return 0;}#endif				/* CONFIG_CMD_NET, FEC_ENET & NET_MULTI */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情综合五月色丁香小说| 欧美成人精精品一区二区频| 欧美午夜精品一区| 日韩一区国产二区欧美三区| 久久精品国产亚洲高清剧情介绍| 亚洲综合色婷婷| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲aⅴ怡春院| 99精品视频免费在线观看| 国产乱理伦片在线观看夜一区| 国产麻豆一精品一av一免费| 国产精品久久久久精k8| 欧美日韩中字一区| 三级久久三级久久| 欧美视频自拍偷拍| 性做久久久久久久久| 久久九九99视频| 中文字幕不卡在线| 亚洲欧美日韩人成在线播放| 国产精品白丝在线| 亚洲综合在线视频| 国产在线精品一区二区夜色| 国产精品 日产精品 欧美精品| 久久精品国产成人一区二区三区| 一区二区视频免费在线观看| 国产日韩欧美在线一区| 国产剧情一区二区| 亚洲天堂久久久久久久| 欧美日韩国产另类一区| 国产又黄又大久久| 日韩理论在线观看| 欧美群妇大交群中文字幕| 国产精品亚洲一区二区三区妖精| 免费成人av在线播放| 欧美午夜一区二区三区免费大片| 日本强好片久久久久久aaa| 国产午夜精品理论片a级大结局 | 亚洲美女偷拍久久| 在线播放/欧美激情| 高清不卡一区二区| 秋霞国产午夜精品免费视频| 中文字幕在线免费不卡| 日韩欧美国产一区二区三区| 99视频在线精品| 毛片av一区二区| 一区二区三国产精华液| 国产日韩综合av| 欧美高清dvd| thepron国产精品| 久久99精品久久只有精品| 亚洲免费av在线| 久久一区二区三区四区| 在线成人午夜影院| 91视视频在线直接观看在线看网页在线看| 青青草精品视频| 亚洲另类一区二区| 国产丝袜在线精品| 欧美精品日韩一区| 91色婷婷久久久久合中文| 国产一区二区三区免费| 日韩精品亚洲一区二区三区免费| 亚洲欧美精品午睡沙发| 欧美国产日韩亚洲一区| 久久精品亚洲精品国产欧美| 欧美一区二区三区的| 欧美中文字幕一二三区视频| 不卡的电影网站| 国产精品伊人色| 精品一区二区三区免费观看| 性欧美大战久久久久久久久| 亚洲精品午夜久久久| 国产精品传媒视频| 国产欧美一区在线| 精品美女被调教视频大全网站| 欧美日韩国产乱码电影| 色老综合老女人久久久| k8久久久一区二区三区| www.日韩在线| 91视频免费播放| 色综合天天综合| 日本道精品一区二区三区| 91丨porny丨蝌蚪视频| av亚洲精华国产精华| 成人污污视频在线观看| 国产成人免费在线| 国产麻豆视频一区二区| 国产精品一区二区黑丝| 国产精品一区2区| 粉嫩一区二区三区在线看| 国产suv精品一区二区三区| 国产一区二区免费在线| 国产一区二区不卡| 高清不卡在线观看| 99在线精品观看| 欧美色电影在线| 欧美电影在线免费观看| 麻豆传媒一区二区三区| 日本不卡一区二区| 国产专区综合网| 成人国产一区二区三区精品| 成人av片在线观看| 欧美午夜视频网站| 日韩视频在线你懂得| 久久久亚洲高清| 亚洲人成电影网站色mp4| 一区二区高清免费观看影视大全| 亚洲综合成人在线视频| 青草av.久久免费一区| 久88久久88久久久| 波多野结衣精品在线| 色综合久久中文综合久久97| 欧美精品xxxxbbbb| 久久久综合网站| 亚洲精品乱码久久久久久久久 | 日韩欧美在线网站| 中文字幕高清不卡| 亚洲动漫第一页| 国产精品白丝jk白祙喷水网站| 成人免费视频视频| 欧美绝品在线观看成人午夜影视| 26uuu亚洲综合色| 亚洲综合清纯丝袜自拍| 老司机精品视频在线| 99精品一区二区| 日韩亚洲国产中文字幕欧美| 国产精品初高中害羞小美女文 | 久久69国产一区二区蜜臀| 91在线一区二区| 日韩久久久久久| 亚洲欧洲www| 麻豆国产精品一区二区三区| 91香蕉视频mp4| 久久夜色精品国产欧美乱极品| 一区二区三区**美女毛片| 国产精品夜夜嗨| 欧美一区在线视频| 亚洲人精品一区| 国产精品1024| 精品欧美一区二区在线观看| 一区二区在线观看免费| 精品夜夜嗨av一区二区三区| 欧美三级中文字幕| 一区精品在线播放| 国产精品综合在线视频| 在线播放91灌醉迷j高跟美女 | 成人免费毛片嘿嘿连载视频| 91麻豆精品国产91久久久久久久久| 亚洲欧洲成人自拍| 国产成人在线免费| 日韩欧美高清一区| 婷婷激情综合网| 在线观看三级视频欧美| 国产精品久久久久久久久免费桃花 | 欧美三级中文字幕在线观看| 国产精品你懂的| 国产成人午夜精品影院观看视频 | 亚洲成人av一区二区| 高清免费成人av| 国产性色一区二区| 久草在线在线精品观看| 日韩视频一区在线观看| 天天综合天天综合色| 欧美日韩在线免费视频| 一区二区三区四区在线| 色美美综合视频| 亚洲麻豆国产自偷在线| 色综合色综合色综合| 自拍偷拍欧美精品| 91在线丨porny丨国产| 亚洲欧洲无码一区二区三区| 白白色 亚洲乱淫| 自拍偷拍欧美精品| 在线日韩国产精品| 亚洲午夜在线电影| 欧美日韩精品久久久| 亚洲二区视频在线| 欧美一区二区三区思思人| 免费在线观看成人| 26uuu欧美| 国产一区在线观看视频| 国产免费成人在线视频| 成人av资源在线| 一区二区三区波多野结衣在线观看| 欧美羞羞免费网站| 日韩中文欧美在线| 日韩一级二级三级| 国产老肥熟一区二区三区| 国产欧美一二三区| 91福利区一区二区三区| 亚洲成人黄色影院| 精品免费国产一区二区三区四区| 国产精品一品视频| 亚洲精品老司机| 欧美一区日本一区韩国一区| 黄色资源网久久资源365| 国产精品免费久久久久| 欧美中文字幕一区二区三区亚洲| 日韩精品成人一区二区三区| 2020国产精品自拍| 色综合天天狠狠|