|
@@ -2064,6 +2064,35 @@ out:
|
|
|
return lesm_enabled;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * ixgbe_read_eeprom_82599 - Read EEPROM word using
|
|
|
+ * fastest available method
|
|
|
+ *
|
|
|
+ * @hw: pointer to hardware structure
|
|
|
+ * @offset: offset of word in the EEPROM to read
|
|
|
+ * @data: word read from the EEPROM
|
|
|
+ *
|
|
|
+ * Reads a 16 bit word from the EEPROM
|
|
|
+ **/
|
|
|
+static s32 ixgbe_read_eeprom_82599(struct ixgbe_hw *hw,
|
|
|
+ u16 offset, u16 *data)
|
|
|
+{
|
|
|
+ struct ixgbe_eeprom_info *eeprom = &hw->eeprom;
|
|
|
+ s32 ret_val = IXGBE_ERR_CONFIG;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * If EEPROM is detected and can be addressed using 14 bits,
|
|
|
+ * use EERD otherwise use bit bang
|
|
|
+ */
|
|
|
+ if ((eeprom->type == ixgbe_eeprom_spi) &&
|
|
|
+ (offset <= IXGBE_EERD_MAX_ADDR))
|
|
|
+ ret_val = ixgbe_read_eerd_generic(hw, offset, data);
|
|
|
+ else
|
|
|
+ ret_val = ixgbe_read_eeprom_bit_bang_generic(hw, offset, data);
|
|
|
+
|
|
|
+ return ret_val;
|
|
|
+}
|
|
|
+
|
|
|
static struct ixgbe_mac_operations mac_ops_82599 = {
|
|
|
.init_hw = &ixgbe_init_hw_generic,
|
|
|
.reset_hw = &ixgbe_reset_hw_82599,
|
|
@@ -2110,7 +2139,7 @@ static struct ixgbe_mac_operations mac_ops_82599 = {
|
|
|
|
|
|
static struct ixgbe_eeprom_operations eeprom_ops_82599 = {
|
|
|
.init_params = &ixgbe_init_eeprom_params_generic,
|
|
|
- .read = &ixgbe_read_eerd_generic,
|
|
|
+ .read = &ixgbe_read_eeprom_82599,
|
|
|
.write = &ixgbe_write_eeprom_generic,
|
|
|
.calc_checksum = &ixgbe_calc_eeprom_checksum_generic,
|
|
|
.validate_checksum = &ixgbe_validate_eeprom_checksum_generic,
|