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

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

?? e1000.c

?? u-boot-1.1.6 源碼包
?? C
?? 第 1 頁 / 共 5 頁
字號:
			udelay(5);			eecd = E1000_READ_REG(hw, EECD);		}		if (!(eecd & E1000_EECD_GNT)) {			eecd &= ~E1000_EECD_REQ;			E1000_WRITE_REG(hw, EECD, eecd);			DEBUGOUT("Could not acquire EEPROM grant\n");			return FALSE;		}	}	e1000_setup_eeprom(hw);	e1000_shift_out_ee_bits(hw, EEPROM_EWEN_OPCODE, 5);	e1000_shift_out_ee_bits(hw, Reg, (large_eeprom) ? 6 : 4);	e1000_standby_eeprom(hw);	e1000_shift_out_ee_bits(hw, EEPROM_WRITE_OPCODE, 3);	e1000_shift_out_ee_bits(hw, Reg, (large_eeprom) ? 8 : 6);	e1000_shift_out_ee_bits(hw, Data, 16);	if (!e1000_wait_eeprom_done(hw)) {		return FALSE;	}	e1000_shift_out_ee_bits(hw, EEPROM_EWDS_OPCODE, 5);	e1000_shift_out_ee_bits(hw, Reg, (large_eeprom) ? 6 : 4);	e1000_eeprom_cleanup(hw);	/* Stop requesting EEPROM access */	if (hw->mac_type > e1000_82544) {		eecd = E1000_READ_REG(hw, EECD);		eecd &= ~E1000_EECD_REQ;		E1000_WRITE_REG(hw, EECD, eecd);	}	i = 0;	eecd = E1000_READ_REG(hw, EECD);	while (((eecd & E1000_EECD_GNT)) && (i < 500)) {		i++;		udelay(10);		eecd = E1000_READ_REG(hw, EECD);	}	if ((eecd & E1000_EECD_GNT)) {		DEBUGOUT("Could not release EEPROM grant\n");	}	return TRUE;}#endif/****************************************************************************** * Verifies that the EEPROM has a valid checksum * * hw - Struct containing variables accessed by shared code * * Reads the first 64 16 bit words of the EEPROM and sums the values read. * If the the sum of the 64 16 bit words is 0xBABA, the EEPROM's checksum is * valid. *****************************************************************************/static inte1000_validate_eeprom_checksum(struct eth_device *nic){	struct e1000_hw *hw = nic->priv;	uint16_t checksum = 0;	uint16_t i, eeprom_data;	DEBUGFUNC();	for (i = 0; i < (EEPROM_CHECKSUM_REG + 1); i++) {		if (e1000_read_eeprom(hw, i, &eeprom_data) < 0) {			DEBUGOUT("EEPROM Read Error\n");			return -E1000_ERR_EEPROM;		}		checksum += eeprom_data;	}	if (checksum == (uint16_t) EEPROM_SUM) {		return 0;	} else {		DEBUGOUT("EEPROM Checksum Invalid\n");		return -E1000_ERR_EEPROM;	}}#endif /* #ifndef CONFIG_AP1000 *//****************************************************************************** * Reads the adapter's MAC address from the EEPROM and inverts the LSB for the * second function of dual function devices * * nic - Struct containing variables accessed by shared code *****************************************************************************/static inte1000_read_mac_addr(struct eth_device *nic){#ifndef CONFIG_AP1000	struct e1000_hw *hw = nic->priv;	uint16_t offset;	uint16_t eeprom_data;	int i;	DEBUGFUNC();	for (i = 0; i < NODE_ADDRESS_SIZE; i += 2) {		offset = i >> 1;		if (e1000_read_eeprom(hw, offset, &eeprom_data) < 0) {			DEBUGOUT("EEPROM Read Error\n");			return -E1000_ERR_EEPROM;		}		nic->enetaddr[i] = eeprom_data & 0xff;		nic->enetaddr[i + 1] = (eeprom_data >> 8) & 0xff;	}	if ((hw->mac_type == e1000_82546) &&	    (E1000_READ_REG(hw, STATUS) & E1000_STATUS_FUNC_1)) {		/* Invert the last bit if this is the second device */		nic->enetaddr[5] += 1;	}#else	/*	 * The AP1000's e1000 has no eeprom; the MAC address is stored in the	 * environment variables.  Currently this does not support the addition	 * of a PMC e1000 card, which is certainly a possibility, so this should	 * be updated to properly use the env variable only for the onboard e1000	 */	int ii;	char *s, *e;	DEBUGFUNC();	s = getenv ("ethaddr");	if (s == NULL){		return -E1000_ERR_EEPROM;	}	else{		for(ii = 0; ii < 6; ii++) {			nic->enetaddr[ii] = s ? simple_strtoul (s, &e, 16) : 0;			if (s){				s = (*e) ? e + 1 : e;			}		}	}#endif	return 0;}/****************************************************************************** * Initializes receive address filters. * * hw - Struct containing variables accessed by shared code * * Places the MAC address in receive address register 0 and clears the rest * of the receive addresss registers. Clears the multicast table. Assumes * the receiver is in reset when the routine is called. *****************************************************************************/static voide1000_init_rx_addrs(struct eth_device *nic){	struct e1000_hw *hw = nic->priv;	uint32_t i;	uint32_t addr_low;	uint32_t addr_high;	DEBUGFUNC();	/* Setup the receive address. */	DEBUGOUT("Programming MAC Address into RAR[0]\n");	addr_low = (nic->enetaddr[0] |		    (nic->enetaddr[1] << 8) |		    (nic->enetaddr[2] << 16) | (nic->enetaddr[3] << 24));	addr_high = (nic->enetaddr[4] | (nic->enetaddr[5] << 8) | E1000_RAH_AV);	E1000_WRITE_REG_ARRAY(hw, RA, 0, addr_low);	E1000_WRITE_REG_ARRAY(hw, RA, 1, addr_high);	/* Zero out the other 15 receive addresses. */	DEBUGOUT("Clearing RAR[1-15]\n");	for (i = 1; i < E1000_RAR_ENTRIES; i++) {		E1000_WRITE_REG_ARRAY(hw, RA, (i << 1), 0);		E1000_WRITE_REG_ARRAY(hw, RA, ((i << 1) + 1), 0);	}}/****************************************************************************** * Clears the VLAN filer table * * hw - Struct containing variables accessed by shared code *****************************************************************************/static voide1000_clear_vfta(struct e1000_hw *hw){	uint32_t offset;	for (offset = 0; offset < E1000_VLAN_FILTER_TBL_SIZE; offset++)		E1000_WRITE_REG_ARRAY(hw, VFTA, offset, 0);}/****************************************************************************** * Set the mac type member in the hw struct. * * hw - Struct containing variables accessed by shared code *****************************************************************************/static inte1000_set_mac_type(struct e1000_hw *hw){	DEBUGFUNC();	switch (hw->device_id) {	case E1000_DEV_ID_82542:		switch (hw->revision_id) {		case E1000_82542_2_0_REV_ID:			hw->mac_type = e1000_82542_rev2_0;			break;		case E1000_82542_2_1_REV_ID:			hw->mac_type = e1000_82542_rev2_1;			break;		default:			/* Invalid 82542 revision ID */			return -E1000_ERR_MAC_TYPE;		}		break;	case E1000_DEV_ID_82543GC_FIBER:	case E1000_DEV_ID_82543GC_COPPER:		hw->mac_type = e1000_82543;		break;	case E1000_DEV_ID_82544EI_COPPER:	case E1000_DEV_ID_82544EI_FIBER:	case E1000_DEV_ID_82544GC_COPPER:	case E1000_DEV_ID_82544GC_LOM:		hw->mac_type = e1000_82544;		break;	case E1000_DEV_ID_82540EM:	case E1000_DEV_ID_82540EM_LOM:		hw->mac_type = e1000_82540;		break;	case E1000_DEV_ID_82545EM_COPPER:	case E1000_DEV_ID_82545EM_FIBER:		hw->mac_type = e1000_82545;		break;	case E1000_DEV_ID_82546EB_COPPER:	case E1000_DEV_ID_82546EB_FIBER:		hw->mac_type = e1000_82546;		break;	default:		/* Should never have loaded on this device */		return -E1000_ERR_MAC_TYPE;	}	return E1000_SUCCESS;}/****************************************************************************** * Reset the transmit and receive units; mask and clear all interrupts. * * hw - Struct containing variables accessed by shared code *****************************************************************************/voide1000_reset_hw(struct e1000_hw *hw){	uint32_t ctrl;	uint32_t ctrl_ext;	uint32_t icr;	uint32_t manc;	DEBUGFUNC();	/* For 82542 (rev 2.0), disable MWI before issuing a device reset */	if (hw->mac_type == e1000_82542_rev2_0) {		DEBUGOUT("Disabling MWI on 82542 rev 2.0\n");		pci_write_config_word(hw->pdev, PCI_COMMAND,				      hw->				      pci_cmd_word & ~PCI_COMMAND_INVALIDATE);	}	/* Clear interrupt mask to stop board from generating interrupts */	DEBUGOUT("Masking off all interrupts\n");	E1000_WRITE_REG(hw, IMC, 0xffffffff);	/* Disable the Transmit and Receive units.  Then delay to allow	 * any pending transactions to complete before we hit the MAC with	 * the global reset.	 */	E1000_WRITE_REG(hw, RCTL, 0);	E1000_WRITE_REG(hw, TCTL, E1000_TCTL_PSP);	E1000_WRITE_FLUSH(hw);	/* The tbi_compatibility_on Flag must be cleared when Rctl is cleared. */	hw->tbi_compatibility_on = FALSE;	/* Delay to allow any outstanding PCI transactions to complete before	 * resetting the device	 */	mdelay(10);	/* Issue a global reset to the MAC.  This will reset the chip's	 * transmit, receive, DMA, and link units.  It will not effect	 * the current PCI configuration.  The global reset bit is self-	 * clearing, and should clear within a microsecond.	 */	DEBUGOUT("Issuing a global reset to MAC\n");	ctrl = E1000_READ_REG(hw, CTRL);#if 0	if (hw->mac_type > e1000_82543)		E1000_WRITE_REG_IO(hw, CTRL, (ctrl | E1000_CTRL_RST));	else#endif		E1000_WRITE_REG(hw, CTRL, (ctrl | E1000_CTRL_RST));	/* Force a reload from the EEPROM if necessary */	if (hw->mac_type < e1000_82540) {		/* Wait for reset to complete */		udelay(10);		ctrl_ext = E1000_READ_REG(hw, CTRL_EXT);		ctrl_ext |= E1000_CTRL_EXT_EE_RST;		E1000_WRITE_REG(hw, CTRL_EXT, ctrl_ext);		E1000_WRITE_FLUSH(hw);		/* Wait for EEPROM reload */		mdelay(2);	} else {		/* Wait for EEPROM reload (it happens automatically) */		mdelay(4);		/* Dissable HW ARPs on ASF enabled adapters */		manc = E1000_READ_REG(hw, MANC);		manc &= ~(E1000_MANC_ARP_EN);		E1000_WRITE_REG(hw, MANC, manc);	}	/* Clear interrupt mask to stop board from generating interrupts */	DEBUGOUT("Masking off all interrupts\n");	E1000_WRITE_REG(hw, IMC, 0xffffffff);	/* Clear any pending interrupt events. */	icr = E1000_READ_REG(hw, ICR);	/* If MWI was previously enabled, reenable it. */	if (hw->mac_type == e1000_82542_rev2_0) {		pci_write_config_word(hw->pdev, PCI_COMMAND, hw->pci_cmd_word);	}}/****************************************************************************** * Performs basic configuration of the adapter. * * hw - Struct containing variables accessed by shared code * * Assumes that the controller has previously been reset and is in a * post-reset uninitialized state. Initializes the receive address registers, * multicast table, and VLAN filter table. Calls routines to setup link * configuration and flow control settings. Clears all on-chip counters. Leaves * the transmit and receive units disabled and uninitialized. *****************************************************************************/static inte1000_init_hw(struct eth_device *nic){	struct e1000_hw *hw = nic->priv;	uint32_t ctrl, status;	uint32_t i;	int32_t ret_val;	uint16_t pcix_cmd_word;	uint16_t pcix_stat_hi_word;	uint16_t cmd_mmrbc;	uint16_t stat_mmrbc;	e1000_bus_type bus_type = e1000_bus_type_unknown;	DEBUGFUNC();#if 0	/* Initialize Identification LED */	ret_val = e1000_id_led_init(hw);	if (ret_val < 0) {		DEBUGOUT("Error Initializing Identification LED\n");		return ret_val;	}#endif	/* Set the Media Type and exit with error if it is not valid. */	if (hw->mac_type != e1000_82543) {		/* tbi_compatibility is only valid on 82543 */		hw->tbi_compatibility_en = FALSE;	}	if (hw->mac_type >= e1000_82543) {		status = E1000_READ_REG(hw, STATUS);		if (status & E1000_STATUS_TBIMODE) {			hw->media_type = e1000_media_type_fiber;			/* tbi_compatibility not valid on fiber */			hw->tbi_compatibility_en = FALSE;		} else {			hw->media_type = e1000_media_type_copper;		}	} else {		/* This is an 82542 (fiber only) */		hw->media_type = e1000_media_type_fiber;	}	/* Disabling VLAN filtering. */	DEBUGOUT("Initializing the IEEE VLAN\n");	E1000_WRITE_REG(hw, VET, 0);	e1000_clear_vfta(hw);	/* For 82542 (rev 2.0), disable MWI and put the receiver into reset */	if (hw->mac_type == e1000_82542_rev2_0) {		DEBUGOUT("Disabling MWI on 82542 rev 2.0\n");		pci_write_config_word(hw->pdev, PCI_COMMAND,				      hw->				      pci_cmd_word & ~PCI_COMMAND_INVALIDATE);		E1000_WRITE_REG(hw, RCTL, E1000_RCTL_RST);		E1000_WRITE_FLUSH(hw);		mdelay(5);	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av在线综合网| 蜜臀av一区二区在线观看| 欧美一区二区视频免费观看| 成人午夜激情在线| 韩国中文字幕2020精品| 精品综合久久久久久8888| 天天影视色香欲综合网老头| 亚洲永久精品国产| 一区二区三区四区精品在线视频| 亚洲国产精品av| 一区二区三区在线视频免费| 亚洲精品中文在线观看| 亚洲一区二区三区在线播放| 一区二区三区精品在线观看| 亚洲一区二区视频| 日韩在线a电影| 黄一区二区三区| 成人aaaa免费全部观看| 一本到不卡免费一区二区| 欧美日韩国产精品自在自线| 91精品国产91久久综合桃花| 欧美理论在线播放| 日韩欧美国产一二三区| 欧美激情在线看| 一区二区三区欧美日韩| 日韩va欧美va亚洲va久久| 韩国三级电影一区二区| a4yy欧美一区二区三区| 欧美福利一区二区| 国产午夜精品一区二区三区视频| 中文字幕国产一区二区| 亚洲与欧洲av电影| 激情深爱一区二区| 91激情在线视频| 欧美大肚乱孕交hd孕妇| 国产精品国产成人国产三级 | 久久人人97超碰com| 国产欧美日韩激情| 怡红院av一区二区三区| 日韩高清不卡一区二区| 丁香桃色午夜亚洲一区二区三区| 色悠久久久久综合欧美99| 精品国内二区三区| 亚洲天堂网中文字| 国产专区综合网| 在线看日本不卡| 久久久www成人免费无遮挡大片 | 欧美中文字幕久久| 日韩欧美久久一区| 一区二区在线看| 国产69精品一区二区亚洲孕妇| 欧美在线高清视频| 8x福利精品第一导航| 国产精品午夜电影| 裸体一区二区三区| 欧美少妇bbb| 亚洲同性同志一二三专区| 麻豆91免费看| 在线观看91视频| 国产精品久久久久三级| 久久精品二区亚洲w码| 欧美日韩一区二区三区视频 | 91视频国产资源| 久久久久久久久伊人| 亚洲国产一区二区三区青草影视 | 亚洲一区二区三区美女| 精品国产一区二区三区四区四 | 亚洲欧美视频在线观看视频| 精品一区二区三区日韩| 欧美一区二区精品| 天天色图综合网| 欧美日韩国产一二三| 亚洲精品国产第一综合99久久| 国产福利一区二区三区视频在线| 宅男在线国产精品| 亚洲成人在线免费| 欧美日韩在线三级| 五月婷婷综合在线| 欧美一区二区三区影视| 日本va欧美va欧美va精品| 日韩亚洲欧美综合| 精品一区二区三区在线观看国产| 精品人伦一区二区色婷婷| 久久91精品久久久久久秒播| 欧美一区二区视频免费观看| 久久国产剧场电影| 久久夜色精品一区| 国产jizzjizz一区二区| 国产日产亚洲精品系列| www.亚洲免费av| 专区另类欧美日韩| 欧美日本免费一区二区三区| 日本在线不卡视频一二三区| 精品成a人在线观看| 成人一区二区在线观看| 一区二区三区四区视频精品免费| 欧美日韩视频一区二区| 久久99精品久久久久久动态图| 2022国产精品视频| 成人国产电影网| 亚洲国产一区二区三区青草影视| 日韩视频一区在线观看| 蜜臂av日日欢夜夜爽一区| 精品动漫一区二区三区在线观看| 另类调教123区| 久久久精品免费免费| 99视频精品在线| 久久精品欧美日韩| 色婷婷亚洲一区二区三区| 免费观看在线色综合| 日韩欧美在线不卡| www.av精品| 亚洲综合在线视频| 久久久久久夜精品精品免费| 日韩福利视频网| 日韩理论片一区二区| 欧美视频一区二区| 国产成人精品免费视频网站| 国产精品久线在线观看| 在线成人午夜影院| 国内成+人亚洲+欧美+综合在线| 欧美激情在线一区二区三区| 欧美精品少妇一区二区三区| 精品一区二区三区不卡| 国产精品成人午夜| 欧美一区二区精品在线| 丁香婷婷综合色啪| 久久国产人妖系列| 亚洲欧洲在线观看av| 在线播放亚洲一区| 色婷婷国产精品综合在线观看| 日韩成人dvd| 午夜视频一区二区| 91精品欧美一区二区三区综合在| 久久电影网站中文字幕 | 欧美日韩和欧美的一区二区| 美女尤物国产一区| 亚洲成a人片在线不卡一二三区| 精品国产乱码久久久久久1区2区| 色综合久久88色综合天天| 黄色日韩三级电影| 亚洲成人动漫在线免费观看| 一区二区中文视频| 精品久久久久久久久久久久久久久久久 | 国产精品欧美久久久久一区二区| 欧美一区二区三区色| 99久久婷婷国产综合精品电影| 精品在线播放免费| 亚洲成人一区二区在线观看| 亚洲一区二区在线观看视频| 国产日韩精品视频一区| 欧美白人最猛性xxxxx69交| 色狠狠色噜噜噜综合网| 成人精品电影在线观看| 极品少妇xxxx精品少妇| 日韩精品成人一区二区在线| 亚洲va欧美va人人爽午夜| 亚州成人在线电影| 玉足女爽爽91| 亚洲国产欧美日韩另类综合 | av激情亚洲男人天堂| 日本成人在线电影网| 丝袜亚洲另类欧美| 婷婷一区二区三区| 亚洲精品国产高清久久伦理二区| 亚洲欧洲一区二区在线播放| 一区视频在线播放| 亚洲福中文字幕伊人影院| 一区精品在线播放| 亚洲一二三区不卡| 亚洲电影中文字幕在线观看| 一区二区三区国产豹纹内裤在线| 亚洲一区成人在线| 亚洲国产精品久久久久秋霞影院 | 91福利国产精品| 欧美日韩国产欧美日美国产精品| 国产成人久久精品77777最新版本| 有坂深雪av一区二区精品| 欧美激情在线一区二区三区| 亚洲欧美日韩国产一区二区三区 | 日韩高清在线不卡| 日本一区二区不卡视频| 日韩欧美一区二区免费| 欧美高清视频www夜色资源网| eeuss鲁片一区二区三区| 黄页网站大全一区二区| 久久国产人妖系列| 成人av网站免费观看| 亚洲午夜久久久久中文字幕久| 中文在线一区二区| 欧美精品一区视频| 国产精品久久久久久久午夜片 | 国产精品久久久久婷婷| 国产精品高潮呻吟| 亚洲一区在线观看视频| 伊人夜夜躁av伊人久久| 久久97超碰色| 99精品视频在线免费观看| 欧美性videosxxxxx| 欧美美女喷水视频|