Skip to content

Commit

Permalink
mt76: mt7921: move mt76_connac_mcu_set_hif_suspend to bus-related files
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
moore-bros authored and nbd168 committed Nov 23, 2021
1 parent 46261d4 commit a7fdd27
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 37 deletions.
13 changes: 2 additions & 11 deletions mt7921/main.c
Expand Up @@ -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);
Expand All @@ -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,
Expand All @@ -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)
Expand Down
18 changes: 5 additions & 13 deletions mt7921/pci.c
Expand Up @@ -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;
Expand All @@ -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
Expand Down Expand Up @@ -304,8 +300,7 @@ static int mt7921_pci_suspend(struct pci_dev *pdev, pm_message_t state)
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;
Expand Down Expand Up @@ -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 */

Expand Down
18 changes: 5 additions & 13 deletions mt7921/sdio.c
Expand Up @@ -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;
Expand All @@ -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
Expand Down Expand Up @@ -253,8 +249,7 @@ static int mt7921s_suspend(struct device *__dev)
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;
Expand Down Expand Up @@ -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 = {
Expand Down

0 comments on commit a7fdd27

Please sign in to comment.