Commit 6906aa93 authored by Sean Wang's avatar Sean Wang Committed by Felix Fietkau
Browse files

mt76: mt7921: move mt76_connac_mcu_set_hif_suspend to bus-related files



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: default avatarSean Wang <sean.wang@mediatek.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 838fcae7
Loading
Loading
Loading
Loading
+2 −11
Original line number Diff line number Diff line
@@ -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)
+5 −13
Original line number Diff line number Diff line
@@ -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;
	}

	/* always enable deep sleep during suspend to reduce
	 * power consumption
@@ -304,7 +300,6 @@ 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);

restore_suspend:
@@ -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 */

+5 −13
Original line number Diff line number Diff line
@@ -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;
	}

	/* always enable deep sleep during suspend to reduce
	 * power consumption
@@ -253,7 +249,6 @@ 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);

restore_suspend:
@@ -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 = {