Skip to content

Commit

Permalink
mt76: mt7921: fix suspend/resume sequence
Browse files Browse the repository at this point in the history
Any pcie access should happen in pci D0 state and we should give ownership
back to the device at the end of the suspend procedure.

Fixes: 1d8efc741df80 ("mt76: mt7921: introduce Runtime PM support")
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
  • Loading branch information
moore-bros authored and nbd168 committed Mar 12, 2021
1 parent 7e1eff6 commit 8a2e22f
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions mt7921/pci.c
Expand Up @@ -209,12 +209,12 @@ static int mt7921_pci_suspend(struct pci_dev *pdev, pm_message_t state)
/* disable interrupt */
mt76_wr(dev, MT_WFDMA0_HOST_INT_ENA, 0);

pci_save_state(pdev);
err = pci_set_power_state(pdev, pci_choose_state(pdev, state));
err = mt7921_mcu_fw_pmctrl(dev);
if (err)
goto restore;

err = mt7921_mcu_drv_pmctrl(dev);
pci_save_state(pdev);
err = pci_set_power_state(pdev, pci_choose_state(pdev, state));
if (err)
goto restore;

Expand All @@ -237,16 +237,16 @@ static int mt7921_pci_resume(struct pci_dev *pdev)
struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76);
int i, err;

err = mt7921_mcu_fw_pmctrl(dev);
if (err < 0)
return err;

err = pci_set_power_state(pdev, PCI_D0);
if (err)
return err;

pci_restore_state(pdev);

err = mt7921_mcu_drv_pmctrl(dev);
if (err < 0)
return 0;

/* enable interrupt */
mt7921_l1_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0xff);
mt7921_irq_enable(dev, MT_INT_RX_DONE_ALL | MT_INT_TX_DONE_ALL |
Expand Down

0 comments on commit 8a2e22f

Please sign in to comment.