mirror of https://gitee.com/openkylin/linux.git
sfc: Clean up LED control
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>
This commit is contained in:
parent
b4a44a6987
commit
8129d2173e
|
@ -26,7 +26,7 @@ static void blink_led_timer(unsigned long context)
|
||||||
{
|
{
|
||||||
struct efx_nic *efx = (struct efx_nic *)context;
|
struct efx_nic *efx = (struct efx_nic *)context;
|
||||||
struct efx_blinker *bl = &efx->board_info.blinker;
|
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;
|
bl->state = !bl->state;
|
||||||
if (bl->resubmit)
|
if (bl->resubmit)
|
||||||
mod_timer(&bl->timer, jiffies + BLINK_INTERVAL);
|
mod_timer(&bl->timer, jiffies + BLINK_INTERVAL);
|
||||||
|
@ -48,7 +48,7 @@ static void board_blink(struct efx_nic *efx, bool blink)
|
||||||
blinker->resubmit = false;
|
blinker->resubmit = false;
|
||||||
if (blinker->timer.function)
|
if (blinker->timer.function)
|
||||||
del_timer_sync(&blinker->timer);
|
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_RX_LED (0) /* Green */
|
||||||
#define SFE4002_TX_LED (1) /* Amber */
|
#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
|
/* Set the TX and RX LEDs to reflect status and activity, and the
|
||||||
* fault LED off */
|
* fault LED off */
|
||||||
|
@ -194,10 +194,9 @@ static int sfe4002_init_leds(struct efx_nic *efx)
|
||||||
xfp_set_led(efx, SFE4002_RX_LED,
|
xfp_set_led(efx, SFE4002_RX_LED,
|
||||||
QUAKE_LED_RXLINK | QUAKE_LED_LINK_ACTSTAT);
|
QUAKE_LED_RXLINK | QUAKE_LED_LINK_ACTSTAT);
|
||||||
xfp_set_led(efx, SFE4002_FAULT_LED, QUAKE_LED_OFF);
|
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 :
|
xfp_set_led(efx, SFE4002_FAULT_LED, state ? QUAKE_LED_ON :
|
||||||
QUAKE_LED_OFF);
|
QUAKE_LED_OFF);
|
||||||
|
@ -221,7 +220,7 @@ static int sfe4002_init(struct efx_nic *efx)
|
||||||
return rc;
|
return rc;
|
||||||
efx->board_info.monitor = sfe4002_check_hw;
|
efx->board_info.monitor = sfe4002_check_hw;
|
||||||
efx->board_info.init_leds = sfe4002_init_leds;
|
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.blink = board_blink;
|
||||||
efx->board_info.fini = efx_fini_lm87;
|
efx->board_info.fini = efx_fini_lm87;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1848,8 +1848,8 @@ static struct efx_phy_operations efx_dummy_phy_operations = {
|
||||||
|
|
||||||
static struct efx_board efx_dummy_board_info = {
|
static struct efx_board efx_dummy_board_info = {
|
||||||
.init = efx_port_dummy_op_int,
|
.init = efx_port_dummy_op_int,
|
||||||
.init_leds = efx_port_dummy_op_int,
|
.init_leds = efx_port_dummy_op_void,
|
||||||
.set_fault_led = efx_port_dummy_op_blink,
|
.set_id_led = efx_port_dummy_op_blink,
|
||||||
.monitor = efx_port_dummy_op_int,
|
.monitor = efx_port_dummy_op_int,
|
||||||
.blink = efx_port_dummy_op_blink,
|
.blink = efx_port_dummy_op_blink,
|
||||||
.fini = efx_port_dummy_op_void,
|
.fini = efx_port_dummy_op_void,
|
||||||
|
|
|
@ -402,8 +402,8 @@ struct efx_blinker {
|
||||||
* @major: Major rev. ('A', 'B' ...)
|
* @major: Major rev. ('A', 'B' ...)
|
||||||
* @minor: Minor rev. (0, 1, ...)
|
* @minor: Minor rev. (0, 1, ...)
|
||||||
* @init: Initialisation function
|
* @init: Initialisation function
|
||||||
* @init_leds: Sets up board LEDs
|
* @init_leds: Sets up board LEDs. May be called repeatedly.
|
||||||
* @set_fault_led: Turns the fault LED on or off
|
* @set_id_led: Turns the identification LED on or off
|
||||||
* @blink: Starts/stops blinking
|
* @blink: Starts/stops blinking
|
||||||
* @monitor: Board-specific health check function
|
* @monitor: Board-specific health check function
|
||||||
* @fini: Cleanup function
|
* @fini: Cleanup function
|
||||||
|
@ -419,9 +419,9 @@ struct efx_board {
|
||||||
/* As the LEDs are typically attached to the PHY, LEDs
|
/* As the LEDs are typically attached to the PHY, LEDs
|
||||||
* have a separate init callback that happens later than
|
* have a separate init callback that happens later than
|
||||||
* board init. */
|
* 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);
|
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 (*blink) (struct efx_nic *efx, bool start);
|
||||||
void (*fini) (struct efx_nic *nic);
|
void (*fini) (struct efx_nic *nic);
|
||||||
struct efx_blinker blinker;
|
struct efx_blinker blinker;
|
||||||
|
|
Loading…
Reference in New Issue