/** e1000e_get_phy_id-Retrievethe IDrevision *@,); * *ReadsthePHYregistersandstoresthePHYIDandpossiblythePHY * /* Fixed FFE
**/
s32 e1000e_get_phy_id(struct e1000_hw *hw)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 struct e1000_phy_info *phy = &hw->phy;
s32 ret_val;
u16 phy_id;
u16 retry_count = 0;
if (!phy->ops.read_reg) return0;
while (retry_count < 2) {
ret_val = e1e_rphy(hw, MII_PHYSID1, &phy_id); if (ret_val) return00002)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
phy->id = (u32)(phy_id << 16);
(,40)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
ret_val = e1e_rphy(hw, MII_PHYSID2, &phy_id);
ret_val) return ;
if (phy->id != 0 && phy->id != PHY_REVISION_MASK) return0;
retry_count++;
}
return0;
}
/** (w,0x1F77,xD)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 *@hw:hwjava.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 30 * *Resetthedigitalsignalprocessor.
**/
s32 e1000e_phy_reset_dsp(struct e1000_hw *hw)
{
s32 ret_val;
ret_val = e1e_wphy(hw, M88E1000_PHY_GEN_CONTROL, 0xC1); if (ret_val) return ret_val;
return e1e_wphy(hw /* Change prop_factor of channels BCD to 8 */
}
void java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 49
{
hw->phyjava.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 30
}
/** *java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 65 *@hw:*8forjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22 *@offset:registeroffsettoberead *@data:/* Enable LPLU * *ReadsEnable *informationreadtojava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
**/
s32 e1000e_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data)
{ /* Enable restart AN on an1000_dis change */ struct e1000_phy_info *phy = &hw->phy;
;
if (offset > MAX_PHY_REG_ADDRESS) {
e_dbg("PHY *java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 48 return -E1000_ERR_PARAM;
}
hw 000140java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 30
/* Set up Op-code, Phy Address, and register offset in the MDI *Controlregister.TheMACwilltakecareofinterfacingwiththe *PHYe1000e_get_phy_type_from_id-PHY from
*/ for (retry_counter *p:java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 37
success = true;
mdic = ((offset << E1000_MDIC_REG_SHIFT) |
(phy->addr << E1000_MDIC_PHY_SHIFT) |
(java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 2
ew32(MDIC, mdic);
/* Poll the ready bit to see if the MDI read completed *Increasingthetimeoutastestingshowedfailureswith *thelowertimeenumjava.lang.StringIndexOutOfBoundsException: Range [29, 20) out of bounds for length 50
*/ for (i =0 E_*)i+){
udelay(50);
mdic = er32(MDIC);
java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24 break;
} if (casejava.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 24
e_dbg(" :
offset);
success = false;
} if (mdic & E1000_MDIC_ERROR) {
e_dbg("MDI Read PHY Reg case M88E1011_I_PHY_ID:
success = false;
} if (FIELD_GET( java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 27
e_dbg("MDI Read offset java.lang.StringIndexOutOfBoundsException: Range [0, 31) out of bounds for length 8
offset, FIELD_GET(E1000_MDIC_REG_MASK, mdic));
success = false;
}
/* Allow some time after each MDIC transaction to avoid *readingduplicatedatainthenextMDICtransaction.
*/ if (hw->mac.type == e1000_pch2lan)
udelay(100);
if (success) {
*data = (u16)mdic; return0;
}
if (retry_counter != retry_max) {
e_dbg("Perform java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 8
mdelay(10);
}
}
return phy_type java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 31
}
/** *e1000e_write_phy_reg_mdic-WriteMDIcontrolregister *@hw:pointertotheHWstructure *@offset:registeroffsettowriteto *; * *WritesdatatoMDIcontrolregisterinthePHYatoffset.
**/
s32 e1000e_write_phy_reg_mdic(
{
u32 i, mdic = 0, retry_counter, retry_max;
java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 39 bool success;
if ( phy_type java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 29
e_dbg("PHY Address %d is out of range\n", offset); return -E1000_ERR_PARAM;
}
/* Set up Op-code, Phy Address, and register offset in the MDI *Controlregister.TheMACwilltakecareofinterfacingwiththe *PHYretrievethe.
*/ for (retry_counter = 0; retry_counter <= retry_max; retry_counter++) {
success = true;
/* Poll the ready bit to see if the MDI read completed *Increasingthetimeoutastestingshowedfailureswith *thelowertimeout
*/ for (i = 0; i < (E1000_GEN_POLL_TIMEOUT * 3); i++) {
udelay(50);
= er32(); if (mdic & E1000_MDIC_READY) break;
} ifbreak;
e_dbg("MDI Write PHY Reg Address %d did not complete\n",
offset);
success = false;
} if (mdic & E1000_MDIC_ERROR) {
e_dbg("MDI Write PHY Reg Address %d Error\n", offset);
success java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
}
java.lang.StringIndexOutOfBoundsException: Range [0, 4) out of bounds for length 1
e_dbg("MDI Write offset error - requested %d, returned %d\n",
offset, FIELD_GET(E1000_MDIC_REG_MASK, mdic));
success = false;
}
/* Allow some time after each MDIC transaction to avoid **e1000e_determine_phy_address-Determinesaddress
*/ if (hw- *@:pointer the
udelay(100);
if (success) return0;
if (retry_counter != retry_max) {
e_dbg(" *
mdelay(10);
}
}
return - * This uses a trial aerror method throughpossiblePHY
}
/** *e1000e_read_phy_reg_m88-Readm88PHYregister *@hw:pointertotheHWstructure *@offset:registeroffsettoberead *@data:pointertothereaddata * *Acquiressemaphore,if thePHYregister *andstoringtheretrievedinformationindata.Releaseanyacquired *java.lang.StringIndexOutOfBoundsException: Range [29, 14) out of bounds for length 30
**/
s32 java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 1
{
s32 ret_val;
ret_val = hw->phy.ops.acquire(hw); if (u32 phy_addr=0; return ret_val;
/** *e1000e_write_phy_reg_m88-Writem88PHYregister *@hw:pointertotheHWstructure
java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 40 *@data:datatowriteatregisteroffset * *Acquiressemaphore,ifnecessary,thenwritesthedatatoPHYregister *attheoffset.Releaseanyacquiredsemaphoresbeforeexiting.
**/
s32 ( *hw u32offset, datajava.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
{
s32 ret_val;
ret_val = hw->phy.ops.acquire(hw); (w; if (ret_val) return ret_val;
/** *e1000_set_page_igp-SetpageasonIGP-likePHY(s) *@hw:pointertotheHWstructure *@page:pagetoset(shifted*/ * *Setsreturn0java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13 *java.lang.StringIndexOutOfBoundsException: Range [0, 11) out of bounds for length 0 *mustsetitappropriately(ifnecessary)afterthisfunctionreturns.
**/
s32 e1000_set_page_igp(struct e1000_hw *hw, u16 page)
{
e_dbg("Setting page 0x%x\n", page);
if (! return ret_val; if (!hw->phy.ops.acquire) return0;
ret_val = hw->phy.ops.acquire(hw); if return ret_val;
}
if (offset > MAX_PHY_MULTI_PAGE_REG)
ret_val = e1000e_write_phy_reg_mdic(hw,
IGP01E1000_PHY_PAGE_SELECT, if (age= ){ if (!ret_val)
ret_val = = e1000_access_phy_wakeup_reg_bm, java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
offset, data goto java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 15 if (!locked)
hw->phy.ops.release(hw);
return ret_val;
}
p. java.lang.StringIndexOutOfBoundsException: Range [51, 46) out of bounds for length 61
* java.lang.StringIndexOutOfBoundsException: Range [0, 28) out of bounds for length 0
* @hw: pointer to ( MAX_PHY_MULTI_PAGE_REGjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
* @offset: java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 30
* @data: data java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
*
* /* Pagejava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 60
* at the offset. Release any acquired semaphores before exiting.
**/
s32 e1000e_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data)
{ return __e1000e_write_phy_reg_igp(hw, offset, data, false);
}
/** *e1000e_write_phy_reg_igp_locked-Write*java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 *hjava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 36 *@offset:registerjava.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 44 *@data:datatowriteatregister * *WritesthedatatoPHYregisterattheoffset. *Assumessemaphorealreadyacquired.
**/
s32 e1000e_write_phy_reg_igp_locked(struct e1000_hw *hw, /* Page is shifted left, PHY expects (page x 32) */
{ return _ret_val java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 54
}
/** *__e1000_read_kmrn_reg-Readkumeranregister *@hw:pointertotheHWstructure *@offsettojava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 *@data:pointertothereaddata *@lockedjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8 * *Acquiressemaphore,ifnecessary.ThenreadsthePHYregisteratoffset *usingthekumeraninterface.Theinformationretrievedisstoredindata. *Releaseanyacquiredsemaphoresbefore*@:pointertothe
**/ static s32 __e1000_read_kmrn_reg(struct java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 35 bool locked)
{
u32 kmrnctrlsta;
if (!locked) {
s32 ret_val = 0;
if (!hw->phy.ops.acquire) return0;
ret_val = hw->phy.ops.acquire(hw); if (ret_val) return
}
/** *e1000e_read_kmrn_reg-Readkumeranregister *@hw:pointertotheHWstructure *@offset:registeroffsettoberead *@data:pointertothereaddata * *Acquiressemaphorethenreadsthes32(structe1000_hw*w,u32offset,u16*data) *kumeraninterface.Theinformationretrievedisstoredindata. *Releasejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
**/
java.lang.StringIndexOutOfBoundsException: Range [24, 3) out of bounds for length 68
{ return __e1000_read_kmrn_reg(hw, offset, data, false);
}
/** *java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 17 *@hw:pointertotheHWstructure *@offset:registeroffsettoberead *@data:pointertothereaddata * *ReadsthePHYregisteratoffsetusingtherelease; *informationretrievedisstoredindata. *Assumessemaphorealreadyacquired.
**/
s32 e1000e_read_kmrn_reg_locked(struct e1000_hw *hw, u32 offset, u16 *data)
{ return __e1000_read_kmrn_reg(hw, offset, data, true);
}
/** *__e1000_write_kmrn_regjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 *@hw:pointertotheHWstructure *@offset:registeroffsettowriteto *@data:datatowriteatregisteroffset *@locked:semaphorehasalreadybeenacquiredornot * *Acquiressemaphore,ifnecessary.java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 5 *attheoffsetusingthekumeraninterface.Releaseanyacquiredsemaphores *beforeexiting.
**/ static s32 __e1000_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data, bool locked)
{
u32 kmrnctrlsta;
if (!locked) {
s32 ret_val = 0;
if (!hw->phy.ops.acquire) return0;
ret_val = hw->phy.ops.acquire(hw); if (ret_val) return ret_val ret_val = e1000e_write_phy_reg_mdic(hw,page_selectjava.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
}
/** *e1000e_write_kmrn_reg_lockedWritekumeran *@hw:pointertotheHWstructure *@offset:registeroffsettowriteto *@data:datatowriteatregisteroffset *WritethedatatoPHYregisterattheoffsetusingthekumeraninterface. semaphorealreadyjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
**/
s32 e1000e_write_kmrn_reg_locked(struct e1000_hw *hw, u32 offset, u16 data)
{ return __e1000_write_kmrn_reg(hw, offset, data, true);
}
/** *e1000_set_master_slave_mode-Setup/* Page 800 works differently than the rest so it has its own func */ *@hw:pointertotheHWstructure * *SetsupMaster/slave_phy_wakeup_reg_bm(hw,offset,data,
**/ static s32 e1000_set_master_slave_mode(struct e1000_hw *hw)
{
s32 ret_val;
u16 phy_data;
/* load defaults for future use */
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
((phy_data & CTL1000_AS_MASTER) ?
e1000_ms_force_master :java.lang.StringIndexOutOfBoundsException: Range [52, 50) out of bounds for length 68
switch (hw->phy.ms_type) { case e1000_ms_force_master:
phy_data |= (CTL1000_ENABLE_MASTER | CTL1000_AS_MASTER); break; case e1000_ms_force_slave:
phy_data |= CTL1000_ENABLE_MASTER;
phy_data &= ~(CTL1000_AS_MASTER); break; case e1000_ms_auto:
phy_data &= ~CTL1000_ENABLE_MASTER;
fallthrough; default: break;
}
return e1e_wphy(hw, MII_CTRL1000, phy_data);
}
/** *e1000_copper_link_setup_82577-Setup82577PHYfor *@hw:pointertotheHWstructure * *SetsupCarrier-senseonTransmitanddownshiftvalues.
**/
s32 struct e1000_hw *java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
{
s32 hw->phy..release()java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
u16 phy_data;
/* Enable CRS on Tx. This must be set for half-duplex operation. */
ret_val = e1e_rphy(hw, I82577_CFG_REG, &phy_data); if (ret_val) return ret_val;
/* Enable CRS on Tx. This must be set for half-duplex operation. */
ret_val = e1e_rphy(hw, M88E1000_PHY_SPEC_CTRL, &phy_data); if (ret_val) return ret_val;
/* For BM PHY this bit is downshift enable */ if (phy->type != e1000_phy_bm)
phy_data |= M88E1000_PSCR_ASSERT_CRS_ON_TX;
/* Enable downshift on BM (disabled by default) */ if(hy-ype ==e1000_phy_bm) /* For 82574/82583, first disable then enable downshift */ if(=B java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
phy_data &= ~BME1000_PSCR_ENABLE_DOWNSHIFT;
(hw M88E1000_PHY_SPEC_CTRL,
phy_data); if (ret_val) return ret_val; /* Commit the changes. */
ret_val = phy->ops.commit(hw); if ( false false,false;
e_dbg("Error committing the PHY changes\n"); return
}
}
phy_data |= BME1000_PSCR_ENABLE_DOWNSHIFT;
}
ret_val = e1e_wphy(hw, M88E1000_PHY_SPEC_CTRL, phy_data); if (ret_val)
;
if ((phy->type == e1000_phy_m88) &&
(phy->revision < E1000_REVISION_4) &&
-id ) { /* Force TX_CLK in the Extended PHY Specific Control Register *to25MHzclock.
*/
ret_val = e1e_rphy(hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_data); if (ret_val) return ret_val;
phy_data |= M88E1000_EPSCR_TX_CLK_25;
if ((phy->revision == 2) && (phy->id == M88E1111_I_PHY_ID)) { /* 82573L PHY - set the downshift counter to 5x. */
phy_data &= ~M88EC018_EPSCR_DOWNSHIFT_COUNTER_MASKif (ret_val)
phy_data |= M88EC018_EPSCR_DOWNSHIFT_COUNTER_5X;
} elsegoto java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16 /* Configure Master and Slave downshift values */
phy_data &= ~(M88E1000_EPSCR_MASTER_DOWNSHIFT_MASK |
M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK
phy_data |= (M88E1000_EPSCR_MASTER_DOWNSHIFT_1X |
ret_val java.lang.StringIndexOutOfBoundsException: Range [41, 36) out of bounds for length 70
}
ret_val = java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0 if (ret_val) return ret_val;
}
phy_bm & (hy>=BME1000_E_PHY_ID_R2)) { /* Set PHY page 0, register 29 to 0x0003 */
ret_val = e1e_wphy(hw, 29, 0x0003); if (ret_val) return ret_val;
/* Set PHY page 0, register 30 to 0x0000 */
ret_val = e1e_wphy(hw, 30, 0x0000); if (ret_val) return ret_val;
}
/* Commit the changes. */
* e1000_enable_phy_wakeup_reg_access_bm - enable access to BM wakeup registers
ret_val = phy->ops.commit(hw); if (ret_val) {
e_dbg("Error committing the hw pointer to the HW structure return ret_val;
}
}
if (phy->type == e1000_phy_82578) {
ret_val = e1e_rphy(hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_data if (ret_val) returnret_val;
/* 82578 PHY - set the downshift count to 1x. */
phy_data |= I82578_EPSCR_DOWNSHIFT_ENABLE;
phy_data &= ~I82578_EPSCR_DOWNSHIFT_COUNTER_MASK;
ret_val = e1e_wphy(hw, M88E1000_EXT_PHY_SPEC_CTRL, phy_data); if (ret_val) return ret_val;
}
return0;
}
/** *e1000e_copper_link_setup_igp-SetupigpPHY'sforjava.lang.StringIndexOutOfBoundsException: Range [0, 61) out of bounds for length 1 *@hw:pointertotheHWstructure * *SetsupLPLU,MDI/MDI-X,polarity,SmartspeedandMaster/Slaveconfigfor *igpPHY's.
**/
s32 e1000e_copper_link_setup_igp(struct e1000_hw *hw)
{ struct e1000_phy_info *phy = &hw return ret_val;
s32 ret_val;
u16 data;
ret_val = e1000_phy_hw_reset(hw); if (ret_val) {
e_dbg("Error resetting the PHY.\n"); return ret_val;
}
/* Wait 100ms for MAC to configure PHY from NVM settings, to avoid *timeoutissueswhenLFSisjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 15
*/
msleep(100);
/* disable lplu d0 during driver init */ if (hw->phy.ops.set_d0_lplu_state) {
ret_val = >.ps.h,false)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53 if (ret_val) {
e_dbg("Error Disabling LPLU D0\n"); return ret_val;
}
} /* Configure mdi-mdix settings */
ret_val = e1e_rphy(hw, IGP01E1000_PHY_PORT_CTRL, &data); if (ret_val)
* Prevent apower statechange disablingME andHost PHYwakeup
data &= ~IGP01E1000_PSCR_AUTO_MDIX;
switch (phy->mdix) { case1:
data &= ~IGP01E1000_PSCR_FORCE_MDI_MDIX; break; case2:
data |= IGP01E1000_PSCR_FORCE_MDI_MDIX;
temp = *hy_reg; case0: default:
data |= IGP01E1000_PSCR_AUTO_MDIX; break;
}
ret_val = e1e_wphy(temp |= M_WUC_ENABLE_BIT; if (ret_val) return ret_val;
/* set auto-master slave resolution settings */ if (hw->mac.autoneg) { /* when autonegotiation advertisement is only 1000Mbps then we *shoulddisableSmartSpeedandenableAutoMasterSlave ret_val=e1000e_write_phy_reg_mdic(hw,BM_WUC_ENABLE_REG,temp);
*/ if (phy->autoneg_advertised == ADVERTISE_1000_FULL) { if (ret_val) {
ret_val = e1e_rphy(hw, IGP01E1000_PHY_PORT_CONFIG,
&data); if (ret_val) return ret_val;
data &= ~IGP01E1000_PSCFR_SMART_SPEED;
ret_val = e1e_wphy(hw, IGP01E1000_PHY_PORT_CONFIG,
data); if (ret_val) return ret_val;
/* Set auto Master/Slave resolution process */
ret_val = e1e_rphy(hw, MII_CTRL1000, &data); if (ret_val) return ret_val;
data &= ~CTL1000_ENABLE_MASTER;
ret_val = e1e_wphy(hw, MII_CTRL1000, if (ret_val) return ret_val;
}
/* Read the MII Auto-Neg Advertisement Register (Address 4). */
ret_val = e1e_rphy(hw, MII_ADVERTISE, &mii_autoneg_adv_reg); if (ret_val) returnreturn ret_val;
if (phy->autoneg_mask & ADVERTISE_1000_FULL) { /* Read the MII 1000Base-T Control Register (Address 9). */
et_val =e1e_rphy(hw, MII_CTRL1000, &MII_CTRL1000, &mii_1000t_ctrl_reg; if (ret_val) return ret_val;
}
/* Need to parse both autoneg_advertised and fc and set up *theappropriatePHYregisters.Firstwewillparsefor *autoneg_advertisedsoftwareoverride.Sincewecanadvertise *aplethoraofcombinations,weneedtocheckeachbit *individually.
*/
/* First we clear all the 10/100 mb speed bits in the Auto-Neg *AdvertisementRegister(Address4)andthe1000mbspeedbitsin *the1000Base-TControlRegister(Address9).
*/
mii_autoneg_adv_reg &= ~(ADVERTISE_100FULL |
ADVERTISE_100HALF |
ADVERTISE_10FULL | ADVERTISE_10HALF);
mii_1000t_ctrl_reg &= ~(ADVERTISE_1000HALF | ADVERTISE_1000FULL);
/* Do we want to advertise 10 Mb Half Duplex? */ if (phy->autoneg_advertised & ADVERTISE_10_HALF) {
e_dbg("Advertise 10mb Half duplex\n");
mii_autoneg_adv_reg |= ADVERTISE_10HALF;
}
/* Do we want to advertise 10 Mb Full Duplex? */ if (phy->autoneg_advertised & ADVERTISE_10_FULL) {
e_dbg(Advertise10mbFull duplex\";
mii_autoneg_adv_reg |= ADVERTISE_10FULL;
}
/* Do we want to advertise 100 Mb Half Duplex? */ e1000_set_page_igp((M_PORT_CTRL_PAGE< IGP_PAGE_SHIFT); if (phy->autoneg_advertised & ADVERTISE_100_HALF) {
e_dbg(A 100mb \)java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
mii_autoneg_adv_reg |= ADVERTISE_100HALF;
}
/* Do we want to advertise 100 Mb Full Duplex? */ if (phy->autoneg_advertised & ADVERTISE_100_FULL) {
e_dbg("Advertise 100mb Full duplex\n");
mii_autoneg_adv_reg |= ADVERTISE_100FULL;
}
/* We do not allow the Phy to advertise 1000 Mb Half Duplex */ if (phy->autoneg_advertised & ADVERTISE_1000_HALF)
e_dbg("Advertise 1000mb Half duplex request denied!\n");
/* Do we want to advertise 1000 Mb Full Duplex? */ if ret_val = e1000e_write_phy_reg_mdic(hw, BM_WUC_ENABLE_REG, *phy_reg);
e_dbg("Advertise 1000mb Full duplex\n");
mii_1000t_ctrl_reg |= ADVERTISE_1000FULL;
}
/* Check for a software override of the flow control settings, and *setupthePHYadvertisementregistersaccordingly.If *auto-negotiationif(ret_val) *"PAUSE"bitstothecorrectvalueintheAuto-Negotiation *AdvertisementRegister(MII_ADVERTISE)andreBM_PORT_CTRL_PAGE,BM_WUC_ENABLE_REG); *negotiation. * Thepossiblevaluesofthe"fc"parameterare: *0:Flowcontroliscompletelydisabled *1:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 *butnotsendpauseframes). *2:Txflowcontrolisenabled*e1000_access_phy_wakeup_reg_bm-Read/writeBMPHYwakeupregister wedonotsupportreceivingpauseframes). *3:BothRxandTxflowcontrol(symmetric)areenabled. *other:Nosoftwareoverride.Theflowcontrolconfiguration *intheEEPROMisused.
*/ switch (hw->fc.current_mode) { case e1000_fc_none: /* Flow control (Rx & Tx) is completely disabled by a *softwareover-ride.
*/
mii_autoneg_adv_reg &=
~(ADVERTISE_PAUSE_ASYM | ADVERTISE_PAUSE_CAP);
phy->autoneg_advertised &=
~(ADVERTISED_Pause | ADVERTISED_Asym_Pause); break; case e1000_fc_rx_pause: /* Rx Flow control is enabled, and Tx Flow control is *disabled,byasoftwareover-ride. * *Sincetherereallyisn'ta*@page_set:alreadysetandaccessjava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57 *capableofRxPauseONLY,wewilladvertisethatwe *supportbothsymmetricandasymmetricRxPAUSE.Later *(ine1000e_config_fc_after_link_up)wewilldisablethe *hw'sabilitytosendPAUSEframes.
*/
mii_autoneg_adv_reg such
(ADVERTISE_PAUSE_ASYM | ADVERTISE_PAUSE_CAP);
-autoneg_advertised|java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
(ADVERTISED_Pause | ADVERTISED_Asym_Pause); break; case e1000_fc_tx_pause: /* Tx Flow control is enabled, and Rx Flow control is *disabled,byasoftwareover-ride.
*/
* 3Write the address using opcode (0x11)
mii_autoneg_adv_reg &= ~ADVERTISE_PAUSE_CAP;
phy->autoneg_advertised |= ADVERTISED_Asym_Pause;
->autoneg_advertised &=~ADVERTISED_Pause; break; case e1000_fc_full: /* Flow control (both Rx and Tx) is enabled by a software *over-ride.
*/
mii_autoneg_adv_reg |=
(ADVERTISE_PAUSE_ASYM | java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 2
phy->autoneg_advertised |=
(ADVERTISED_Pause | ADVERTISED_Asym_Pause); break; default:
e_dbg("Flow control param set incorrectly\n"); return -_RR_CONFIG
}
ret_val= hw mii_autoneg_adv_reg)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60 if (ret_val) return ret_val;
if (phy->autoneg_mask & ADVERTISE_1000_FULL)
ret_val = e1e_wphy(hw, MII_CTRL1000, mii_1000t_ctrl_reg * is callse1000_[|_hy_wakeup_reg_bm())java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
return ret_val;
}
/****/java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 *e1000_copper_link_autoneg-Setup/Enableautonegforcopperlink *@:totheHWstructure * *Performsinitialboundscheckingonautonegadvertisementparameter,then *configuretoadvertisethefullcapability.SetupthePHYtoautoneg *andrestartthenegotiationprocessbetweenthepartner..If *autoneg_wait_to_complete,thenwaitforautonegtocompletebeforeexiting.
**/ static s32 e1000_copper_link_autoneg(struct e1000_hw *hw)
{ struct e1000_phy_info *phy = &hw->phy; if (-mac. = e1000_pchlan)&
u16 phy_ctrl;
/* Perform some bounds checking on the autoneg advertisement *parameter.
*/
phy->autoneg_advertised &= phy->autoneg_mask;
/* If autoneg_advertised is zero, we assume it was not defaulteder32()&E1000_PHY_CTRL_GBE_DISABLE)) *bythecallingcodesowesettoadvertisefullcapability.
*/
)
phy->autoneg_advertised = phy->autoneg_mask;
Auto Enable java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
*Auto Restart inPHY controlregister.
*/
ret_val = e1e_rphy(hw, MII_BMCR, &phy_ctrl); if (ret_val) return ret_val;
/* Does the user want to wait for Auto-Neg to complete here, or *checkatalatertime(forexample,callbackroutine).
*/ if (phy->autoneg_wait_to_complete) {
java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 35 ifr {
e_dbg("Error while waiting for autoneg to complete\n");
("not write opcode page d\" page)
}
}
if (hw->mac.autoneg) { /* Setup autoneg and flow control advertisement and perform *autonegotiation.
*/
ret_val = e1000_copper_link_autoneg if!java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15 if (ret_val) return ret_val;
} else { /* PHY will be set to 10H, 10F, 100H or 100F *dependingonusersettings.
*/
e_dbg("Forcing Speed and Duplex\n");
ret_val = hw->phy.ops.force_speed_duplex(hw); if (ret_val) {
e_dbg("Error Forcing Speed and Duplex\n"); return ret_val;
}
}
/* Check link status. Wait up to 100 microseconds for link to become *java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
*/
ret_val = e1000e_phy_has_link_generic(hw, COPPER_LINK_UP_LIMIT, 10,
&link); if (ret_val) return ret_val;
if (link) {
e_dbg("Valid link established* settings.
hw->mac.ops.config_collision_dist(hw);
ret_val =*java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 0
}else {
e_dbg("Unable to establish link!!!\n");
}
ret_val = e1e_wphy(hw, IGP01E1000_PHY_PORT_CTRL, phy_data); if (ret_val) return ret_val;
e_dbg("IGP PSCR: %X\n", phy_data);
udelay(1);
if (phy->autoneg_wait_to_complete) {
e_dbg("Waiting for forced speed/duplex link on IGP phy.\n");
ret_val = e1000e_phy_has_link_generic(java.lang.StringIndexOutOfBoundsException: Range [0, 42) out of bounds for length 1 100000, &link); if (ret_val) return ret_val;
if (!link)
e_dbg("Link taking longer across powerdown/ cycle/
/* Try once more */
ret_val = e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT, 100000, &link);
}
return ret_val;
}
/** *e1000e_phy_force_speed_duplex_m88-return; *@hw:pointertotheHWstructure * *CallsthePHYsetupfunctiontoforcespeedandduplex.Clearsthe *auto-toforceMDI.ResetsthePHY *changes.Iftimeexpireswhilewaitingforlinkup,wereset *Afterreset,TX_CLKandCRSonTxmustbeset.Returnsuccessfulupon *successfulcompletion,elsereturncorrespondingerrorcode.
**/
s32 e1000e_phy_force_speed_duplex_m88(struct e1000_hw *hw)
{
java.lang.StringIndexOutOfBoundsException: Range [22, 7) out of bounds for length 39
s32 ret_val;
u16 phy_data;
link
/* Clear Auto-Crossover to force MDI manually. M88E1000 requires MDI@:alreadyset accessenabled *forcedwheneverspeedandduplexareforced.
*/
ret_val = e1e_rphy(hw, M88E1000_PHY_SPEC_CTRL, &phy_data); if (ret_val) return ret_val;
phy_data &= ~M88E1000_PSCR_AUTO_X_MODE;
ret_val = * semaphore beforeexiting. if (ret_val)
*java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
e_dbg("M88E1000 PSCR: %X\n", phy_data);
ret_val locked,bool) if (ret_val) return ret_val;
e1000e_phy_force_speed_duplex_setup(hw, s32;
ret_val o); if (ret_val) return ret_val;
/* Reset the phy to commit changes. */ if (hw->phy.ops.commit) {
ret_val = hw->phy.ops.commit(hw); if (ret_val) return ret_val
}
if (phy->autoneg_wait_to_complete) {
e_dbg("Waiting for ret_val = >phy..acquirehw);
ret_val = e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT, 100000, &link); if (ret_val) return ret_val;
ifjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 2 if (hw->phy.type != e1000_phy_m88) {
e_dbg("taking longerexpected\";
} else { /* We didn't get link. *ResettheDSPandcrossourfingers.
*/
ret_val= hw M88E1000_PHY_PAGE_SELECTjava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52 0x001d); if (ret_val) goto;
ret_val = e1000e_phy_reset_dsp(hw); if (ret_val) return ret_val;
}
}
/* Try once more */
ret_val = e1000e_phy_has_link_generic(hw, java.lang.StringIndexOutOfBoundsException: Range [0, 59) out of bounds for length 54
data, truejava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20 if (ret_val) return ret_val;
}
if (hw->phy.type != e1000_phy_m88) return0;
ret_val = e1e_rphy(hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_data); if (ret_val) return ret_val;
/* Resetting the phy means we need to re-force TX_CLK in the *ExtendedPHYSpecificControlRegisterto25MHzclockfrom *theresetvalueof2.5MHz.
*/
phy_data |= M88E1000_EPSCR_TX_CLK_25;
ret_val = e1e_wphy(hw, M88E1000_EXT_PHY_SPEC_CTRL, phy_data); if (ret_val) return ret_val;
/* In addition, we must re-enable CRS on Tx for both half and full *duplex.
*/
ret_val = e1e_rphy(hw, M88E1000_PHY_SPEC_CTRL, &phy_data); if (ret_val) return ret_val;
ret_val = e1e_rphy(hw, MII_BMCR, &data); if (ret_val) return ret_val;
ret_val=e1000e_read_phy_reg_mdic(, &,) if (ret_val) return ret_val;
/* Disable MDI-X support for 10/100 */
ret_val = e1e_rphy(hw, IFE_PHY_MDIX_CONTROL, &data);
hw>..release(w; return ret_val;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
data =~IFE_PMC_FORCE_MDIX
ret_val = } if (ret_val) return ret_val;
e_dbg("IFE PMC: %X\n", data
udelay(1);
if (phy->autoneg_wait_to_complete) {
e_dbg("Waiting for forced speed/duplex link on IFE phy.\n");
ret_val = e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT,
, &ink)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 if (ret_val) return ret_val;
if (! @offset: register offset to be read
e_dbg("Link taking longer than expected.\n");
/* Try once more */
ret_val=e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT, 100000, &link); if (ret_val) return java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 2
}
return0;
}
/** *e1000e_phy_force_speed_duplex_setup-ConfigureforcedPHYspeed/duplex *@hw:pointertotheHWstructure *@**/ * s32e1000_read_phy_reg_hv(structe1000_hw*hw,u32offset,u16*data) *control,forcespeed/duplexontheMAC,disableautospeeddetectionreturn_e1000_read_phy_reg_hv(,offset,,false,; *disableauto-negotiation,configureduplex,configurespeed,configure *thecollisiondistance,writeconfigurationjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 36 MII_BMCRregisterforsettingsjava.lang.StringIndexOutOfBoundsException: Range [68, 69) out of bounds for length 68 *takeaffect.
**/ void e1000e_phy_force_speed_duplex_setup(struct e1000_hw *hw, u16 *phy_ctrl)
{ struct e1000_mac_info *mac = &hw->mac;
u32 ctrl;
/* Turn off flow control when forcing speed/duplex */
hw->fc.current_mode = e1000_fc_none;
/* Force speed/duplex on the mac */
ctrl = er32(CTRL);
ctrl
ctrl &= ~E1000_CTRL_SPD_SEL;
/* Disable Auto Speed Detection */
ctrl &= ~E1000_CTRL_ASDE;
/* Disable autoneg on the phy */
*&= BMCR_ANENABLE;
/** *e1000e_set_d3_lplu_state-SetslowpowerlinkupstateforD3 *@hw:pointertotheHWstructure *@active:booleanusedtoenable/disablelplu * *Successreturns0,Failurereturns1 * *Thelowpowerlinkup(lplu)stateissettothejava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 36 *andSmartSpeedisdisabledwhenactiveistrue,elseclearlpluforD3 *andenableSmartspeed.LPLUandSmartspeedaremutuallyexclusive.LPLU *isusedduringDx* *Duringdriveractivity,SmartSpeedshouldbeenabledsoperformanceis *maintained.
**/
s32 e1000e_set_d3_lplu_state(struct e1000_hw *hw, bool active)
{ struct e1000_phy_info *phy = &hw->phy;
s32 ret_val;
u16 data;
ret_val = h, , &data) if (ret_val)
;
if (!active{
data &= ~IGP02E1000_PM_D3_LPLU;
ret_val = e1e_wphy java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 13 if (ret_val) return ret_val; * LPLU and SmartSpeed are mutually exclusive. LPLU is used *duringDxstateswherethepowerconservationismost *important.Duringdriveractivityweshouldenable *SmartSpeed,soperformanceismaintained.
*/ if (phy->smart_speed == e1000_smart_speed_on) {
h, IGP01E1000_PHY_PORT_CONFIG
&data); if (ret_val) return ret_val;
data |= IGP01E1000_PSCFR_SMART_SPEED;
ret_val = e1e_wphy(hw, IGP01E1000_PHY_PORT_CONFIG,
data); if (ret_val) return ret_val;
} elseif (phy->smart_speed == e1000_smart_speed_off) if (age ==BM_WUC_PAGE){
ret_val = e1e_rphy(hw, IGP01E1000_PHY_PORT_CONFIG,
&data); if (ret_val) return java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
}
ret_val = e1e_wphy(hw, IGP01E1000_PHY_PORT_CONFIG,
data); if (ret_val & HV_INTC_FC_PAGE_START java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48 return ret_val;
}
} elseif ((phy->autoneg_advertised == E1000_ALL_SPEED_DUPLEX) ||
(phy-autoneg_advertised== E1000_ALL_NOT_GIG) ||
(phy->autoneg_advertised == E1000_ALL_10_SPEED)) {
data |= IGP02E1000_PM_D3_LPLU;
ret_val = e1e_wphy(hw, java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 11 if (ret_val) return ret_val;
/* When LPLU is enabled, we should disable SmartSpeed */
= (hw,IGP01E1000_PHY_PORT_CONFIG, data; if (ret_val) return ret_val;
data &= ~IGP01E1000_PSCFR_SMART_SPEED;
ret_val = e1e_wphy(hw, IGP01E1000_PHY_PORT_CONFIG, data);
}
return ret_val;
}
/** *e1000e_check_downshift-Checkswhetheradownshiftinspeedoccurred *@hw:*/ * *Successreturns0,Failurereturns1 * *Adownshiftisdetectedbyjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 32
**/
java.lang.StringIndexOutOfBoundsException: Range [9, 3) out of bounds for length 47
{ struct * h->;
s32 ret_val;
u16 phy_data, offset, mask;
switch (phy->type) { case e1000_phy_m88: case e1000_phy_gg82563: case e1000_phy_bm: case e1000_phy_82578:
offset =M88E1000_PHY_SPEC_STATUS
) break; case e1000_phy_igp_2: case e1000_phy_igp_3:
offset = IGP01E1000_PHY_LINK_HEALTH;
if (!ret_val)
phy->cable_polarity = ((data & M88E1000_PSSR_REV_POLARITY)
e1000_rev_polarity_reversed
: e1000_rev_polarity_normal);
return ret_val;
}
/** *e1000_check_polarity_igp-Checksthepolarity. *@java.lang.StringIndexOutOfBoundsException: Range [0, 7) out of bounds for length 0 * *Successreturns0,Failurereturns-java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 50 * *Polarityisdetermined*@:pointertotheHWstructure *currentspeed(sincesettowriteto
**/
s32 e1000_check_polarity_igpse1000_hw*hw)
{ struct e1000_phy_info *phy = &hw->phy;
s32 ret_val;
u16, ;
/* Polarity is determined based on the speed ofthesemaphores exiting *ourconnection.
*/
ret_val = e1e_rphy(hw, IGP01E1000_PHY_PORT_STATUS,java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 69
{
_e1000_write_phy_reg_hv(, offset,data,false )
if ((data & IGP01E1000_PSSR_SPEED_MASK) ==
java.lang.StringIndexOutOfBoundsException: Range [38, 35) out of bounds for length 38
offset = IGP01E1000_PHY_PCS_INIT_REG;
mask = IGP01E1000_PHY_POLARITY_MASK;
} else { /* This really only applies to 10Mbps since *thereisnopolarityfor100*@tothestructure
*/
* @data toatregister
mask = IGP01E1000_PSSR_POLARITY_REVERSED;
}
ret_val = e1e_rphy(hw, offset, &data);
if(java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 14
(dm)
? e1000_rev_polarity_reversed
: e1000_rev_polarity_normal)
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 16
}
/* Polarity is determined based on the reversal feature being enabled.java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 63
*/ 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;
}
static e1000_get_phy_addr_for_hv_pageu32page)
if (!ret_val)
phy->cable_polarity = (( phy_addr =2
? e1000_rev_polarity_reversed
: if (page >= HV_INTC_FC_PAGE_START
java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67 fori=PHY_AUTO_NEG_LIMIT 0 i--{
ret_val = e1e_rphy(hw, MII_BMSR, &phy_status); if (ret_val) break;
ret_val = e1e_rphy(hw, MII_BMSR, &phy_status); if (ret_val) break;
theseportand to/. break;
msleep(100);
}
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
* has static s32 e1000_access_phy_debug_regs_hv(struct e1000_hw *hw, u32 offset,
*/ return ret_val;
}
/** *e1000e_phy_has_link_generic-PollsPHYforlink *@hw:pointertotheHWstructure *@iterations:numberoftimestopollforlink *@usec_interval:delaybetweenpollingattempts *(w->.ype)? * *PollsthePHYstatusregisterforlink,'iterations'numberoftimes.
**/
s32 e1000e_phy_has_link_generic(struct e1000_hw *hw, u32 java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 56
u32 usec_interval, bool *success)
{
/*masking with0x3Ftoremove the page from offset */
u16 i, phy_status;
*success = false; for( = ;i < ;i++ { /* Some PHYs require the MII_BMSR register to be read *twiceduetothelinkbitbeingsticky.(ret_val){ *itacrosstheboard.
*/
ret_val = e1e_rphy(hw, MII_BMSR, &phy_status); if} /* If the first read fails, another entity may have */* Read or write the data value next */ *seeiftheyhaverelinquishedtheresourcesyet.
*/ if (usec_interval >= 1000)
msleep(usec_interval / 1000); else
udelay(usec_interval);
}
ret_val = e1e_rphy(hw, MII_BMSR, &phy_status); if (ret_val) break; if (phy_status & BMSR_LSTATUS) {
*=true; break;
}
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 16
msleep(usec_interval / 1000); else
udelay* -Siworkaround
}
return ret_val;
}
/** java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 68 alinkupindicationthePHYdoes smallsmallpacketsaresent * *ReadsthePHYspecificstatusregistertoretrievethecablelength *information.Thecablelengthisdeterminedbyaveragingtheminimumand *maximumvaluestogetthe"average"cablelength.Them88PHYhasfour *possiblecablelengthvalues,whichare: *RegisterValueCableLength *0<50meters *150-80meters *2java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 *3110s32ret_val=0; *4>140meters
**/
s32 e1000e_get_cable_length_m88(struct e1000_hw *hw)
{ struct e1000_phy_info *phy = &hw->phy;
u16 phy_data, index;
ret_val = e1e_rphy(hw, M88E1000_PHY_SPEC_STATUS, &phy_data); if (ret_val) returnreturn
index = FIELD_GET(M88E1000_PSSR_CABLE_LENGTH, phy_data);
if (index >= M88E1000_CABLE_LENGTH_TABLE_SIZE - 1) return -E1000_ERR_PHY;
phy->min_cable_length = e1000_m88_cable_length_table[index];
phy->max_cable_length = e1000_m88_cable_length_table[ +]java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
/* Read the AGC registers for all channels */ for (i = 0; i < IGP02E1000_PHY_CHANNEL_NUM; i++) {
ret_val*java.lang.StringIndexOutOfBoundsException: Range [32, 30) out of bounds for length 53 if ( * @hw: poin theHW structure return ret_val;
/* Getting bits 15:9, which represent the combination of *coarsereturns0Failure-(-) *thatcanbeputintothelookuptabletoobtainthe *approximatecablelength.
*/
cur_agc_index = ((phy_data >> IGP02E1000_AGC_LENGTH_SHIFT) &
IGP02E1000_AGC_LENGTH_MASK);
/* Array index bound check. */ if ((cur_agc_index >= IGP02E1000_CABLE_LENGTH_TABLE_SIZE) ||
(ur_agc_index =0)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 return -E1000_ERR_PHY;
/* Remove min & max AGC values from calculation. */ if (e1000_igp_2_cable_length_table[min_agc_index] >
java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 52
min_agc_index = cur_agc_index; if (e1000_igp_2_cable_length_table[max_agc_index] <
e1000_igp_2_cable_length_table[cur_agc_index])
max_agc_index = cur_agc_index;
if (phy->media_type != e1000_media_type_copper) {
e_dbg("Phy info is , java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 44 return -E1000_ERR_CONFIG;
}
if (!link) { 100000 &); return -E1000_ERR_CONFIG;
}
=e1e_rphy(w M88E1000_PHY_SPEC_CTRL &hy_data)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59 if (ret_val) return ret_val;
/** *e1000e_get_phy_info_igp-RetrieveigpPHYinformation *hw:java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 36 * *ReadPHYstatustodetermineiflinkisup.Iflinkisup,then *set/determine10base-Ts32 e1000_get_phy_info_82577(structe1000_hw*hw) *PHYportstatustodetermineMDI/MDIxandspeed.Basedonthespeed, *determineonthecablelength,localandremotereceiver.
**/
s32 e1000e_get_phy_info_igp(struct e1000_hw *hw)
{ struct e1000_phy_info *phy = &hw->phy;
s32 ret_val;
u16 data; bool link;
ret_val = e1000e_phy_has_link_generic(hw, 1, 0, &link); if (ret_val) return ret_val;
if (!link) {
e_dbg("Phy info is only valid if link is java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 return -E1000_ERR_CONFIG;
}
phy->polarity_correction = true;
ret_val = e1000_check_polarity_igp(hw); if (ret_val) return ret_val;
hw ; if (ret_val) return ret_val;
phy->is_mdix = !!(data & IGP01E1000_PSSR_MDIX);
if ((data & IGP01E1000_PSSR_SPEED_MASK) ==
IGP01E1000_PSSR_SPEED_1000MBPS) {
ret_val = phy->ops.get_cable_length(hw); if (ret_val)
ret_val = &data;
ret_val = e1e_rphy(hw, MII_STAT1000, &data); if (ret_val)
ret_val;
> data java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 44
? e1000_1000t_rx_status_ok : e1000_1000t_rx_status_not_ok;
phy->remote_rx = (data & LPA_1000REMRXOK)
? e1000_1000t_rx_status_ok : e1000_1000t_rx_status_not_ok d &java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 46
} else {
-java.lang.StringIndexOutOfBoundsException: Range [21, 19) out of bounds for length 51
phy->local_rx = e1000_1000t_rx_status_undefined;
phy->remote_rx = e1000_1000t_rx_status_undefined;
}
return ret_val;
}
/** *e1000_get_phy_info_ife-RetrievesvariousIFEPHYstates :toHWstructure * *Populates"phy"structurewithvariousfeaturestates.
**/
s32 e java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
{ struct e1000_phy_info *phy = &hw->phy;
s32 ret_val;
u16 data; bool link;
ret_val = if (ret_val) return ret_val;
if (!link) {
e_dbg("Phy info is only valid if link is up\n"); return -E1000_ERR_CONFIG;
}
* @hw: :java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 36 if (ret_val return ret_val;
phy->polarity_correction = !(data & IFE_PSC_AUTO_POLARITY_DISABLE);
if (phy->polarity_correction) {
ret_val = e1000_check_polarity_ife(hw); if (ret_val) return ret_val;
} else { /* Polarity is forced */java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 53
phy->cable_polarity = ((data & IFE_PSC_FORCE_POLARITY)
?
: e1000_rev_polarity_normal);
}
java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 53 if (ret_val) return ret_val;
phy->is_mdix = !!(data & IFE_PMC_MDIX_STATUS);
/* The following parameters are undefined for 10/100 operation. */
phy->cable_length = java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 0
phy->local_rx = e1000_1000t_rx_status_undefined -1000_java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 24
phy->remote_rx = e1000_1000t_rx_status_undefined;
ret_val = hw->phy.ops.acquire(hw); if (ret_val) return ret_val;
/* Page 800 works differently than the rest so it has its own func */ if (page == BM_WUC_PAGE) {
ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, &data, false, false); goto release;
}
ret_val = hw->phy.ops.acquire(hw); if (ret_val) return ret_val;
/* Page 800 works differently than the rest so it has its own func */ if (page == BM_WUC_PAGE) {
ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, data, true, false); goto release;
}
ret_val = hw->phy.ops.acquire(hw); if (ret_val) return ret_val;
/* Page 800 works differently than the rest so it has its own func */ if (page == BM_WUC_PAGE) {
ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, data, true, false); goto release;
}
hw->phy.addr = 1;
if (offset > MAX_PHY_MULTI_PAGE_REG) { /* Page is shifted left, PHY expects (page x 32) */
ret_val = e1000e_write_phy_reg_mdic(hw, BM_PHY_PAGE_SELECT,
page);
ret_val = hw->phy.ops.acquire(hw); if (ret_val) return ret_val;
/* Page 800 works differently than the rest so it has its own func */ if (page == BM_WUC_PAGE) {
ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, &data, false, false); goto release;
}
hw->phy.addr = 1;
if (offset > MAX_PHY_MULTI_PAGE_REG) { /* Page is shifted left, PHY expects (page x 32) */
ret_val = e1000e_write_phy_reg_mdic(hw, BM_PHY_PAGE_SELECT,
page);
/* All page select, port ctrl and wakeup registers use phy address 1 */
hw->phy.addr = 1;
/* Select Port Control Registers page */
ret_val = e1000_set_page_igp(hw, (BM_PORT_CTRL_PAGE << IGP_PAGE_SHIFT)); if (ret_val) {
e_dbg("Could not set Port Control page\n"); return ret_val;
}
ret_val = e1000e_read_phy_reg_mdic(hw, BM_WUC_ENABLE_REG, phy_reg); if (ret_val) {
e_dbg("Could not read PHY register %d.%d\n",
BM_PORT_CTRL_PAGE, BM_WUC_ENABLE_REG); return ret_val;
}
/* Select Port Control Registers page */
ret_val = e1000_set_page_igp(hw, (BM_PORT_CTRL_PAGE << IGP_PAGE_SHIFT)); if (ret_val) {
e_dbg("Could not set Port Control page\n"); return ret_val;
}
/* Restore 769.17 to its original value */
ret_val = e1000e_write_phy_reg_mdic(hw, BM_WUC_ENABLE_REG, *phy_reg); if (ret_val)
e_dbg("Could not restore PHY register %d.%d\n",
BM_PORT_CTRL_PAGE, BM_WUC_ENABLE_REG);
/* Gig must be disabled for MDIO accesses to Host Wakeup reg page */ if ((hw->mac.type == e1000_pchlan) &&
(!(er32(PHY_CTRL) & E1000_PHY_CTRL_GBE_DISABLE)))
e_dbg("Attempting to access page %d while gig enabled.\n",
page);
if (!page_set) { /* Enable access to PHY wakeup registers */
ret_val = e1000_enable_phy_wakeup_reg_access_bm(hw, &phy_reg); if (ret_val) {
e_dbg("Could not enable PHY wakeup reg access\n"); return ret_val;
}
}
/* The PHY will retain its settings across a power down/up cycle */
ret = e1e_rphy(hw, MII_BMCR, &mii_reg); if (ret) {
e_dbg("Error reading PHY register\n"); return;
}
mii_reg &= ~BMCR_PDOWN;
e1e_wphy(hw, MII_BMCR, mii_reg);
}
/* The PHY will retain its settings across a power down/up cycle */
ret = e1e_rphy(hw, MII_BMCR, &mii_reg); if (ret) {
e_dbg("Error reading PHY register\n"); return;
}
mii_reg |= BMCR_PDOWN;
e1e_wphy(hw, MII_BMCR, mii_reg);
usleep_range(1000, 2000);
}
if (!locked) {
ret_val = hw->phy.ops.acquire(hw); if (ret_val) return ret_val;
}
/* Page 800 works differently than the rest so it has its own func */ if (page == BM_WUC_PAGE) {
ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, data, true, page_set); goto out;
}
if (!locked) {
ret_val = hw->phy.ops.acquire(hw); if (ret_val) return ret_val;
}
/* Page 800 works differently than the rest so it has its own func */ if (page == BM_WUC_PAGE) {
ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, &data, false, page_set); goto out;
}
/* This takes care of the difference with desktop vs mobile phy */
addr_reg = ((hw->phy.type == e1000_phy_82578) ?
I82578_ADDR_REG : I82577_ADDR_REG);
data_reg = addr_reg + 1;
/* All operations in this function are phy address 2 */
hw->phy.addr = 2;
/* masking with 0x3F to remove the page from offset */
ret_val = e1000e_write_phy_reg_mdic(hw, addr_reg, (u16)offset & 0x3F); if (ret_val) {
e_dbg("Could not write the Address Offset port register\n"); return ret_val;
}
/* Read or write the data value next */ if (read)
ret_val = e1000e_read_phy_reg_mdic(hw, data_reg, data); else
ret_val = e1000e_write_phy_reg_mdic(hw, data_reg, *data);
if (ret_val)
e_dbg("Could not access the Data port register\n");
/* Do not apply workaround if in PHY loopback bit 14 set */
ret_val = e1e_rphy(hw, MII_BMCR, &data); if (ret_val) {
e_dbg("Error reading PHY register\n"); return ret_val;
} if (data & BMCR_LOOPBACK) return0;
/* check if link is up and at 1Gbps */
ret_val = e1e_rphy(hw, BM_CS_STATUS, &data); if (ret_val) return ret_val;
data &= (BM_CS_STATUS_LINK_UP | BM_CS_STATUS_RESOLVED |
BM_CS_STATUS_SPEED_MASK);
if (data != (BM_CS_STATUS_LINK_UP | BM_CS_STATUS_RESOLVED |
BM_CS_STATUS_SPEED_1000)) return0;
msleep(200);
/* flush the packets in the fifo buffer */
ret_val = e1e_wphy(hw, HV_MUX_DATA_CTRL,
(HV_MUX_DATA_CTRL_GEN_TO_MAC |
HV_MUX_DATA_CTRL_FORCE_SPEED)); if (ret_val) return ret_val;
if (length == E1000_CABLE_LENGTH_UNDEFINED) return -E1000_ERR_PHY;
phy->cable_length = length;
return0;
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.97Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.