|
@@ -606,6 +606,10 @@ int pciehp_power_on_slot(struct slot * slot)
|
|
|
ctrl_dbg(ctrl, "%s: SLOTCTRL %x write cmd %x\n", __func__,
|
|
|
pci_pcie_cap(ctrl->pcie->port) + PCI_EXP_SLTCTL, slot_cmd);
|
|
|
|
|
|
+ retval = pciehp_link_enable(ctrl);
|
|
|
+ if (retval)
|
|
|
+ ctrl_err(ctrl, "%s: Can not enable the link!\n", __func__);
|
|
|
+
|
|
|
return retval;
|
|
|
}
|
|
|
|
|
@@ -616,6 +620,14 @@ int pciehp_power_off_slot(struct slot * slot)
|
|
|
u16 cmd_mask;
|
|
|
int retval;
|
|
|
|
|
|
+ /* Disable the link at first */
|
|
|
+ pciehp_link_disable(ctrl);
|
|
|
+ /* wait the link is down */
|
|
|
+ if (ctrl->link_active_reporting)
|
|
|
+ pcie_wait_link_not_active(ctrl);
|
|
|
+ else
|
|
|
+ msleep(1000);
|
|
|
+
|
|
|
slot_cmd = POWER_OFF;
|
|
|
cmd_mask = PCI_EXP_SLTCTL_PCC;
|
|
|
retval = pcie_write_cmd(ctrl, slot_cmd, cmd_mask);
|