aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/igb/igb_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/intel/igb/igb_main.c')
-rw-r--r--drivers/net/ethernet/intel/igb/igb_main.c76
1 files changed, 26 insertions, 50 deletions
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index b07d679b46f2..df1e7907bbaf 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -1785,58 +1785,34 @@ static const struct net_device_ops igb_netdev_ops = {
1785void igb_set_fw_version(struct igb_adapter *adapter) 1785void igb_set_fw_version(struct igb_adapter *adapter)
1786{ 1786{
1787 struct e1000_hw *hw = &adapter->hw; 1787 struct e1000_hw *hw = &adapter->hw;
1788 u16 eeprom_verh, eeprom_verl, comb_verh, comb_verl, comb_offset; 1788 struct e1000_fw_version fw;
1789 u16 major, build, patch, fw_version; 1789
1790 u32 etrack_id; 1790 igb_get_fw_version(hw, &fw);
1791 1791
1792 hw->nvm.ops.read(hw, 5, 1, &fw_version); 1792 switch (hw->mac.type) {
1793 if (adapter->hw.mac.type != e1000_i211) { 1793 case e1000_i211:
1794 hw->nvm.ops.read(hw, NVM_ETRACK_WORD, 1, &eeprom_verh);
1795 hw->nvm.ops.read(hw, (NVM_ETRACK_WORD + 1), 1, &eeprom_verl);
1796 etrack_id = (eeprom_verh << IGB_ETRACK_SHIFT) | eeprom_verl;
1797
1798 /* combo image version needs to be found */
1799 hw->nvm.ops.read(hw, NVM_COMB_VER_PTR, 1, &comb_offset);
1800 if ((comb_offset != 0x0) &&
1801 (comb_offset != IGB_NVM_VER_INVALID)) {
1802 hw->nvm.ops.read(hw, (NVM_COMB_VER_OFF + comb_offset
1803 + 1), 1, &comb_verh);
1804 hw->nvm.ops.read(hw, (NVM_COMB_VER_OFF + comb_offset),
1805 1, &comb_verl);
1806
1807 /* Only display Option Rom if it exists and is valid */
1808 if ((comb_verh && comb_verl) &&
1809 ((comb_verh != IGB_NVM_VER_INVALID) &&
1810 (comb_verl != IGB_NVM_VER_INVALID))) {
1811 major = comb_verl >> IGB_COMB_VER_SHFT;
1812 build = (comb_verl << IGB_COMB_VER_SHFT) |
1813 (comb_verh >> IGB_COMB_VER_SHFT);
1814 patch = comb_verh & IGB_COMB_VER_MASK;
1815 snprintf(adapter->fw_version,
1816 sizeof(adapter->fw_version),
1817 "%d.%d%d, 0x%08x, %d.%d.%d",
1818 (fw_version & IGB_MAJOR_MASK) >>
1819 IGB_MAJOR_SHIFT,
1820 (fw_version & IGB_MINOR_MASK) >>
1821 IGB_MINOR_SHIFT,
1822 (fw_version & IGB_BUILD_MASK),
1823 etrack_id, major, build, patch);
1824 goto out;
1825 }
1826 }
1827 snprintf(adapter->fw_version, sizeof(adapter->fw_version),
1828 "%d.%d%d, 0x%08x",
1829 (fw_version & IGB_MAJOR_MASK) >> IGB_MAJOR_SHIFT,
1830 (fw_version & IGB_MINOR_MASK) >> IGB_MINOR_SHIFT,
1831 (fw_version & IGB_BUILD_MASK), etrack_id);
1832 } else {
1833 snprintf(adapter->fw_version, sizeof(adapter->fw_version), 1794 snprintf(adapter->fw_version, sizeof(adapter->fw_version),
1834 "%d.%d%d", 1795 "%2d.%2d-%d",
1835 (fw_version & IGB_MAJOR_MASK) >> IGB_MAJOR_SHIFT, 1796 fw.invm_major, fw.invm_minor, fw.invm_img_type);
1836 (fw_version & IGB_MINOR_MASK) >> IGB_MINOR_SHIFT, 1797 break;
1837 (fw_version & IGB_BUILD_MASK)); 1798
1799 default:
1800 /* if option is rom valid, display its version too */
1801 if (fw.or_valid) {
1802 snprintf(adapter->fw_version,
1803 sizeof(adapter->fw_version),
1804 "%d.%d, 0x%08x, %d.%d.%d",
1805 fw.eep_major, fw.eep_minor, fw.etrack_id,
1806 fw.or_major, fw.or_build, fw.or_patch);
1807 /* no option rom */
1808 } else {
1809 snprintf(adapter->fw_version,
1810 sizeof(adapter->fw_version),
1811 "%d.%d, 0x%08x",
1812 fw.eep_major, fw.eep_minor, fw.etrack_id);
1813 }
1814 break;
1838 } 1815 }
1839out:
1840 return; 1816 return;
1841} 1817}
1842 1818