diff options
author | Sean Wang <sean.wang@mediatek.com> | 2021-01-28 03:33:53 +0800 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-01-29 18:10:00 +0100 |
commit | 1d8efc741df80be940e1584b5ac613dc03d58bd6 (patch) | |
tree | 1ef6623a46735eb7616c1a50f0b5e3b3c070e848 /drivers/net/wireless/mediatek/mt76/mt7921/pci.c | |
parent | mt76: mt7921: rely on mt76_connac_mcu module for suspend and WoW support (diff) | |
download | linux-dev-1d8efc741df80be940e1584b5ac613dc03d58bd6.tar.xz linux-dev-1d8efc741df80be940e1584b5ac613dc03d58bd6.zip |
mt76: mt7921: introduce Runtime PM support
Introduce runtime PM to mt7921 driver
Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/mt7921/pci.c')
-rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt7921/pci.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/pci.c b/drivers/net/wireless/mediatek/mt76/mt7921/pci.c index ff5fbc1e23aa..5f28e00bba45 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7921/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7921/pci.c @@ -176,6 +176,10 @@ static int mt7921_pci_suspend(struct pci_dev *pdev, pm_message_t state) bool hif_suspend; int i, err; + err = mt76_connac_pm_wake(&dev->mphy, &dev->pm); + if (err < 0) + return err; + hif_suspend = !test_bit(MT76_STATE_SUSPEND, &dev->mphy.state); if (hif_suspend) { err = mt76_connac_mcu_set_hif_suspend(mdev, true); @@ -210,6 +214,10 @@ static int mt7921_pci_suspend(struct pci_dev *pdev, pm_message_t state) if (err) goto restore; + err = mt7921_mcu_drv_pmctrl(dev); + if (err) + goto restore; + return 0; restore: @@ -229,6 +237,10 @@ 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; |