Message ID | 20190819160643.27998-3-efremov@linux.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | Simplify PCIe hotplug indicator control | expand |
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@linux.intel.com> > Reviewed-by: Lukas Wunner <lukas@wunner.de> > Signed-off-by: Denis Efremov <efremov@linux.com> Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com> > --- > 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 >
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); } /*