PCI: pciehp: Remove ignored MRL sensor interrupt events

We queued interrupt events for the MRL being opened or closed, but the code
in interrupt_event_handler() that handles these events ignored them.

Stop enabling MRL interrupts and remove the ignored events.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
Bjorn Helgaas 2015-07-01 17:17:49 -05:00
parent 58fa2405bd
commit 2db0f71f56
2 changed files with 7 additions and 20 deletions

View File

@ -103,12 +103,10 @@ struct controller {
#define INT_PRESENCE_ON 1 #define INT_PRESENCE_ON 1
#define INT_PRESENCE_OFF 2 #define INT_PRESENCE_OFF 2
#define INT_SWITCH_CLOSE 3 #define INT_POWER_FAULT 3
#define INT_SWITCH_OPEN 4 #define INT_BUTTON_PRESS 4
#define INT_POWER_FAULT 5 #define INT_LINK_UP 5
#define INT_BUTTON_PRESS 6 #define INT_LINK_DOWN 6
#define INT_LINK_UP 7
#define INT_LINK_DOWN 8
#define STATIC_STATE 0 #define STATIC_STATE 0
#define BLINKINGON_STATE 1 #define BLINKINGON_STATE 1

View File

@ -543,7 +543,7 @@ static irqreturn_t pcie_isr(int irq, void *dev_id)
struct pci_dev *dev; struct pci_dev *dev;
struct slot *slot = ctrl->slot; struct slot *slot = ctrl->slot;
u16 detected, intr_loc; u16 detected, intr_loc;
u8 open, present; u8 present;
bool link; bool link;
/* /*
@ -561,7 +561,7 @@ static irqreturn_t pcie_isr(int irq, void *dev_id)
} }
detected &= (PCI_EXP_SLTSTA_ABP | PCI_EXP_SLTSTA_PFD | detected &= (PCI_EXP_SLTSTA_ABP | PCI_EXP_SLTSTA_PFD |
PCI_EXP_SLTSTA_MRLSC | PCI_EXP_SLTSTA_PDC | PCI_EXP_SLTSTA_PDC |
PCI_EXP_SLTSTA_CC | PCI_EXP_SLTSTA_DLLSC); PCI_EXP_SLTSTA_CC | PCI_EXP_SLTSTA_DLLSC);
detected &= ~intr_loc; detected &= ~intr_loc;
intr_loc |= detected; intr_loc |= detected;
@ -594,15 +594,6 @@ static irqreturn_t pcie_isr(int irq, void *dev_id)
if (!(intr_loc & ~PCI_EXP_SLTSTA_CC)) if (!(intr_loc & ~PCI_EXP_SLTSTA_CC))
return IRQ_HANDLED; return IRQ_HANDLED;
/* Check MRL Sensor Changed */
if (intr_loc & PCI_EXP_SLTSTA_MRLSC) {
pciehp_get_latch_status(slot, &open);
ctrl_info(ctrl, "Latch %s on Slot(%s)\n",
open ? "open" : "close", slot_name(slot));
pciehp_queue_interrupt_event(slot, open ? INT_SWITCH_OPEN :
INT_SWITCH_CLOSE);
}
/* Check Attention Button Pressed */ /* Check Attention Button Pressed */
if (intr_loc & PCI_EXP_SLTSTA_ABP) { if (intr_loc & PCI_EXP_SLTSTA_ABP) {
ctrl_info(ctrl, "Button pressed on Slot(%s)\n", ctrl_info(ctrl, "Button pressed on Slot(%s)\n",
@ -662,13 +653,11 @@ void pcie_enable_notification(struct controller *ctrl)
cmd |= PCI_EXP_SLTCTL_ABPE; cmd |= PCI_EXP_SLTCTL_ABPE;
else else
cmd |= PCI_EXP_SLTCTL_PDCE; cmd |= PCI_EXP_SLTCTL_PDCE;
if (MRL_SENS(ctrl))
cmd |= PCI_EXP_SLTCTL_MRLSCE;
if (!pciehp_poll_mode) if (!pciehp_poll_mode)
cmd |= PCI_EXP_SLTCTL_HPIE | PCI_EXP_SLTCTL_CCIE; cmd |= PCI_EXP_SLTCTL_HPIE | PCI_EXP_SLTCTL_CCIE;
mask = (PCI_EXP_SLTCTL_PDCE | PCI_EXP_SLTCTL_ABPE | mask = (PCI_EXP_SLTCTL_PDCE | PCI_EXP_SLTCTL_ABPE |
PCI_EXP_SLTCTL_MRLSCE | PCI_EXP_SLTCTL_PFDE | PCI_EXP_SLTCTL_PFDE |
PCI_EXP_SLTCTL_HPIE | PCI_EXP_SLTCTL_CCIE | PCI_EXP_SLTCTL_HPIE | PCI_EXP_SLTCTL_CCIE |
PCI_EXP_SLTCTL_DLLSCE); PCI_EXP_SLTCTL_DLLSCE);