diff options
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_x540.c')
-rw-r--r-- | drivers/net/ixgbe/ixgbe_x540.c | 67 |
1 files changed, 61 insertions, 6 deletions
diff --git a/drivers/net/ixgbe/ixgbe_x540.c b/drivers/net/ixgbe/ixgbe_x540.c index 179ee8226d04..4ed687be2fe3 100644 --- a/drivers/net/ixgbe/ixgbe_x540.c +++ b/drivers/net/ixgbe/ixgbe_x540.c | |||
@@ -304,16 +304,19 @@ static s32 ixgbe_init_eeprom_params_X540(struct ixgbe_hw *hw) | |||
304 | } | 304 | } |
305 | 305 | ||
306 | /** | 306 | /** |
307 | * ixgbe_read_eerd_X540 - Read EEPROM word using EERD | 307 | * ixgbe_read_eerd_X540- Read EEPROM word using EERD |
308 | * @hw: pointer to hardware structure | 308 | * @hw: pointer to hardware structure |
309 | * @offset: offset of word in the EEPROM to read | 309 | * @offset: offset of word in the EEPROM to read |
310 | * @data: word read from the EERPOM | 310 | * @data: word read from the EEPROM |
311 | * | ||
312 | * Reads a 16 bit word from the EEPROM using the EERD register. | ||
311 | **/ | 313 | **/ |
312 | static s32 ixgbe_read_eerd_X540(struct ixgbe_hw *hw, u16 offset, u16 *data) | 314 | static s32 ixgbe_read_eerd_X540(struct ixgbe_hw *hw, u16 offset, u16 *data) |
313 | { | 315 | { |
314 | s32 status; | 316 | s32 status = 0; |
315 | 317 | ||
316 | if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM) == 0) | 318 | if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM) == |
319 | 0) | ||
317 | status = ixgbe_read_eerd_generic(hw, offset, data); | 320 | status = ixgbe_read_eerd_generic(hw, offset, data); |
318 | else | 321 | else |
319 | status = IXGBE_ERR_SWFW_SYNC; | 322 | status = IXGBE_ERR_SWFW_SYNC; |
@@ -323,6 +326,31 @@ static s32 ixgbe_read_eerd_X540(struct ixgbe_hw *hw, u16 offset, u16 *data) | |||
323 | } | 326 | } |
324 | 327 | ||
325 | /** | 328 | /** |
329 | * ixgbe_read_eerd_buffer_X540 - Read EEPROM word(s) using EERD | ||
330 | * @hw: pointer to hardware structure | ||
331 | * @offset: offset of word in the EEPROM to read | ||
332 | * @words: number of words | ||
333 | * @data: word(s) read from the EEPROM | ||
334 | * | ||
335 | * Reads a 16 bit word(s) from the EEPROM using the EERD register. | ||
336 | **/ | ||
337 | static s32 ixgbe_read_eerd_buffer_X540(struct ixgbe_hw *hw, | ||
338 | u16 offset, u16 words, u16 *data) | ||
339 | { | ||
340 | s32 status = 0; | ||
341 | |||
342 | if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM) == | ||
343 | 0) | ||
344 | status = ixgbe_read_eerd_buffer_generic(hw, offset, | ||
345 | words, data); | ||
346 | else | ||
347 | status = IXGBE_ERR_SWFW_SYNC; | ||
348 | |||
349 | hw->mac.ops.release_swfw_sync(hw, IXGBE_GSSR_EEP_SM); | ||
350 | return status; | ||
351 | } | ||
352 | |||
353 | /** | ||
326 | * ixgbe_write_eewr_X540 - Write EEPROM word using EEWR | 354 | * ixgbe_write_eewr_X540 - Write EEPROM word using EEWR |
327 | * @hw: pointer to hardware structure | 355 | * @hw: pointer to hardware structure |
328 | * @offset: offset of word in the EEPROM to write | 356 | * @offset: offset of word in the EEPROM to write |
@@ -344,6 +372,31 @@ static s32 ixgbe_write_eewr_X540(struct ixgbe_hw *hw, u16 offset, u16 data) | |||
344 | } | 372 | } |
345 | 373 | ||
346 | /** | 374 | /** |
375 | * ixgbe_write_eewr_buffer_X540 - Write EEPROM word(s) using EEWR | ||
376 | * @hw: pointer to hardware structure | ||
377 | * @offset: offset of word in the EEPROM to write | ||
378 | * @words: number of words | ||
379 | * @data: word(s) write to the EEPROM | ||
380 | * | ||
381 | * Write a 16 bit word(s) to the EEPROM using the EEWR register. | ||
382 | **/ | ||
383 | static s32 ixgbe_write_eewr_buffer_X540(struct ixgbe_hw *hw, | ||
384 | u16 offset, u16 words, u16 *data) | ||
385 | { | ||
386 | s32 status = 0; | ||
387 | |||
388 | if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM) == | ||
389 | 0) | ||
390 | status = ixgbe_write_eewr_buffer_generic(hw, offset, | ||
391 | words, data); | ||
392 | else | ||
393 | status = IXGBE_ERR_SWFW_SYNC; | ||
394 | |||
395 | hw->mac.ops.release_swfw_sync(hw, IXGBE_GSSR_EEP_SM); | ||
396 | return status; | ||
397 | } | ||
398 | |||
399 | /** | ||
347 | * ixgbe_calc_eeprom_checksum_X540 - Calculates and returns the checksum | 400 | * ixgbe_calc_eeprom_checksum_X540 - Calculates and returns the checksum |
348 | * | 401 | * |
349 | * This function does not use synchronization for EERD and EEWR. It can | 402 | * This function does not use synchronization for EERD and EEWR. It can |
@@ -851,7 +904,9 @@ static struct ixgbe_mac_operations mac_ops_X540 = { | |||
851 | static struct ixgbe_eeprom_operations eeprom_ops_X540 = { | 904 | static struct ixgbe_eeprom_operations eeprom_ops_X540 = { |
852 | .init_params = &ixgbe_init_eeprom_params_X540, | 905 | .init_params = &ixgbe_init_eeprom_params_X540, |
853 | .read = &ixgbe_read_eerd_X540, | 906 | .read = &ixgbe_read_eerd_X540, |
907 | .read_buffer = &ixgbe_read_eerd_buffer_X540, | ||
854 | .write = &ixgbe_write_eewr_X540, | 908 | .write = &ixgbe_write_eewr_X540, |
909 | .write_buffer = &ixgbe_write_eewr_buffer_X540, | ||
855 | .calc_checksum = &ixgbe_calc_eeprom_checksum_X540, | 910 | .calc_checksum = &ixgbe_calc_eeprom_checksum_X540, |
856 | .validate_checksum = &ixgbe_validate_eeprom_checksum_X540, | 911 | .validate_checksum = &ixgbe_validate_eeprom_checksum_X540, |
857 | .update_checksum = &ixgbe_update_eeprom_checksum_X540, | 912 | .update_checksum = &ixgbe_update_eeprom_checksum_X540, |