On Mon, Aug 19, 2019 at 07:06:41PM +0300, Denis Efremov wrote: > This patch replaces all consecutive switches of power and attention > indicators with pciehp_set_indicators() call. Thus, performing only > single write to a register. > > Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx> > Reviewed-by: Lukas Wunner <lukas@xxxxxxxxx> > Signed-off-by: Denis Efremov <efremov@xxxxxxxxx> Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx> > --- > drivers/pci/hotplug/pciehp_ctrl.c | 19 ++++++++++--------- > drivers/pci/hotplug/pciehp_hpc.c | 4 ++-- > 2 files changed, 12 insertions(+), 11 deletions(-) > > diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c > index 631ced0ab28a..232f7bfcfce9 100644 > --- a/drivers/pci/hotplug/pciehp_ctrl.c > +++ b/drivers/pci/hotplug/pciehp_ctrl.c > @@ -42,8 +42,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); > } > > /** > @@ -90,8 +90,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: > @@ -172,8 +172,8 @@ void pciehp_handle_button_press(struct controller *ctrl) > slot_name(ctrl)); > } > /* blink green LED and turn off amber */ > - pciehp_green_led_blink(ctrl); > - pciehp_set_attention_status(ctrl, 0); > + 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 +187,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; > diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c > index 5474b9854a7f..aa4252d11be2 100644 > --- a/drivers/pci/hotplug/pciehp_hpc.c > +++ b/drivers/pci/hotplug/pciehp_hpc.c > @@ -667,8 +667,8 @@ static irqreturn_t pciehp_ist(int irq, void *dev_id) > if ((events & PCI_EXP_SLTSTA_PFD) && !ctrl->power_fault_detected) { > ctrl->power_fault_detected = 1; > ctrl_err(ctrl, "Slot(%s): Power fault\n", slot_name(ctrl)); > - pciehp_set_attention_status(ctrl, 1); > - pciehp_green_led_off(ctrl); > + pciehp_set_indicators(ctrl, PCI_EXP_SLTCTL_PWR_IND_OFF, > + PCI_EXP_SLTCTL_ATTN_IND_ON); > } > > /* > -- > 2.21.0 > -- -- Sathyanarayanan Kuppuswamy Linux kernel developer