mt76: mt7921: move mt76_connac_mcu_set_hif_suspend to bus-related files
authorSean Wang <sean.wang@mediatek.com>
Fri, 19 Nov 2021 23:22:10 +0000 (07:22 +0800)
committerFelix Fietkau <nbd@nbd.name>
Sun, 19 Dec 2021 14:24:00 +0000 (15:24 +0100)
This is a preliminary patch for the following patch
("mt76: mt7921s: fix the device cannot sleep deeply in suspend).

mt76_connac_mcu_set_hif_suspend eventually would be handled in each
bus-level suspend/resume handler in either mt7921/sdio.c or mt7921/pci.c
depending on what type of the bus the device is running on. We can move
mt76_connac_mcu_set_hif_suspend to bus-related files to simplify the logic.

Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/main.c
drivers/net/wireless/mediatek/mt76/mt7921/pci.c
drivers/net/wireless/mediatek/mt76/mt7921/sdio.c

index db34af1b693aecf62f4a049488483d1fb4b60392..9f05a6ed3b03117b441a92063edefe6bab487cdb 100644 (file)
@@ -1248,7 +1248,6 @@ static int mt7921_suspend(struct ieee80211_hw *hw,
 {
        struct mt7921_dev *dev = mt7921_hw_dev(hw);
        struct mt7921_phy *phy = mt7921_hw_phy(hw);
-       int err;
 
        cancel_delayed_work_sync(&phy->scan_work);
        cancel_delayed_work_sync(&phy->mt76->mac_work);
@@ -1266,25 +1265,18 @@ static int mt7921_suspend(struct ieee80211_hw *hw,
                                            mt76_connac_mcu_set_suspend_iter,
                                            &dev->mphy);
 
-       err = mt76_connac_mcu_set_hif_suspend(&dev->mt76, true);
-
        mt7921_mutex_release(dev);
 
-       return err;
+       return 0;
 }
 
 static int mt7921_resume(struct ieee80211_hw *hw)
 {
        struct mt7921_dev *dev = mt7921_hw_dev(hw);
        struct mt7921_phy *phy = mt7921_hw_phy(hw);
-       int err;
 
        mt7921_mutex_acquire(dev);
 
-       err = mt76_connac_mcu_set_hif_suspend(&dev->mt76, false);
-       if (err < 0)
-               goto out;
-
        set_bit(MT76_STATE_RUNNING, &phy->mt76->state);
        clear_bit(MT76_STATE_SUSPEND, &phy->mt76->state);
        ieee80211_iterate_active_interfaces(hw,
@@ -1294,11 +1286,10 @@ static int mt7921_resume(struct ieee80211_hw *hw)
 
        ieee80211_queue_delayed_work(hw, &phy->mt76->mac_work,
                                     MT7921_WATCHDOG_TIME);
-out:
 
        mt7921_mutex_release(dev);
 
-       return err;
+       return 0;
 }
 
 static void mt7921_set_wakeup(struct ieee80211_hw *hw, bool enabled)
index 0cff7c079b5f6acd4fca7d6d2f0fa6249f5d0d12..5635de3c80b13f97b4a8a69f87dffd731afc8944 100644 (file)
@@ -237,7 +237,6 @@ static int mt7921_pci_suspend(struct pci_dev *pdev, pm_message_t state)
        struct mt76_dev *mdev = pci_get_drvdata(pdev);
        struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76);
        struct mt76_connac_pm *pm = &dev->pm;
-       bool hif_suspend;
        int i, err;
 
        pm->suspended = true;
@@ -248,12 +247,9 @@ static int mt7921_pci_suspend(struct pci_dev *pdev, pm_message_t state)
        if (err < 0)
                goto restore_suspend;
 
-       hif_suspend = !test_bit(MT76_STATE_SUSPEND, &dev->mphy.state);
-       if (hif_suspend) {
-               err = mt76_connac_mcu_set_hif_suspend(mdev, true);
-               if (err)
-                       goto restore_suspend;
-       }
+       err = mt76_connac_mcu_set_hif_suspend(mdev, true);
+       if (err)
+               goto restore_suspend;
 
        /* always enable deep sleep during suspend to reduce
         * power consumption
@@ -304,8 +300,7 @@ restore_napi:
        if (!pm->ds_enable)
                mt76_connac_mcu_set_deep_sleep(&dev->mt76, false);
 
-       if (hif_suspend)
-               mt76_connac_mcu_set_hif_suspend(mdev, false);
+       mt76_connac_mcu_set_hif_suspend(mdev, false);
 
 restore_suspend:
        pm->suspended = false;
@@ -358,10 +353,7 @@ static int mt7921_pci_resume(struct pci_dev *pdev)
        if (!pm->ds_enable)
                mt76_connac_mcu_set_deep_sleep(&dev->mt76, false);
 
-       if (!test_bit(MT76_STATE_SUSPEND, &dev->mphy.state))
-               err = mt76_connac_mcu_set_hif_suspend(mdev, false);
-
-       return err;
+       return mt76_connac_mcu_set_hif_suspend(mdev, false);
 }
 #endif /* CONFIG_PM */
 
index ddf0eeb8b68891ed4ff18ed32dedb3a77b027ba7..5fee489c7a9987209b47ba0186f4a1427bc07175 100644 (file)
@@ -203,7 +203,6 @@ static int mt7921s_suspend(struct device *__dev)
        struct mt7921_dev *dev = sdio_get_drvdata(func);
        struct mt76_connac_pm *pm = &dev->pm;
        struct mt76_dev *mdev = &dev->mt76;
-       bool hif_suspend;
        int err;
 
        pm->suspended = true;
@@ -214,12 +213,9 @@ static int mt7921s_suspend(struct device *__dev)
        if (err < 0)
                goto restore_suspend;
 
-       hif_suspend = !test_bit(MT76_STATE_SUSPEND, &dev->mphy.state);
-       if (hif_suspend) {
-               err = mt76_connac_mcu_set_hif_suspend(mdev, true);
-               if (err)
-                       goto restore_suspend;
-       }
+       err = mt76_connac_mcu_set_hif_suspend(mdev, true);
+       if (err)
+               goto restore_suspend;
 
        /* always enable deep sleep during suspend to reduce
         * power consumption
@@ -253,8 +249,7 @@ restore_worker:
        if (!pm->ds_enable)
                mt76_connac_mcu_set_deep_sleep(mdev, false);
 
-       if (hif_suspend)
-               mt76_connac_mcu_set_hif_suspend(mdev, false);
+       mt76_connac_mcu_set_hif_suspend(mdev, false);
 
 restore_suspend:
        pm->suspended = false;
@@ -285,10 +280,7 @@ static int mt7921s_resume(struct device *__dev)
        if (!pm->ds_enable)
                mt76_connac_mcu_set_deep_sleep(mdev, false);
 
-       if (!test_bit(MT76_STATE_SUSPEND, &dev->mphy.state))
-               err = mt76_connac_mcu_set_hif_suspend(mdev, false);
-
-       return err;
+       return mt76_connac_mcu_set_hif_suspend(mdev, false);
 }
 
 static const struct dev_pm_ops mt7921s_pm_ops = {