Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/e1000/e1000_80003es2lan.c
Show First 20 Lines • Show All 845 Lines • ▼ Show 20 Lines | static s32 e1000_reset_hw_80003es2lan(struct e1000_hw *hw) | ||||
if (ret_val) | if (ret_val) | ||||
return ret_val; | return ret_val; | ||||
DEBUGOUT("Issuing a global reset to MAC\n"); | DEBUGOUT("Issuing a global reset to MAC\n"); | ||||
E1000_WRITE_REG(hw, E1000_CTRL, ctrl | E1000_CTRL_RST); | E1000_WRITE_REG(hw, E1000_CTRL, ctrl | E1000_CTRL_RST); | ||||
e1000_release_phy_80003es2lan(hw); | e1000_release_phy_80003es2lan(hw); | ||||
/* Disable IBIST slave mode (far-end loopback) */ | /* Disable IBIST slave mode (far-end loopback) */ | ||||
e1000_read_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM, | ret_val = e1000_read_kmrn_reg_80003es2lan(hw, | ||||
&kum_reg_data); | E1000_KMRNCTRLSTA_INBAND_PARAM, &kum_reg_data); | ||||
if (!ret_val) { | |||||
kum_reg_data |= E1000_KMRNCTRLSTA_IBIST_DISABLE; | kum_reg_data |= E1000_KMRNCTRLSTA_IBIST_DISABLE; | ||||
e1000_write_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM, | ret_val = e1000_write_kmrn_reg_80003es2lan(hw, | ||||
E1000_KMRNCTRLSTA_INBAND_PARAM, | |||||
kum_reg_data); | kum_reg_data); | ||||
if (ret_val) | |||||
DEBUGOUT("Error disabling far-end loopback\n"); | |||||
} else | |||||
DEBUGOUT("Error disabling far-end loopback\n"); | |||||
ret_val = e1000_get_auto_rd_done_generic(hw); | ret_val = e1000_get_auto_rd_done_generic(hw); | ||||
if (ret_val) | if (ret_val) | ||||
/* We don't want to continue accessing MAC registers. */ | /* We don't want to continue accessing MAC registers. */ | ||||
return ret_val; | return ret_val; | ||||
/* Clear any pending interrupt events. */ | /* Clear any pending interrupt events. */ | ||||
E1000_WRITE_REG(hw, E1000_IMC, 0xffffffff); | E1000_WRITE_REG(hw, E1000_IMC, 0xffffffff); | ||||
Show All 39 Lines | for (i = 0; i < mac->mta_reg_count; i++) | ||||
E1000_WRITE_REG_ARRAY(hw, E1000_MTA, i, 0); | E1000_WRITE_REG_ARRAY(hw, E1000_MTA, i, 0); | ||||
/* Setup link and flow control */ | /* Setup link and flow control */ | ||||
ret_val = mac->ops.setup_link(hw); | ret_val = mac->ops.setup_link(hw); | ||||
if (ret_val) | if (ret_val) | ||||
return ret_val; | return ret_val; | ||||
/* Disable IBIST slave mode (far-end loopback) */ | /* Disable IBIST slave mode (far-end loopback) */ | ||||
ret_val = | |||||
e1000_read_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM, | e1000_read_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM, | ||||
&kum_reg_data); | &kum_reg_data); | ||||
if (!ret_val) { | |||||
kum_reg_data |= E1000_KMRNCTRLSTA_IBIST_DISABLE; | kum_reg_data |= E1000_KMRNCTRLSTA_IBIST_DISABLE; | ||||
e1000_write_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM, | ret_val = e1000_write_kmrn_reg_80003es2lan(hw, | ||||
E1000_KMRNCTRLSTA_INBAND_PARAM, | |||||
kum_reg_data); | kum_reg_data); | ||||
if (ret_val) | |||||
DEBUGOUT("Error disabling far-end loopback\n"); | |||||
} else | |||||
DEBUGOUT("Error disabling far-end loopback\n"); | |||||
/* Set the transmit descriptor write-back policy */ | /* Set the transmit descriptor write-back policy */ | ||||
reg_data = E1000_READ_REG(hw, E1000_TXDCTL(0)); | reg_data = E1000_READ_REG(hw, E1000_TXDCTL(0)); | ||||
reg_data = ((reg_data & ~E1000_TXDCTL_WTHRESH) | | reg_data = ((reg_data & ~E1000_TXDCTL_WTHRESH) | | ||||
E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC); | E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC); | ||||
E1000_WRITE_REG(hw, E1000_TXDCTL(0), reg_data); | E1000_WRITE_REG(hw, E1000_TXDCTL(0), reg_data); | ||||
/* ...for both queues. */ | /* ...for both queues. */ | ||||
▲ Show 20 Lines • Show All 587 Lines • Show Last 20 Lines |