Commit 5e309314 authored by Sean Wang's avatar Sean Wang Committed by Felix Fietkau
Browse files

mt76: mt7921: fix suspend/resume sequence



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: 1d8efc74 ("mt76: mt7921: introduce Runtime PM support")
Signed-off-by: default avatarSean Wang <sean.wang@mediatek.com>
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 7715a1d5
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -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;

@@ -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 err;

	/* 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 |