diff options
Diffstat (limited to 'drivers/pci/hotplug/pciehp_ctrl.c')
| -rw-r--r-- | drivers/pci/hotplug/pciehp_ctrl.c | 39 | 
1 files changed, 23 insertions, 16 deletions
diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c index 631ced0ab28a..21af7b16d7a4 100644 --- a/drivers/pci/hotplug/pciehp_ctrl.c +++ b/drivers/pci/hotplug/pciehp_ctrl.c @@ -30,7 +30,10 @@  static void set_slot_off(struct controller *ctrl)  { -	/* turn off slot, turn on Amber LED, turn off Green LED if supported*/ +	/* +	 * Turn off slot, turn on attention indicator, turn off power +	 * indicator +	 */  	if (POWER_CTRL(ctrl)) {  		pciehp_power_off_slot(ctrl); @@ -42,8 +45,8 @@ static void set_slot_off(struct controller *ctrl)  		msleep(1000);  	} -	pciehp_green_led_off(ctrl); -	pciehp_set_attention_status(ctrl, 1); +	pciehp_set_indicators(ctrl, PCI_EXP_SLTCTL_PWR_IND_OFF, +			      PCI_EXP_SLTCTL_ATTN_IND_ON);  }  /** @@ -65,7 +68,8 @@ static int board_added(struct controller *ctrl)  			return retval;  	} -	pciehp_green_led_blink(ctrl); +	pciehp_set_indicators(ctrl, PCI_EXP_SLTCTL_PWR_IND_BLINK, +			      INDICATOR_NOOP);  	/* Check link training status */  	retval = pciehp_check_link_status(ctrl); @@ -90,8 +94,8 @@ static int board_added(struct controller *ctrl)  		}  	} -	pciehp_green_led_on(ctrl); -	pciehp_set_attention_status(ctrl, 0); +	pciehp_set_indicators(ctrl, PCI_EXP_SLTCTL_PWR_IND_ON, +			      PCI_EXP_SLTCTL_ATTN_IND_OFF);  	return 0;  err_exit: @@ -100,7 +104,7 @@ err_exit:  }  /** - * remove_board - Turns off slot and LEDs + * remove_board - Turn off slot and Power Indicator   * @ctrl: PCIe hotplug controller where board is being removed   * @safe_removal: whether the board is safely removed (versus surprise removed)   */ @@ -123,8 +127,8 @@ static void remove_board(struct controller *ctrl, bool safe_removal)  			   &ctrl->pending_events);  	} -	/* turn off Green LED */ -	pciehp_green_led_off(ctrl); +	pciehp_set_indicators(ctrl, PCI_EXP_SLTCTL_PWR_IND_OFF, +			      INDICATOR_NOOP);  }  static int pciehp_enable_slot(struct controller *ctrl); @@ -171,9 +175,9 @@ void pciehp_handle_button_press(struct controller *ctrl)  			ctrl_info(ctrl, "Slot(%s) Powering on due to button press\n",  				  slot_name(ctrl));  		} -		/* blink green LED and turn off amber */ -		pciehp_green_led_blink(ctrl); -		pciehp_set_attention_status(ctrl, 0); +		/* blink power indicator and turn off attention */ +		pciehp_set_indicators(ctrl, PCI_EXP_SLTCTL_PWR_IND_BLINK, +				      PCI_EXP_SLTCTL_ATTN_IND_OFF);  		schedule_delayed_work(&ctrl->button_work, 5 * HZ);  		break;  	case BLINKINGOFF_STATE: @@ -187,12 +191,13 @@ void pciehp_handle_button_press(struct controller *ctrl)  		cancel_delayed_work(&ctrl->button_work);  		if (ctrl->state == BLINKINGOFF_STATE) {  			ctrl->state = ON_STATE; -			pciehp_green_led_on(ctrl); +			pciehp_set_indicators(ctrl, PCI_EXP_SLTCTL_PWR_IND_ON, +					      PCI_EXP_SLTCTL_ATTN_IND_OFF);  		} else {  			ctrl->state = OFF_STATE; -			pciehp_green_led_off(ctrl); +			pciehp_set_indicators(ctrl, PCI_EXP_SLTCTL_PWR_IND_OFF, +					      PCI_EXP_SLTCTL_ATTN_IND_OFF);  		} -		pciehp_set_attention_status(ctrl, 0);  		ctrl_info(ctrl, "Slot(%s): Action canceled due to button press\n",  			  slot_name(ctrl));  		break; @@ -310,7 +315,9 @@ static int pciehp_enable_slot(struct controller *ctrl)  	pm_runtime_get_sync(&ctrl->pcie->port->dev);  	ret = __pciehp_enable_slot(ctrl);  	if (ret && ATTN_BUTTN(ctrl)) -		pciehp_green_led_off(ctrl); /* may be blinking */ +		/* may be blinking */ +		pciehp_set_indicators(ctrl, PCI_EXP_SLTCTL_PWR_IND_OFF, +				      INDICATOR_NOOP);  	pm_runtime_put(&ctrl->pcie->port->dev);  	mutex_lock(&ctrl->state_lock);  |