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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? mv_eth.c

?? u-boot1.3.0的原碼,從配了網(wǎng)絡(luò)驅(qū)動(dòng)和FLASH的驅(qū)動(dòng),并該用ESC竟如
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
			s = "eth1addr";			break;		case 2:			s = "eth2addr";			break;		default:	/* this should never happen */			printf ("%s: Invalid device number %d\n",				__FUNCTION__, devnum);			return;		}		temp = getenv_r (s, buf, sizeof (buf));		s = (temp > 0) ? buf : NULL;#ifdef DEBUG		printf ("Setting MAC %d to %s\n", devnum, s);#endif		for (x = 0; x < 6; ++x) {			dev->enetaddr[x] = s ? simple_strtoul (s, &e, 16) : 0;			if (s)				s = (*e) ? e + 1 : e;		}		DP (printf ("Allocating descriptor and buffer rings\n"));		ethernet_private->p_rx_desc_area_base[0] =			(ETH_RX_DESC *) memalign (16,						  RX_DESC_ALIGNED_SIZE *						  MV64460_RX_QUEUE_SIZE + 1);		ethernet_private->p_tx_desc_area_base[0] =			(ETH_TX_DESC *) memalign (16,						  TX_DESC_ALIGNED_SIZE *						  MV64460_TX_QUEUE_SIZE + 1);		ethernet_private->p_rx_buffer_base[0] =			(char *) memalign (16,					   MV64460_RX_QUEUE_SIZE *					   MV64460_TX_BUFFER_SIZE + 1);		ethernet_private->p_tx_buffer_base[0] =			(char *) memalign (16,					   MV64460_RX_QUEUE_SIZE *					   MV64460_TX_BUFFER_SIZE + 1);#ifdef DEBUG_MV_ETH		/* DEBUG OUTPUT prints adresses of globals */		print_globals (dev);#endif		eth_register (dev);		miiphy_register(dev->name, mv_miiphy_read, mv_miiphy_write);	}	DP (printf ("%s: exit\n", __FUNCTION__));}/********************************************************************** * mv64460_eth_open * * This function is called when openning the network device. The function * should initialize all the hardware, initialize cyclic Rx/Tx * descriptors chain and buffers and allocate an IRQ to the network * device. * * Input : a pointer to the network device structure * / / ronen - changed the output to match  net/eth.c needs * Output : nonzero of success , zero if fails. * under construction **********************************************************************/int mv64460_eth_open (struct eth_device *dev){	return (mv64460_eth_real_open (dev));}/* Helper function for mv64460_eth_open */static int mv64460_eth_real_open (struct eth_device *dev){	unsigned int queue;	ETH_PORT_INFO *ethernet_private;	struct mv64460_eth_priv *port_private;	unsigned int port_num;	u32 port_status;	ushort reg_short;	int speed;	int duplex;	int i;	int reg;	ethernet_private = (ETH_PORT_INFO *) dev->priv;	/* ronen - when we update the MAC env params we only update dev->enetaddr	   see ./net/eth.c eth_set_enetaddr() */	memcpy (ethernet_private->port_mac_addr, dev->enetaddr, 6);	port_private = (struct mv64460_eth_priv *) ethernet_private->port_private;	port_num = port_private->port_num;	/* Stop RX Queues */	MV_REG_WRITE (MV64460_ETH_RECEIVE_QUEUE_COMMAND_REG (port_num), 0x0000ff00);	/* Clear the ethernet port interrupts */	MV_REG_WRITE (MV64460_ETH_INTERRUPT_CAUSE_REG (port_num), 0);	MV_REG_WRITE (MV64460_ETH_INTERRUPT_CAUSE_EXTEND_REG (port_num), 0);	/* Unmask RX buffer and TX end interrupt */	MV_REG_WRITE (MV64460_ETH_INTERRUPT_MASK_REG (port_num),		      INT_CAUSE_UNMASK_ALL);	/* Unmask phy and link status changes interrupts */	MV_REG_WRITE (MV64460_ETH_INTERRUPT_EXTEND_MASK_REG (port_num),		      INT_CAUSE_UNMASK_ALL_EXT);	/* Set phy address of the port */	ethernet_private->port_phy_addr = 0x1 + (port_num << 1);	reg = ethernet_private->port_phy_addr;	/* Activate the DMA channels etc */	eth_port_init (ethernet_private);	/* "Allocate" setup TX rings */	for (queue = 0; queue < MV64460_TX_QUEUE_NUM; queue++) {		unsigned int size;		port_private->tx_ring_size[queue] = MV64460_TX_QUEUE_SIZE;		size = (port_private->tx_ring_size[queue] * TX_DESC_ALIGNED_SIZE);	/*size = no of DESCs times DESC-size */		ethernet_private->tx_desc_area_size[queue] = size;		/* first clear desc area completely */		memset ((void *) ethernet_private->p_tx_desc_area_base[queue],			0, ethernet_private->tx_desc_area_size[queue]);		/* initialize tx desc ring with low level driver */		if (ether_init_tx_desc_ring		    (ethernet_private, ETH_Q0,		     port_private->tx_ring_size[queue],		     MV64460_TX_BUFFER_SIZE /* Each Buffer is 1600 Byte */ ,		     (unsigned int) ethernet_private->		     p_tx_desc_area_base[queue],		     (unsigned int) ethernet_private->		     p_tx_buffer_base[queue]) == false)			printf ("### Error initializing TX Ring\n");	}	/* "Allocate" setup RX rings */	for (queue = 0; queue < MV64460_RX_QUEUE_NUM; queue++) {		unsigned int size;		/* Meantime RX Ring are fixed - but must be configurable by user */		port_private->rx_ring_size[queue] = MV64460_RX_QUEUE_SIZE;		size = (port_private->rx_ring_size[queue] *			RX_DESC_ALIGNED_SIZE);		ethernet_private->rx_desc_area_size[queue] = size;		/* first clear desc area completely */		memset ((void *) ethernet_private->p_rx_desc_area_base[queue],			0, ethernet_private->rx_desc_area_size[queue]);		if ((ether_init_rx_desc_ring		     (ethernet_private, ETH_Q0,		      port_private->rx_ring_size[queue],		      MV64460_RX_BUFFER_SIZE /* Each Buffer is 1600 Byte */ ,		      (unsigned int) ethernet_private->		      p_rx_desc_area_base[queue],		      (unsigned int) ethernet_private->		      p_rx_buffer_base[queue])) == false)			printf ("### Error initializing RX Ring\n");	}	eth_port_start (ethernet_private);	/* Set maximum receive buffer to 9700 bytes */	MV_REG_WRITE (MV64460_ETH_PORT_SERIAL_CONTROL_REG (port_num),		      (0x5 << 17) |		      (MV_REG_READ		       (MV64460_ETH_PORT_SERIAL_CONTROL_REG (port_num))		       & 0xfff1ffff));	/*	 * Set ethernet MTU for leaky bucket mechanism to 0 - this will	 * disable the leaky bucket mechanism .	 */	MV_REG_WRITE (MV64460_ETH_MAXIMUM_TRANSMIT_UNIT (port_num), 0);	port_status = MV_REG_READ (MV64460_ETH_PORT_STATUS_REG (port_num));#if defined(CONFIG_PHY_RESET)	/*	 * Reset the phy, only if its the first time through	 * otherwise, just check the speeds & feeds	 */	if (port_private->first_init == 0) {		port_private->first_init = 1;		ethernet_phy_reset (port_num);		/* Start/Restart autonegotiation */		phy_setup_aneg (dev->name, reg);		udelay (1000);	}#endif /* defined(CONFIG_PHY_RESET) */	miiphy_read (dev->name, reg, PHY_BMSR, &reg_short);	/*	 * Wait if PHY is capable of autonegotiation and autonegotiation is not complete	 */	if ((reg_short & PHY_BMSR_AUTN_ABLE)	    && !(reg_short & PHY_BMSR_AUTN_COMP)) {		puts ("Waiting for PHY auto negotiation to complete");		i = 0;		while (!(reg_short & PHY_BMSR_AUTN_COMP)) {			/*			 * Timeout reached ?			 */			if (i > PHY_AUTONEGOTIATE_TIMEOUT) {				puts (" TIMEOUT !\n");				break;			}			if ((i++ % 1000) == 0) {				putc ('.');			}			udelay (1000);	/* 1 ms */			miiphy_read (dev->name, reg, PHY_BMSR, &reg_short);		}		puts (" done\n");		udelay (500000);	/* another 500 ms (results in faster booting) */	}	speed = miiphy_speed (dev->name, reg);	duplex = miiphy_duplex (dev->name, reg);	printf ("ENET Speed is %d Mbps - %s duplex connection\n",		(int) speed, (duplex == HALF) ? "HALF" : "FULL");	port_private->eth_running = MAGIC_ETH_RUNNING;	return 1;}static int mv64460_eth_free_tx_rings (struct eth_device *dev){	unsigned int queue;	ETH_PORT_INFO *ethernet_private;	struct mv64460_eth_priv *port_private;	unsigned int port_num;	volatile ETH_TX_DESC *p_tx_curr_desc;	ethernet_private = (ETH_PORT_INFO *) dev->priv;	port_private =		(struct mv64460_eth_priv *) ethernet_private->port_private;	port_num = port_private->port_num;	/* Stop Tx Queues */	MV_REG_WRITE (MV64460_ETH_TRANSMIT_QUEUE_COMMAND_REG (port_num),		      0x0000ff00);	/* Free TX rings */	DP (printf ("Clearing previously allocated TX queues... "));	for (queue = 0; queue < MV64460_TX_QUEUE_NUM; queue++) {		/* Free on TX rings */		for (p_tx_curr_desc =		     ethernet_private->p_tx_desc_area_base[queue];		     ((unsigned int) p_tx_curr_desc <= (unsigned int)		      ethernet_private->p_tx_desc_area_base[queue] +		      ethernet_private->tx_desc_area_size[queue]);		     p_tx_curr_desc =		     (ETH_TX_DESC *) ((unsigned int) p_tx_curr_desc +				      TX_DESC_ALIGNED_SIZE)) {			/* this is inside for loop */			if (p_tx_curr_desc->return_info != 0) {				p_tx_curr_desc->return_info = 0;				DP (printf ("freed\n"));			}		}		DP (printf ("Done\n"));	}	return 0;}static int mv64460_eth_free_rx_rings (struct eth_device *dev){	unsigned int queue;	ETH_PORT_INFO *ethernet_private;	struct mv64460_eth_priv *port_private;	unsigned int port_num;	volatile ETH_RX_DESC *p_rx_curr_desc;	ethernet_private = (ETH_PORT_INFO *) dev->priv;	port_private =		(struct mv64460_eth_priv *) ethernet_private->port_private;	port_num = port_private->port_num;	/* Stop RX Queues */	MV_REG_WRITE (MV64460_ETH_RECEIVE_QUEUE_COMMAND_REG (port_num),		      0x0000ff00);	/* Free RX rings */	DP (printf ("Clearing previously allocated RX queues... "));	for (queue = 0; queue < MV64460_RX_QUEUE_NUM; queue++) {		/* Free preallocated skb's on RX rings */		for (p_rx_curr_desc =		     ethernet_private->p_rx_desc_area_base[queue];		     (((unsigned int) p_rx_curr_desc <		       ((unsigned int) ethernet_private->			p_rx_desc_area_base[queue] +			ethernet_private->rx_desc_area_size[queue])));		     p_rx_curr_desc =		     (ETH_RX_DESC *) ((unsigned int) p_rx_curr_desc +				      RX_DESC_ALIGNED_SIZE)) {			if (p_rx_curr_desc->return_info != 0) {				p_rx_curr_desc->return_info = 0;				DP (printf ("freed\n"));			}		}		DP (printf ("Done\n"));	}	return 0;}/********************************************************************** * mv64460_eth_stop * * This function is used when closing the network device. * It updates the hardware, * release all memory that holds buffers and descriptors and release the IRQ. * Input : a pointer to the device structure * Output : zero if success , nonzero if fails *********************************************************************/int mv64460_eth_stop (struct eth_device *dev){	ETH_PORT_INFO *ethernet_private;	struct mv64460_eth_priv *port_private;	unsigned int port_num;	ethernet_private = (ETH_PORT_INFO *) dev->priv;	port_private =		(struct mv64460_eth_priv *) ethernet_private->port_private;	port_num = port_private->port_num;	/* Disable all gigE address decoder */	MV_REG_WRITE (MV64460_ETH_BASE_ADDR_ENABLE_REG, 0x3f);	DP (printf ("%s Ethernet stop called ... \n", __FUNCTION__));	mv64460_eth_real_stop (dev);	return 0;};/* Helper function for mv64460_eth_stop */static int mv64460_eth_real_stop (struct eth_device *dev){	ETH_PORT_INFO *ethernet_private;	struct mv64460_eth_priv *port_private;	unsigned int port_num;	ethernet_private = (ETH_PORT_INFO *) dev->priv;	port_private =		(struct mv64460_eth_priv *) ethernet_private->port_private;	port_num = port_private->port_num;	mv64460_eth_free_tx_rings (dev);	mv64460_eth_free_rx_rings (dev);	eth_port_reset (ethernet_private->port_num);	/* Disable ethernet port interrupts */	MV_REG_WRITE (MV64460_ETH_INTERRUPT_CAUSE_REG (port_num), 0);	MV_REG_WRITE (MV64460_ETH_INTERRUPT_CAUSE_EXTEND_REG (port_num), 0);	/* Mask RX buffer and TX end interrupt */	MV_REG_WRITE (MV64460_ETH_INTERRUPT_MASK_REG (port_num), 0);	/* Mask phy and link status changes interrupts */	MV_REG_WRITE (MV64460_ETH_INTERRUPT_EXTEND_MASK_REG (port_num), 0);	MV_RESET_REG_BITS (MV64460_CPU_INTERRUPT0_MASK_HIGH,			   BIT0 << port_num);	/* Print Network statistics */#ifndef	 UPDATE_STATS_BY_SOFTWARE	/*	 * Print statistics (only if ethernet is running),	 * then zero all the stats fields in memory	 */	if (port_private->eth_running == MAGIC_ETH_RUNNING) {		port_private->eth_running = 0;		mv64460_eth_print_stat (dev);	}	memset (port_private->stats, 0, sizeof (struct net_device_stats));#endif	DP (printf ("\nEthernet stopped ... \n"));	return 0;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99久久精品| 久久福利视频一区二区| 欧美日韩国产大片| 日韩二区三区在线观看| 欧美一区午夜精品| 国产成人综合视频| 最新国产成人在线观看| 色婷婷国产精品综合在线观看| 亚洲少妇30p| 6080日韩午夜伦伦午夜伦| 人妖欧美一区二区| 国产精品天干天干在观线| 色哟哟国产精品| 蜜桃一区二区三区在线| 欧美国产精品劲爆| 91超碰这里只有精品国产| 国产精品影视在线| 亚洲韩国一区二区三区| 日韩三级视频中文字幕| 成人在线视频一区二区| 天堂成人免费av电影一区| 国产嫩草影院久久久久| 欧美日韩精品一区二区三区四区 | 国产亚洲成aⅴ人片在线观看| 色天使色偷偷av一区二区| 麻豆精品一区二区综合av| 国产精品国产三级国产aⅴ入口| 欧美高清性hdvideosex| 波多野结衣91| 蜜桃视频免费观看一区| 一本久道久久综合中文字幕| 亚洲精品在线免费观看视频| 日韩精品一二区| 中文字幕av一区二区三区高| 欧美日韩成人高清| 高清不卡在线观看| 丝袜美腿成人在线| 国产精品护士白丝一区av| 不卡av免费在线观看| 日韩电影在线观看电影| 亚洲欧美韩国综合色| 欧美成人在线直播| 欧美高清精品3d| 91麻豆免费看片| 久久99热99| 亚洲国产精品久久人人爱| 中文字幕精品在线不卡| 精品国产制服丝袜高跟| 欧美巨大另类极品videosbest| 成人97人人超碰人人99| 国产成人精品免费视频网站| 美女视频黄免费的久久| 午夜精品一区二区三区免费视频| 最近中文字幕一区二区三区| 国产精品网站在线观看| 久久久久久久久久久久久夜| 精品国产成人系列| 欧美三级中文字幕| 欧美三区在线视频| 欧美日韩精品电影| 欧美亚男人的天堂| 欧美日韩中字一区| 欧美午夜电影一区| 欧美乱妇一区二区三区不卡视频| 欧美影院精品一区| 欧美日韩国产欧美日美国产精品| 在线亚洲一区观看| 欧美精品777| 91精品免费在线观看| 欧美老肥妇做.爰bbww视频| 欧美日韩不卡视频| 精品国一区二区三区| 国产三级三级三级精品8ⅰ区| 欧美国产97人人爽人人喊| 国产欧美久久久精品影院| 国产精品福利在线播放| 亚洲激情男女视频| 日韩和欧美一区二区三区| 久久99最新地址| 国产福利视频一区二区三区| 成人网在线播放| 欧美亚洲国产怡红院影院| 欧美一区二区二区| 欧美激情综合在线| 午夜视频一区二区| 极品美女销魂一区二区三区| 国产精品 欧美精品| 欧美日韩国产首页在线观看| 久久一区二区视频| 日韩美女啊v在线免费观看| 婷婷综合另类小说色区| 国产老肥熟一区二区三区| 在线一区二区三区| 日韩一区二区免费视频| 17c精品麻豆一区二区免费| 爽好多水快深点欧美视频| 国产成人综合网| 欧美主播一区二区三区| 国产精品丝袜一区| 精品在线视频一区| 樱花影视一区二区| 亚洲一区二区三区小说| 亚洲精选一二三| 成人h动漫精品一区二区| 91精品黄色片免费大全| 亚洲欧洲精品一区二区三区| 亚洲福利一区二区三区| 99国产精品国产精品毛片| 26uuu久久天堂性欧美| 亚洲地区一二三色| 91麻豆产精品久久久久久 | 91久久国产最好的精华液| 中文字幕欧美日本乱码一线二线| 蜜桃视频第一区免费观看| 欧美视频一区在线观看| 一区二区三区四区蜜桃| 91影院在线免费观看| 国产精品久久久久永久免费观看| 国内欧美视频一区二区 | 日韩一区二区三区在线| 亚洲va欧美va人人爽午夜| 在线国产亚洲欧美| 成人欧美一区二区三区白人 | 国产欧美精品一区二区色综合朱莉 | 91精品国产日韩91久久久久久| 亚洲综合一区二区三区| 欧美日韩三级一区| 亚洲国产日韩一区二区| 欧美精品123区| 久久精品噜噜噜成人av农村| 精品88久久久久88久久久| 美女高潮久久久| 日韩精品一区二区三区在线| 九九**精品视频免费播放| 精品国产三级电影在线观看| 国产精品一区在线| 综合激情网...| 欧美日韩国产一级片| 美女视频一区在线观看| 久久久五月婷婷| 色哟哟一区二区在线观看| 亚洲3atv精品一区二区三区| 91久久精品网| 免费观看成人av| 中文字幕一区二区三区av| 欧美日韩国产天堂| 韩国成人在线视频| 成人免费小视频| 欧美三级视频在线播放| 午夜欧美视频在线观看| 欧美激情一区在线| 91麻豆精品久久久久蜜臀| 狠狠色狠狠色合久久伊人| 一区二区三区四区不卡在线| 欧美zozo另类异族| 欧美色手机在线观看| 99re在线视频这里只有精品| 一区二区三区四区不卡在线| 久久久久久9999| 4438亚洲最大| 欧美亚洲日本一区| 色哟哟在线观看一区二区三区| 国产福利一区在线| 国产一区二区剧情av在线| 日韩中文字幕一区二区三区| 一区二区三区高清| 亚洲婷婷综合久久一本伊一区| 中文字幕国产精品一区二区| 日韩亚洲电影在线| 欧美一区日韩一区| 欧美日本不卡视频| 欧美丰满嫩嫩电影| 91 com成人网| 蜜桃av一区二区| 亚洲欧美偷拍另类a∨色屁股| 亚洲国产精品99久久久久久久久| 久久免费电影网| 日韩欧美成人激情| 久久久三级国产网站| 久久蜜桃av一区精品变态类天堂| 日韩精品一区二区三区在线观看| 日韩欧美亚洲另类制服综合在线| 91精品国产手机| 精品播放一区二区| 久久综合狠狠综合久久激情| 久久久国产精品午夜一区ai换脸 | 免费人成黄页网站在线一区二区| 日本美女视频一区二区| 国产精品夜夜嗨| 色综合av在线| 91精品在线一区二区| 久久这里只精品最新地址| 亚洲欧洲成人精品av97| 亚洲成a人v欧美综合天堂| 麻豆一区二区99久久久久| 成人性生交大合| 欧美乱妇20p| 欧美国产精品一区| 亚洲成a人在线观看| 国产成人精品1024|