lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0313/1039] mt76: mt7921: move mt76_connac_mcu_set_hif_suspend to bus-related files
    Date
    From: Sean Wang <sean.wang@mediatek.com>

    [ Upstream commit 6906aa93eb93d54a42ce1902f00d6ea04ecb039b ]

    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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    .../net/wireless/mediatek/mt76/mt7921/main.c | 13 ++-----------
    .../net/wireless/mediatek/mt76/mt7921/pci.c | 18 +++++-------------
    .../net/wireless/mediatek/mt76/mt7921/sdio.c | 18 +++++-------------
    3 files changed, 12 insertions(+), 37 deletions(-)

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
    index b144f5491798a..e022251b40069 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
    @@ -1232,7 +1232,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);
    @@ -1250,25 +1249,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,
    @@ -1278,11 +1270,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)
    diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/pci.c b/drivers/net/wireless/mediatek/mt76/mt7921/pci.c
    index 305b63fa1a8a9..c29dde23d4ab1 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7921/pci.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7921/pci.c
    @@ -235,7 +235,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;
    @@ -246,12 +245,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
    @@ -302,8 +298,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;
    @@ -356,10 +351,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 */

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/sdio.c b/drivers/net/wireless/mediatek/mt76/mt7921/sdio.c
    index ddf0eeb8b6889..5fee489c7a998 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7921/sdio.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7921/sdio.c
    @@ -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 = {
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-24 23:09    [W:4.040 / U:1.308 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site