From 1068399e46621b093a89fb48c60dde4ba99de587 Mon Sep 17 00:00:00 2001 From: "Akeem G. Abodunrin" Date: Sat, 3 Nov 2012 03:08:41 +0000 Subject: [PATCH] --- yaml --- r: 341671 b: refs/heads/master c: 23e0f1488f193d53d282404c1ab50112cb237341 h: refs/heads/master i: 341669: 0c574268d767ef7380ada737d467b95cbfb5ad96 341667: 63c5fd7b28ce98bc896c3487edbc4a1d45d5c205 341663: 7864055d1721481ca2813da2c6ee717bdd64b0ed v: v3 --- [refs] | 2 +- .../net/ethernet/intel/igb/e1000_nvm.c | 28 ++++++++----------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/[refs] b/[refs] index b4f2c00c9b76..a4a5cdf3b73a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1720ee3e4054eff175743820ceba16ecfe97943a +refs/heads/master: 23e0f1488f193d53d282404c1ab50112cb237341 diff --git a/trunk/drivers/net/ethernet/intel/igb/e1000_nvm.c b/trunk/drivers/net/ethernet/intel/igb/e1000_nvm.c index 7db3f80bcd57..fbb7604db364 100644 --- a/trunk/drivers/net/ethernet/intel/igb/e1000_nvm.c +++ b/trunk/drivers/net/ethernet/intel/igb/e1000_nvm.c @@ -438,7 +438,7 @@ s32 igb_read_nvm_eerd(struct e1000_hw *hw, u16 offset, u16 words, u16 *data) s32 igb_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data) { struct e1000_nvm_info *nvm = &hw->nvm; - s32 ret_val; + s32 ret_val = -E1000_ERR_NVM; u16 widx = 0; /* @@ -448,22 +448,21 @@ s32 igb_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data) if ((offset >= nvm->word_size) || (words > (nvm->word_size - offset)) || (words == 0)) { hw_dbg("nvm parameter(s) out of bounds\n"); - ret_val = -E1000_ERR_NVM; - goto out; + return ret_val; } - ret_val = hw->nvm.ops.acquire(hw); - if (ret_val) - goto out; - - msleep(10); - while (widx < words) { u8 write_opcode = NVM_WRITE_OPCODE_SPI; - ret_val = igb_ready_nvm_eeprom(hw); + ret_val = nvm->ops.acquire(hw); if (ret_val) - goto release; + return ret_val; + + ret_val = igb_ready_nvm_eeprom(hw); + if (ret_val) { + nvm->ops.release(hw); + return ret_val; + } igb_standby_nvm(hw); @@ -497,13 +496,10 @@ s32 igb_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data) break; } } + usleep_range(1000, 2000); + nvm->ops.release(hw); } - msleep(10); -release: - hw->nvm.ops.release(hw); - -out: return ret_val; }