Commit 8f58e29e authored by Kai-Heng Feng's avatar Kai-Heng Feng Committed by David S. Miller

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: default avatarKai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0c94d657
...@@ -363,67 +363,22 @@ static int __maybe_unused ipc_pcie_resume_s2idle(struct iosm_pcie *ipc_pcie) ...@@ -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) 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. */ /* The HAL shall ask the shared memory layer whether D3 is allowed. */
ipc_imem_pm_suspend(ipc_pcie->imem); 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"); dev_dbg(ipc_pcie->dev, "SUSPEND done");
return ret; return 0;
} }
int __maybe_unused ipc_pcie_resume(struct iosm_pcie *ipc_pcie) 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 /* The HAL shall inform the shared memory layer that the device is
* active. * active.
*/ */
ipc_imem_pm_resume(ipc_pcie->imem); ipc_imem_pm_resume(ipc_pcie->imem);
dev_dbg(ipc_pcie->dev, "RESUME done"); dev_dbg(ipc_pcie->dev, "RESUME done");
return ret; return 0;
} }
static int __maybe_unused ipc_pcie_suspend_cb(struct device *dev) static int __maybe_unused ipc_pcie_suspend_cb(struct device *dev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment