sfc: Clean up LED control
authorBen Hutchings <bhutchings@solarflare.com>
Fri, 27 Feb 2009 13:08:03 +0000 (13:08 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 2 Mar 2009 11:15:05 +0000 (03:15 -0800)
Reinitialise LEDs after overriding them for identification.

Rename set_fault_led method to set_id_led since we always use it for
NIC identification and not faults.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/sfc/boards.c
drivers/net/sfc/efx.c
drivers/net/sfc/net_driver.h

index 12608750a9f5bf11b83f84d67aa9c05042471ff5..b70987892dfec0ff0ee2549964b78cf0eefde109 100644 (file)
@@ -26,7 +26,7 @@ static void blink_led_timer(unsigned long context)
 {
        struct efx_nic *efx = (struct efx_nic *)context;
        struct efx_blinker *bl = &efx->board_info.blinker;
-       efx->board_info.set_fault_led(efx, bl->state);
+       efx->board_info.set_id_led(efx, bl->state);
        bl->state = !bl->state;
        if (bl->resubmit)
                mod_timer(&bl->timer, jiffies + BLINK_INTERVAL);
@@ -48,7 +48,7 @@ static void board_blink(struct efx_nic *efx, bool blink)
                blinker->resubmit = false;
                if (blinker->timer.function)
                        del_timer_sync(&blinker->timer);
-               efx->board_info.set_fault_led(efx, false);
+               efx->board_info.init_leds(efx);
        }
 }
 
@@ -185,7 +185,7 @@ static struct i2c_board_info sfe4002_hwmon_info = {
 #define SFE4002_RX_LED    (0)  /* Green */
 #define SFE4002_TX_LED    (1)  /* Amber */
 
-static int sfe4002_init_leds(struct efx_nic *efx)
+static void sfe4002_init_leds(struct efx_nic *efx)
 {
        /* Set the TX and RX LEDs to reflect status and activity, and the
         * fault LED off */
@@ -194,10 +194,9 @@ static int sfe4002_init_leds(struct efx_nic *efx)
        xfp_set_led(efx, SFE4002_RX_LED,
                    QUAKE_LED_RXLINK | QUAKE_LED_LINK_ACTSTAT);
        xfp_set_led(efx, SFE4002_FAULT_LED, QUAKE_LED_OFF);
-       return 0;
 }
 
-static void sfe4002_fault_led(struct efx_nic *efx, bool state)
+static void sfe4002_set_id_led(struct efx_nic *efx, bool state)
 {
        xfp_set_led(efx, SFE4002_FAULT_LED, state ? QUAKE_LED_ON :
                        QUAKE_LED_OFF);
@@ -221,7 +220,7 @@ static int sfe4002_init(struct efx_nic *efx)
                return rc;
        efx->board_info.monitor = sfe4002_check_hw;
        efx->board_info.init_leds = sfe4002_init_leds;
-       efx->board_info.set_fault_led = sfe4002_fault_led;
+       efx->board_info.set_id_led = sfe4002_set_id_led;
        efx->board_info.blink = board_blink;
        efx->board_info.fini = efx_fini_lm87;
        return 0;
index 75836599e43dc87a51878f81d8b1058132df7f39..45df110f833157cb00b6a3cf16e2ffec8ff1af30 100644 (file)
@@ -1848,8 +1848,8 @@ static struct efx_phy_operations efx_dummy_phy_operations = {
 
 static struct efx_board efx_dummy_board_info = {
        .init           = efx_port_dummy_op_int,
-       .init_leds      = efx_port_dummy_op_int,
-       .set_fault_led  = efx_port_dummy_op_blink,
+       .init_leds      = efx_port_dummy_op_void,
+       .set_id_led     = efx_port_dummy_op_blink,
        .monitor        = efx_port_dummy_op_int,
        .blink          = efx_port_dummy_op_blink,
        .fini           = efx_port_dummy_op_void,
index ebc7b6340fb0ee04065728acd3fde36e791f3d10..b81fc727dfffa225e95e79f0bc9ef993983e7824 100644 (file)
@@ -402,8 +402,8 @@ struct efx_blinker {
  * @major: Major rev. ('A', 'B' ...)
  * @minor: Minor rev. (0, 1, ...)
  * @init: Initialisation function
- * @init_leds: Sets up board LEDs
- * @set_fault_led: Turns the fault LED on or off
+ * @init_leds: Sets up board LEDs. May be called repeatedly.
+ * @set_id_led: Turns the identification LED on or off
  * @blink: Starts/stops blinking
  * @monitor: Board-specific health check function
  * @fini: Cleanup function
@@ -419,9 +419,9 @@ struct efx_board {
        /* As the LEDs are typically attached to the PHY, LEDs
         * have a separate init callback that happens later than
         * board init. */
-       int (*init_leds)(struct efx_nic *efx);
+       void (*init_leds)(struct efx_nic *efx);
+       void (*set_id_led) (struct efx_nic *efx, bool state);
        int (*monitor) (struct efx_nic *nic);
-       void (*set_fault_led) (struct efx_nic *efx, bool state);
        void (*blink) (struct efx_nic *efx, bool start);
        void (*fini) (struct efx_nic *nic);
        struct efx_blinker blinker;