diff options
Diffstat (limited to 'drivers/net/e1000/e1000_hw.c')
-rw-r--r-- | drivers/net/e1000/e1000_hw.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c index 749d621a07da..1c5b18478fb2 100644 --- a/drivers/net/e1000/e1000_hw.c +++ b/drivers/net/e1000/e1000_hw.c | |||
@@ -5537,6 +5537,44 @@ e1000_setup_led(struct e1000_hw *hw) | |||
5537 | } | 5537 | } |
5538 | 5538 | ||
5539 | /****************************************************************************** | 5539 | /****************************************************************************** |
5540 | * Used on 82571 and later Si that has LED blink bits. | ||
5541 | * Callers must use their own timer and should have already called | ||
5542 | * e1000_id_led_init() | ||
5543 | * Call e1000_cleanup led() to stop blinking | ||
5544 | * | ||
5545 | * hw - Struct containing variables accessed by shared code | ||
5546 | *****************************************************************************/ | ||
5547 | int32_t | ||
5548 | e1000_blink_led_start(struct e1000_hw *hw) | ||
5549 | { | ||
5550 | int16_t i; | ||
5551 | uint32_t ledctl_blink = 0; | ||
5552 | |||
5553 | DEBUGFUNC("e1000_id_led_blink_on"); | ||
5554 | |||
5555 | if (hw->mac_type < e1000_82571) { | ||
5556 | /* Nothing to do */ | ||
5557 | return E1000_SUCCESS; | ||
5558 | } | ||
5559 | if (hw->media_type == e1000_media_type_fiber) { | ||
5560 | /* always blink LED0 for PCI-E fiber */ | ||
5561 | ledctl_blink = E1000_LEDCTL_LED0_BLINK | | ||
5562 | (E1000_LEDCTL_MODE_LED_ON << E1000_LEDCTL_LED0_MODE_SHIFT); | ||
5563 | } else { | ||
5564 | /* set the blink bit for each LED that's "on" (0x0E) in ledctl_mode2 */ | ||
5565 | ledctl_blink = hw->ledctl_mode2; | ||
5566 | for (i=0; i < 4; i++) | ||
5567 | if (((hw->ledctl_mode2 >> (i * 8)) & 0xFF) == | ||
5568 | E1000_LEDCTL_MODE_LED_ON) | ||
5569 | ledctl_blink |= (E1000_LEDCTL_LED0_BLINK << (i * 8)); | ||
5570 | } | ||
5571 | |||
5572 | E1000_WRITE_REG(hw, LEDCTL, ledctl_blink); | ||
5573 | |||
5574 | return E1000_SUCCESS; | ||
5575 | } | ||
5576 | |||
5577 | /****************************************************************************** | ||
5540 | * Restores the saved state of the SW controlable LED. | 5578 | * Restores the saved state of the SW controlable LED. |
5541 | * | 5579 | * |
5542 | * hw - Struct containing variables accessed by shared code | 5580 | * hw - Struct containing variables accessed by shared code |