aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2013-12-15 19:23:54 -0500
committerBjorn Helgaas <bhelgaas@google.com>2013-12-15 20:00:00 -0500
commitaf9ab791e34147952a8b97c998fa257d8292c5d6 (patch)
treeb449d89e5635d37cc310edce104511b847547dcb
parente7b4f0d7841b188423b641cab71d20b1a05234e9 (diff)
PCI: pciehp: Move Attention & Power Indicator support tests to accessors
Previously, the caller checked ATTN_LED() or PWR_LED() to see whether the slot has indicators before setting the indicator state. That clutters the caller unnecessarily, so this moves the test inside the callees. The test may not even be necessary; per spec it should be harmless to try to turn on a non-existent LED. But checking first does avoid unnecessary hotplug commands. No functional change. Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
-rw-r--r--drivers/pci/hotplug/pciehp_ctrl.c42
-rw-r--r--drivers/pci/hotplug/pciehp_hpc.c12
2 files changed, 25 insertions, 29 deletions
diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c
index 6c730b161b33..50628487597d 100644
--- a/drivers/pci/hotplug/pciehp_ctrl.c
+++ b/drivers/pci/hotplug/pciehp_ctrl.c
@@ -168,11 +168,8 @@ static void set_slot_off(struct controller *ctrl, struct slot * pslot)
168 msleep(1000); 168 msleep(1000);
169 } 169 }
170 170
171 if (PWR_LED(ctrl)) 171 pciehp_green_led_off(pslot);
172 pciehp_green_led_off(pslot); 172 pciehp_set_attention_status(pslot, 1);
173
174 if (ATTN_LED(ctrl))
175 pciehp_set_attention_status(pslot, 1);
176} 173}
177 174
178/** 175/**
@@ -195,8 +192,7 @@ static int board_added(struct slot *p_slot)
195 return retval; 192 return retval;
196 } 193 }
197 194
198 if (PWR_LED(ctrl)) 195 pciehp_green_led_blink(p_slot);
199 pciehp_green_led_blink(p_slot);
200 196
201 /* Check link training status */ 197 /* Check link training status */
202 retval = pciehp_check_link_status(ctrl); 198 retval = pciehp_check_link_status(ctrl);
@@ -219,9 +215,7 @@ static int board_added(struct slot *p_slot)
219 goto err_exit; 215 goto err_exit;
220 } 216 }
221 217
222 if (PWR_LED(ctrl)) 218 pciehp_green_led_on(p_slot);
223 pciehp_green_led_on(p_slot);
224
225 return 0; 219 return 0;
226 220
227err_exit: 221err_exit:
@@ -254,9 +248,7 @@ static int remove_board(struct slot *p_slot)
254 } 248 }
255 249
256 /* turn off Green LED */ 250 /* turn off Green LED */
257 if (PWR_LED(ctrl)) 251 pciehp_green_led_off(p_slot);
258 pciehp_green_led_off(p_slot);
259
260 return 0; 252 return 0;
261} 253}
262 254
@@ -292,7 +284,7 @@ static void pciehp_power_thread(struct work_struct *work)
292 break; 284 break;
293 case POWERON_STATE: 285 case POWERON_STATE:
294 mutex_unlock(&p_slot->lock); 286 mutex_unlock(&p_slot->lock);
295 if (pciehp_enable_slot(p_slot) && PWR_LED(p_slot->ctrl)) 287 if (pciehp_enable_slot(p_slot))
296 pciehp_green_led_off(p_slot); 288 pciehp_green_led_off(p_slot);
297 mutex_lock(&p_slot->lock); 289 mutex_lock(&p_slot->lock);
298 p_slot->state = STATIC_STATE; 290 p_slot->state = STATIC_STATE;
@@ -359,11 +351,8 @@ static void handle_button_press_event(struct slot *p_slot)
359 "press.\n", slot_name(p_slot)); 351 "press.\n", slot_name(p_slot));
360 } 352 }
361 /* blink green LED and turn off amber */ 353 /* blink green LED and turn off amber */
362 if (PWR_LED(ctrl)) 354 pciehp_green_led_blink(p_slot);
363 pciehp_green_led_blink(p_slot); 355 pciehp_set_attention_status(p_slot, 0);
364 if (ATTN_LED(ctrl))
365 pciehp_set_attention_status(p_slot, 0);
366
367 queue_delayed_work(p_slot->wq, &p_slot->work, 5*HZ); 356 queue_delayed_work(p_slot->wq, &p_slot->work, 5*HZ);
368 break; 357 break;
369 case BLINKINGOFF_STATE: 358 case BLINKINGOFF_STATE:
@@ -376,14 +365,11 @@ static void handle_button_press_event(struct slot *p_slot)
376 ctrl_info(ctrl, "Button cancel on Slot(%s)\n", slot_name(p_slot)); 365 ctrl_info(ctrl, "Button cancel on Slot(%s)\n", slot_name(p_slot));
377 cancel_delayed_work(&p_slot->work); 366 cancel_delayed_work(&p_slot->work);
378 if (p_slot->state == BLINKINGOFF_STATE) { 367 if (p_slot->state == BLINKINGOFF_STATE) {
379 if (PWR_LED(ctrl)) 368 pciehp_green_led_on(p_slot);
380 pciehp_green_led_on(p_slot);
381 } else { 369 } else {
382 if (PWR_LED(ctrl)) 370 pciehp_green_led_off(p_slot);
383 pciehp_green_led_off(p_slot);
384 } 371 }
385 if (ATTN_LED(ctrl)) 372 pciehp_set_attention_status(p_slot, 0);
386 pciehp_set_attention_status(p_slot, 0);
387 ctrl_info(ctrl, "PCI slot #%s - action canceled " 373 ctrl_info(ctrl, "PCI slot #%s - action canceled "
388 "due to button press\n", slot_name(p_slot)); 374 "due to button press\n", slot_name(p_slot));
389 p_slot->state = STATIC_STATE; 375 p_slot->state = STATIC_STATE;
@@ -443,10 +429,8 @@ static void interrupt_event_handler(struct work_struct *work)
443 case INT_POWER_FAULT: 429 case INT_POWER_FAULT:
444 if (!POWER_CTRL(ctrl)) 430 if (!POWER_CTRL(ctrl))
445 break; 431 break;
446 if (ATTN_LED(ctrl)) 432 pciehp_set_attention_status(p_slot, 1);
447 pciehp_set_attention_status(p_slot, 1); 433 pciehp_green_led_off(p_slot);
448 if (PWR_LED(ctrl))
449 pciehp_green_led_off(p_slot);
450 break; 434 break;
451 case INT_PRESENCE_ON: 435 case INT_PRESENCE_ON:
452 case INT_PRESENCE_OFF: 436 case INT_PRESENCE_OFF:
diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c
index 05d421cf935e..14acfccb7670 100644
--- a/drivers/pci/hotplug/pciehp_hpc.c
+++ b/drivers/pci/hotplug/pciehp_hpc.c
@@ -418,6 +418,9 @@ void pciehp_set_attention_status(struct slot *slot, u8 value)
418 struct controller *ctrl = slot->ctrl; 418 struct controller *ctrl = slot->ctrl;
419 u16 slot_cmd; 419 u16 slot_cmd;
420 420
421 if (!ATTN_LED(ctrl))
422 return;
423
421 switch (value) { 424 switch (value) {
422 case 0 : /* turn off */ 425 case 0 : /* turn off */
423 slot_cmd = PCI_EXP_SLTCTL_ATTN_IND_OFF; 426 slot_cmd = PCI_EXP_SLTCTL_ATTN_IND_OFF;
@@ -440,6 +443,9 @@ void pciehp_green_led_on(struct slot *slot)
440{ 443{
441 struct controller *ctrl = slot->ctrl; 444 struct controller *ctrl = slot->ctrl;
442 445
446 if (!PWR_LED(ctrl))
447 return;
448
443 pcie_write_cmd(ctrl, PCI_EXP_SLTCTL_PWR_IND_ON, PCI_EXP_SLTCTL_PIC); 449 pcie_write_cmd(ctrl, PCI_EXP_SLTCTL_PWR_IND_ON, PCI_EXP_SLTCTL_PIC);
444 ctrl_dbg(ctrl, "%s: SLOTCTRL %x write cmd %x\n", __func__, 450 ctrl_dbg(ctrl, "%s: SLOTCTRL %x write cmd %x\n", __func__,
445 pci_pcie_cap(ctrl->pcie->port) + PCI_EXP_SLTCTL, 451 pci_pcie_cap(ctrl->pcie->port) + PCI_EXP_SLTCTL,
@@ -450,6 +456,9 @@ void pciehp_green_led_off(struct slot *slot)
450{ 456{
451 struct controller *ctrl = slot->ctrl; 457 struct controller *ctrl = slot->ctrl;
452 458
459 if (!PWR_LED(ctrl))
460 return;
461
453 pcie_write_cmd(ctrl, PCI_EXP_SLTCTL_PWR_IND_OFF, PCI_EXP_SLTCTL_PIC); 462 pcie_write_cmd(ctrl, PCI_EXP_SLTCTL_PWR_IND_OFF, PCI_EXP_SLTCTL_PIC);
454 ctrl_dbg(ctrl, "%s: SLOTCTRL %x write cmd %x\n", __func__, 463 ctrl_dbg(ctrl, "%s: SLOTCTRL %x write cmd %x\n", __func__,
455 pci_pcie_cap(ctrl->pcie->port) + PCI_EXP_SLTCTL, 464 pci_pcie_cap(ctrl->pcie->port) + PCI_EXP_SLTCTL,
@@ -460,6 +469,9 @@ void pciehp_green_led_blink(struct slot *slot)
460{ 469{
461 struct controller *ctrl = slot->ctrl; 470 struct controller *ctrl = slot->ctrl;
462 471
472 if (!PWR_LED(ctrl))
473 return;
474
463 pcie_write_cmd(ctrl, PCI_EXP_SLTCTL_PWR_IND_BLINK, PCI_EXP_SLTCTL_PIC); 475 pcie_write_cmd(ctrl, PCI_EXP_SLTCTL_PWR_IND_BLINK, PCI_EXP_SLTCTL_PIC);
464 ctrl_dbg(ctrl, "%s: SLOTCTRL %x write cmd %x\n", __func__, 476 ctrl_dbg(ctrl, "%s: SLOTCTRL %x write cmd %x\n", __func__,
465 pci_pcie_cap(ctrl->pcie->port) + PCI_EXP_SLTCTL, 477 pci_pcie_cap(ctrl->pcie->port) + PCI_EXP_SLTCTL,