forked from Minki/linux
net: wwan: iosm: Let PCI core handle PCI power transition
pci_pm_suspend_noirq() and pci_pm_resume_noirq() already handle power transition for system-wide suspend and resume, so it's not necessary to do it in the driver. Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0c94d657d2
commit
8f58e29ed7
@ -363,67 +363,22 @@ static int __maybe_unused ipc_pcie_resume_s2idle(struct iosm_pcie *ipc_pcie)
|
||||
|
||||
int __maybe_unused ipc_pcie_suspend(struct iosm_pcie *ipc_pcie)
|
||||
{
|
||||
struct pci_dev *pdev;
|
||||
int ret;
|
||||
|
||||
pdev = ipc_pcie->pci;
|
||||
|
||||
/* Execute D3 one time. */
|
||||
if (pdev->current_state != PCI_D0) {
|
||||
dev_dbg(ipc_pcie->dev, "done for PM=%d", pdev->current_state);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* The HAL shall ask the shared memory layer whether D3 is allowed. */
|
||||
ipc_imem_pm_suspend(ipc_pcie->imem);
|
||||
|
||||
/* Save the PCI configuration space of a device before suspending. */
|
||||
ret = pci_save_state(pdev);
|
||||
|
||||
if (ret) {
|
||||
dev_err(ipc_pcie->dev, "pci_save_state error=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Set the power state of a PCI device.
|
||||
* Transition a device to a new power state, using the device's PCI PM
|
||||
* registers.
|
||||
*/
|
||||
ret = pci_set_power_state(pdev, PCI_D3cold);
|
||||
|
||||
if (ret) {
|
||||
dev_err(ipc_pcie->dev, "pci_set_power_state error=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
dev_dbg(ipc_pcie->dev, "SUSPEND done");
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int __maybe_unused ipc_pcie_resume(struct iosm_pcie *ipc_pcie)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* Set the power state of a PCI device.
|
||||
* Transition a device to a new power state, using the device's PCI PM
|
||||
* registers.
|
||||
*/
|
||||
ret = pci_set_power_state(ipc_pcie->pci, PCI_D0);
|
||||
|
||||
if (ret) {
|
||||
dev_err(ipc_pcie->dev, "pci_set_power_state error=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
pci_restore_state(ipc_pcie->pci);
|
||||
|
||||
/* The HAL shall inform the shared memory layer that the device is
|
||||
* active.
|
||||
*/
|
||||
ipc_imem_pm_resume(ipc_pcie->imem);
|
||||
|
||||
dev_dbg(ipc_pcie->dev, "RESUME done");
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __maybe_unused ipc_pcie_suspend_cb(struct device *dev)
|
||||
|
Loading…
Reference in New Issue
Block a user