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

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

?? e1000_ich8lan.c

?? DELL755 Intel 網卡驅動
?? C
?? 第 1 頁 / 共 5 頁
字號:
 *  routines for the PHY and NVM parts. **/static void e1000_release_swflag_ich8lan(struct e1000_hw *hw){	u32 extcnf_ctrl;	DEBUGFUNC("e1000_release_swflag_ich8lan");	extcnf_ctrl = E1000_READ_REG(hw, E1000_EXTCNF_CTRL);	extcnf_ctrl &= ~E1000_EXTCNF_CTRL_SWFLAG;	E1000_WRITE_REG(hw, E1000_EXTCNF_CTRL, extcnf_ctrl);	return;}/** *  e1000_check_mng_mode_ich8lan - Checks management mode *  @hw: pointer to the HW structure * *  This checks if the adapter has manageability enabled. *  This is a function pointer entry point only called by read/write *  routines for the PHY and NVM parts. **/static bool e1000_check_mng_mode_ich8lan(struct e1000_hw *hw){	u32 fwsm;	DEBUGFUNC("e1000_check_mng_mode_ich8lan");	fwsm = E1000_READ_REG(hw, E1000_FWSM);	return ((fwsm & E1000_FWSM_MODE_MASK) ==	        (E1000_ICH_MNG_IAMT_MODE << E1000_FWSM_MODE_SHIFT));}/** *  e1000_check_reset_block_ich8lan - Check if PHY reset is blocked *  @hw: pointer to the HW structure * *  Checks if firmware is blocking the reset of the PHY. *  This is a function pointer entry point only called by *  reset routines. **/static s32 e1000_check_reset_block_ich8lan(struct e1000_hw *hw){	u32 fwsm;	DEBUGFUNC("e1000_check_reset_block_ich8lan");	fwsm = E1000_READ_REG(hw, E1000_FWSM);	return (fwsm & E1000_ICH_FWSM_RSPCIPHY) ? E1000_SUCCESS	                                        : E1000_BLK_PHY_RESET;}/** *  e1000_phy_force_speed_duplex_ich8lan - Force PHY speed & duplex *  @hw: pointer to the HW structure * *  Forces the speed and duplex settings of the PHY. *  This is a function pointer entry point only called by *  PHY setup routines. **/static s32 e1000_phy_force_speed_duplex_ich8lan(struct e1000_hw *hw){	struct e1000_phy_info *phy = &hw->phy;	s32 ret_val;	u16 data;	bool link;	DEBUGFUNC("e1000_phy_force_speed_duplex_ich8lan");	if (phy->type != e1000_phy_ife) {		ret_val = e1000_phy_force_speed_duplex_igp(hw);		goto out;	}	ret_val = phy->ops.read_reg(hw, PHY_CONTROL, &data);	if (ret_val)		goto out;	e1000_phy_force_speed_duplex_setup(hw, &data);	ret_val = phy->ops.write_reg(hw, PHY_CONTROL, data);	if (ret_val)		goto out;	/* Disable MDI-X support for 10/100 */	ret_val = phy->ops.read_reg(hw, IFE_PHY_MDIX_CONTROL, &data);	if (ret_val)		goto out;	data &= ~IFE_PMC_AUTO_MDIX;	data &= ~IFE_PMC_FORCE_MDIX;	ret_val = phy->ops.write_reg(hw, IFE_PHY_MDIX_CONTROL, data);	if (ret_val)		goto out;	DEBUGOUT1("IFE PMC: %X\n", data);	usec_delay(1);	if (phy->autoneg_wait_to_complete) {		DEBUGOUT("Waiting for forced speed/duplex link on IFE phy.\n");		ret_val = e1000_phy_has_link_generic(hw,		                                     PHY_FORCE_LIMIT,		                                     100000,		                                     &link);		if (ret_val)			goto out;		if (!link) {			DEBUGOUT("Link taking longer than expected.\n");		}		/* Try once more */		ret_val = e1000_phy_has_link_generic(hw,		                                     PHY_FORCE_LIMIT,		                                     100000,		                                     &link);		if (ret_val)			goto out;	}out:	return ret_val;}/** *  e1000_phy_hw_reset_ich8lan - Performs a PHY reset *  @hw: pointer to the HW structure * *  Resets the PHY *  This is a function pointer entry point called by drivers *  or other shared routines. **/static s32 e1000_phy_hw_reset_ich8lan(struct e1000_hw *hw){	struct e1000_phy_info *phy = &hw->phy;	struct e1000_nvm_info *nvm = &hw->nvm;	u32 i, data, cnf_size, cnf_base_addr, sw_cfg_mask;	s32 ret_val;	u16 loop = E1000_ICH8_LAN_INIT_TIMEOUT;	u16 word_addr, reg_data, reg_addr, phy_page = 0;	DEBUGFUNC("e1000_phy_hw_reset_ich8lan");	ret_val = e1000_phy_hw_reset_generic(hw);	if (ret_val)		goto out;	/*	 * Initialize the PHY from the NVM on ICH platforms.  This	 * is needed due to an issue where the NVM configuration is	 * not properly autoloaded after power transitions.	 * Therefore, after each PHY reset, we will load the	 * configuration data out of the NVM manually.	 */	if (hw->mac.type == e1000_ich8lan && phy->type == e1000_phy_igp_3) {		/* Check if SW needs configure the PHY */		if ((hw->device_id == E1000_DEV_ID_ICH8_IGP_M_AMT) ||		    (hw->device_id == E1000_DEV_ID_ICH8_IGP_M))			sw_cfg_mask = E1000_FEXTNVM_SW_CONFIG_ICH8M;		else			sw_cfg_mask = E1000_FEXTNVM_SW_CONFIG;		data = E1000_READ_REG(hw, E1000_FEXTNVM);		if (!(data & sw_cfg_mask))			goto out;		/* Wait for basic configuration completes before proceeding*/		do {			data = E1000_READ_REG(hw, E1000_STATUS);			data &= E1000_STATUS_LAN_INIT_DONE;			usec_delay(100);		} while ((!data) && --loop);		/*		 * If basic configuration is incomplete before the above loop		 * count reaches 0, loading the configuration from NVM will		 * leave the PHY in a bad state possibly resulting in no link.		 */		if (loop == 0) {			DEBUGOUT("LAN_INIT_DONE not set, increase timeout\n");		}		/* Clear the Init Done bit for the next init event */		data = E1000_READ_REG(hw, E1000_STATUS);		data &= ~E1000_STATUS_LAN_INIT_DONE;		E1000_WRITE_REG(hw, E1000_STATUS, data);		/*		 * Make sure HW does not configure LCD from PHY		 * extended configuration before SW configuration		 */		data = E1000_READ_REG(hw, E1000_EXTCNF_CTRL);		if (data & E1000_EXTCNF_CTRL_LCD_WRITE_ENABLE)			goto out;		cnf_size = E1000_READ_REG(hw, E1000_EXTCNF_SIZE);		cnf_size &= E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_MASK;		cnf_size >>= E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_SHIFT;		if (!cnf_size)			goto out;		cnf_base_addr = data & E1000_EXTCNF_CTRL_EXT_CNF_POINTER_MASK;		cnf_base_addr >>= E1000_EXTCNF_CTRL_EXT_CNF_POINTER_SHIFT;		/*		 * Configure LCD from extended configuration		 * region.		 */		/* cnf_base_addr is in DWORD */		word_addr = (u16)(cnf_base_addr << 1);		for (i = 0; i < cnf_size; i++) {			ret_val = nvm->ops.read(hw,			                        (word_addr + i * 2),			                        1,			                        &reg_data);			if (ret_val)				goto out;			ret_val = nvm->ops.read(hw,			                        (word_addr + i * 2 + 1),			                        1,			                        &reg_addr);			if (ret_val)				goto out;			/* Save off the PHY page for future writes. */			if (reg_addr == IGP01E1000_PHY_PAGE_SELECT) {				phy_page = reg_data;				continue;			}			reg_addr |= phy_page;			ret_val = phy->ops.write_reg(hw,			                             (u32)reg_addr,			                             reg_data);			if (ret_val)				goto out;		}	}out:	return ret_val;}/** *  e1000_get_phy_info_ich8lan - Calls appropriate PHY type get_phy_info *  @hw: pointer to the HW structure * *  Wrapper for calling the get_phy_info routines for the appropriate phy type. *  This is a function pointer entry point called by drivers *  or other shared routines. **/static s32 e1000_get_phy_info_ich8lan(struct e1000_hw *hw){	s32 ret_val = -E1000_ERR_PHY_TYPE;	DEBUGFUNC("e1000_get_phy_info_ich8lan");	switch (hw->phy.type) {	case e1000_phy_ife:		ret_val = e1000_get_phy_info_ife_ich8lan(hw);		break;	case e1000_phy_igp_3:	case e1000_phy_bm:		ret_val = e1000_get_phy_info_igp(hw);		break;	default:		break;	}	return ret_val;}/** *  e1000_get_phy_info_ife_ich8lan - Retrieves various IFE PHY states *  @hw: pointer to the HW structure * *  Populates "phy" structure with various feature states. *  This function is only called by other family-specific *  routines. **/static s32 e1000_get_phy_info_ife_ich8lan(struct e1000_hw *hw){	struct e1000_phy_info *phy = &hw->phy;	s32 ret_val;	u16 data;	bool link;	DEBUGFUNC("e1000_get_phy_info_ife_ich8lan");	ret_val = e1000_phy_has_link_generic(hw, 1, 0, &link);	if (ret_val)		goto out;	if (!link) {		DEBUGOUT("Phy info is only valid if link is up\n");		ret_val = -E1000_ERR_CONFIG;		goto out;	}	ret_val = phy->ops.read_reg(hw, IFE_PHY_SPECIAL_CONTROL, &data);	if (ret_val)		goto out;	phy->polarity_correction = (data & IFE_PSC_AUTO_POLARITY_DISABLE)	                           ? false : true;	if (phy->polarity_correction) {		ret_val = e1000_check_polarity_ife_ich8lan(hw);		if (ret_val)			goto out;	} else {		/* Polarity is forced */		phy->cable_polarity = (data & IFE_PSC_FORCE_POLARITY)		                      ? e1000_rev_polarity_reversed		                      : e1000_rev_polarity_normal;	}	ret_val = phy->ops.read_reg(hw, IFE_PHY_MDIX_CONTROL, &data);	if (ret_val)		goto out;	phy->is_mdix = (data & IFE_PMC_MDIX_STATUS) ? true : false;	/* The following parameters are undefined for 10/100 operation. */	phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;	phy->local_rx = e1000_1000t_rx_status_undefined;	phy->remote_rx = e1000_1000t_rx_status_undefined;out:	return ret_val;}/** *  e1000_check_polarity_ife_ich8lan - Check cable polarity for IFE PHY *  @hw: pointer to the HW structure * *  Polarity is determined on the polarity reversal feature being enabled. *  This function is only called by other family-specific *  routines. **/static s32 e1000_check_polarity_ife_ich8lan(struct e1000_hw *hw){	struct e1000_phy_info *phy = &hw->phy;	s32 ret_val;	u16 phy_data, offset, mask;	DEBUGFUNC("e1000_check_polarity_ife_ich8lan");	/*	 * Polarity is determined based on the reversal feature	 * being enabled.	 */	if (phy->polarity_correction) {		offset	= IFE_PHY_EXTENDED_STATUS_CONTROL;		mask	= IFE_PESC_POLARITY_REVERSED;	} else {		offset	= IFE_PHY_SPECIAL_CONTROL;		mask	= IFE_PSC_FORCE_POLARITY;	}	ret_val = phy->ops.read_reg(hw, offset, &phy_data);	if (!ret_val)		phy->cable_polarity = (phy_data & mask)		                      ? e1000_rev_polarity_reversed		                      : e1000_rev_polarity_normal;	return ret_val;}/** *  e1000_set_d0_lplu_state_ich8lan - Set Low Power Linkup D0 state *  @hw: pointer to the HW structure *  @active: true to enable LPLU, false to disable * *  Sets the LPLU D0 state according to the active flag.  When *  activating LPLU this function also disables smart speed *  and vice versa.  LPLU will not be activated unless the *  device autonegotiation advertisement meets standards of *  either 10 or 10/100 or 10/100/1000 at all duplexes. *  This is a function pointer entry point only called by *  PHY setup routines. **/static s32 e1000_set_d0_lplu_state_ich8lan(struct e1000_hw *hw,                                           bool active){	struct e1000_phy_info *phy = &hw->phy;	u32 phy_ctrl;	s32 ret_val = E1000_SUCCESS;	u16 data;	DEBUGFUNC("e1000_set_d0_lplu_state_ich8lan");	if (phy->type == e1000_phy_ife)		goto out;	phy_ctrl = E1000_READ_REG(hw, E1000_PHY_CTRL);	if (active) {		phy_ctrl |= E1000_PHY_CTRL_D0A_LPLU;		E1000_WRITE_REG(hw, E1000_PHY_CTRL, phy_ctrl);		/*		 * Call gig speed drop workaround on LPLU before accessing		 * any PHY registers		 */		if ((hw->mac.type == e1000_ich8lan) &&		    (hw->phy.type == e1000_phy_igp_3))			e1000_gig_downshift_workaround_ich8lan(hw);		/* When LPLU is enabled, we should disable SmartSpeed */		ret_val = phy->ops.read_reg(hw,		                            IGP01E1000_PHY_PORT_CONFIG,		                            &data);		data &= ~IGP01E1000_PSCFR_SMART_SPEED;		ret_val = phy->ops.write_reg(hw,		                             IGP01E1000_PHY_PORT_CONFIG,		                             data);		if (ret_val)			goto out;	} else {		phy_ctrl &= ~E1000_PHY_CTRL_D0A_LPLU;		E1000_WRITE_REG(hw, E1000_PHY_CTRL, phy_ctrl);		/*		 * LPLU and SmartSpeed are mutually exclusive.  LPLU is used		 * during Dx states where the power conservation is most		 * important.  During driver activity we should enable		 * SmartSpeed, so performance is maintained.		 */		if (phy->smart_speed == e1000_smart_speed_on) {			ret_val = phy->ops.read_reg(hw,			                            IGP01E1000_PHY_PORT_CONFIG,			                            &data);			if (ret_val)				goto out;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久三区| 久久精品久久99精品久久| 五月天激情综合网| 黄色日韩三级电影| 欧美日韩精品一二三区| 国产精品日产欧美久久久久| 肉丝袜脚交视频一区二区| av激情综合网| 欧美精品一区二区三区在线| 亚洲高清视频的网址| 色综合久久久久网| 国产欧美日韩中文久久| 久久国产剧场电影| 91精品国产综合久久久久久久| 最新欧美精品一区二区三区| 国产一区二区在线观看视频| 日韩欧美一区二区在线视频| 亚洲影视在线播放| 色综合中文综合网| 92精品国产成人观看免费| 26uuu久久天堂性欧美| 琪琪久久久久日韩精品| 欧美体内she精高潮| 亚洲精品乱码久久久久久| 成人av动漫网站| 国产精品久久久久久一区二区三区 | 99re这里只有精品首页| 中文字幕高清一区| 岛国一区二区在线观看| 国产午夜精品美女毛片视频| 国产美女久久久久| 国产日韩在线不卡| eeuss鲁片一区二区三区在线看| 久久久久一区二区三区四区| 国产激情精品久久久第一区二区 | 精品国产乱码久久久久久浪潮| 日韩影院精彩在线| 91精品视频网| 激情综合色综合久久综合| 26uuu亚洲| 国产精品1区二区.| 国产精品久久久久久久久久免费看 | 一区二区三区四区在线| 色噜噜狠狠一区二区三区果冻| 一区二区三区四区精品在线视频| 欧美专区亚洲专区| 日韩高清电影一区| 欧美精品一区二区三区在线 | 日本道色综合久久| 亚洲精品伦理在线| 精品视频一区二区三区免费| 青草av.久久免费一区| 国产人伦精品一区二区| 91小视频在线| 日韩电影在线观看一区| 欧美国产成人在线| 欧洲激情一区二区| 国产资源在线一区| 亚洲视频一二三区| 欧美美女网站色| 国产精品456露脸| 亚洲精品国产一区二区精华液| 欧美日韩成人一区| 狠狠色丁香久久婷婷综合_中| 国产精品国产自产拍高清av | 日韩中文字幕1| 久久久精品影视| 91福利资源站| 狠狠色综合日日| 亚洲最快最全在线视频| 欧美r级电影在线观看| av在线播放一区二区三区| 日韩中文字幕区一区有砖一区 | 亚洲午夜在线电影| 久久久777精品电影网影网| 欧美午夜寂寞影院| 成人免费视频视频在线观看免费| 亚洲大型综合色站| 亚洲国产高清aⅴ视频| 91精品国产入口| 91同城在线观看| 国产一区二区免费看| 亚洲成av人片观看| 国产精品久久国产精麻豆99网站| 欧美精品乱人伦久久久久久| 成人免费毛片嘿嘿连载视频| 免费看欧美美女黄的网站| 亚洲欧美偷拍另类a∨色屁股| 日韩午夜在线影院| 欧美色图激情小说| 色综合色狠狠天天综合色| 国产呦精品一区二区三区网站| 亚洲午夜在线视频| 亚洲黄色录像片| 中文字幕亚洲综合久久菠萝蜜| 久久综合色天天久久综合图片| 欧美日韩国产免费一区二区 | 成人精品一区二区三区四区| 美女爽到高潮91| 图片区小说区国产精品视频| 亚洲免费av高清| 国产精品久久久久桃色tv| 久久久精品tv| 久久女同精品一区二区| 欧美大白屁股肥臀xxxxxx| 69久久夜色精品国产69蝌蚪网| 91成人免费网站| 91久久免费观看| 日本国产一区二区| 欧洲精品在线观看| 欧美日韩综合在线| 欧美怡红院视频| 欧美无砖砖区免费| 欧美色综合网站| 欧美日韩精品欧美日韩精品一综合| 91美女精品福利| 日本韩国欧美在线| 欧美日韩中文另类| 欧美人妇做爰xxxⅹ性高电影| 欧美日韩精品一区二区三区四区| 欧美高清视频不卡网| 91精品久久久久久久久99蜜臂| 欧美麻豆精品久久久久久| 制服丝袜日韩国产| 精品国精品国产尤物美女| 久久综合色综合88| 自拍偷自拍亚洲精品播放| 玉米视频成人免费看| 天天亚洲美女在线视频| 麻豆91精品91久久久的内涵| 国产精品888| 91亚洲大成网污www| 777a∨成人精品桃花网| 2022国产精品视频| 中文字幕在线视频一区| 亚洲一区二区三区视频在线| 日日骚欧美日韩| 国产经典欧美精品| 在线亚洲一区二区| 欧美一级免费观看| 国产欧美中文在线| 一区二区三区资源| 美女脱光内衣内裤视频久久网站| 岛国一区二区在线观看| 在线免费观看日韩欧美| 日韩欧美美女一区二区三区| 国产精品美女久久久久久久久久久| 中文字幕字幕中文在线中不卡视频| 亚洲国产精品久久久久秋霞影院| 麻豆精品视频在线| 99精品一区二区| 日韩欧美一区二区免费| 亚洲视频综合在线| 日本视频在线一区| 国产成人av影院| 欧美精品黑人性xxxx| 国产亚洲成aⅴ人片在线观看| 亚洲欧美日韩成人高清在线一区| 日韩成人精品在线观看| av日韩在线网站| 欧美精品一区二区高清在线观看 | 色8久久精品久久久久久蜜| 日韩亚洲欧美综合| 亚洲欧美欧美一区二区三区| 蜜臀久久99精品久久久久宅男| av午夜精品一区二区三区| 亚洲精品一区二区三区福利 | 欧美精品乱人伦久久久久久| 国产精品美女久久久久久2018| 免费人成在线不卡| 欧美在线观看一区| 国产精品久久久久影院色老大| 美女久久久精品| 在线亚洲一区二区| 国产精品初高中害羞小美女文| 狠狠色丁香久久婷婷综合_中| 91福利精品视频| 国产精品色一区二区三区| 日韩精品亚洲专区| 欧美最猛性xxxxx直播| 国产精品私人自拍| 国产精品一区二区三区乱码| 精品少妇一区二区三区免费观看 | 亚洲sss视频在线视频| 91浏览器打开| 国产精品国产馆在线真实露脸| 狠狠色狠狠色综合| 欧美精品一区二| 国产乱理伦片在线观看夜一区| 日韩欧美在线123| 精品午夜一区二区三区在线观看| 777午夜精品免费视频| 午夜精品久久久久久久99水蜜桃| 欧美在线观看一区二区| 亚洲第一搞黄网站| 欧美日韩高清不卡| 亚洲午夜精品在线| 欧美群妇大交群中文字幕| 亚洲国产精品久久艾草纯爱| 欧美婷婷六月丁香综合色|