提交 87683e22 编写于 作者: O Oliver Neukum 提交者: Bjorn Helgaas

PCI: pciehp: Always implement resume, regardless of pciehp_force param

Previously, the driver ignored resume unless the pciehp_force module_param
was specified.  On some laptops that means that interrupts are not
delivered after S3, so card removals and insertions are not handled.
This patch makes the driver handle resume regardless of pciehp_force.

[bhelgaas: changelog]
Signed-off-by: NOliver Neukum <oneukum@suse.de>
Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
Reviewed-by: NRafael J. Wysocki <rjw@sisk.pl>
上级 0d7614f0
...@@ -300,24 +300,24 @@ static int pciehp_suspend (struct pcie_device *dev) ...@@ -300,24 +300,24 @@ static int pciehp_suspend (struct pcie_device *dev)
static int pciehp_resume (struct pcie_device *dev) static int pciehp_resume (struct pcie_device *dev)
{ {
struct controller *ctrl;
struct slot *slot;
u8 status;
dev_info(&dev->device, "%s ENTRY\n", __func__); dev_info(&dev->device, "%s ENTRY\n", __func__);
if (pciehp_force) { ctrl = get_service_data(dev);
struct controller *ctrl = get_service_data(dev);
struct slot *slot;
u8 status;
/* reinitialize the chipset's event detection logic */ /* reinitialize the chipset's event detection logic */
pcie_enable_notification(ctrl); pcie_enable_notification(ctrl);
slot = ctrl->slot; slot = ctrl->slot;
/* Check if slot is occupied */ /* Check if slot is occupied */
pciehp_get_adapter_status(slot, &status); pciehp_get_adapter_status(slot, &status);
if (status) if (status)
pciehp_enable_slot(slot); pciehp_enable_slot(slot);
else else
pciehp_disable_slot(slot); pciehp_disable_slot(slot);
}
return 0; return 0;
} }
#endif /* PM */ #endif /* PM */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册