lkml.org 
[lkml]   [2021]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.12 519/677] mt76: mt7921: fix suspend/resume sequence
    Date
    From: Sean Wang <sean.wang@mediatek.com>

    [ Upstream commit 5e30931494b4940ba74fa5796ca0b6d7e4c84e88 ]

    Any pcie access should happen in pci D0 state and we should give ownership
    back to the device at the end of the suspend procedure.

    Fixes: 1d8efc741df80 ("mt76: mt7921: introduce Runtime PM support")
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/mediatek/mt76/mt7921/pci.c | 14 +++++++-------
    1 file changed, 7 insertions(+), 7 deletions(-)

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/pci.c b/drivers/net/wireless/mediatek/mt76/mt7921/pci.c
    index 5570b4a50531..c747022f7642 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7921/pci.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7921/pci.c
    @@ -209,12 +209,12 @@ static int mt7921_pci_suspend(struct pci_dev *pdev, pm_message_t state)
    /* disable interrupt */
    mt76_wr(dev, MT_WFDMA0_HOST_INT_ENA, 0);

    - pci_save_state(pdev);
    - err = pci_set_power_state(pdev, pci_choose_state(pdev, state));
    + err = mt7921_mcu_fw_pmctrl(dev);
    if (err)
    goto restore;

    - err = mt7921_mcu_drv_pmctrl(dev);
    + pci_save_state(pdev);
    + err = pci_set_power_state(pdev, pci_choose_state(pdev, state));
    if (err)
    goto restore;

    @@ -237,16 +237,16 @@ 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;

    pci_restore_state(pdev);

    + err = mt7921_mcu_drv_pmctrl(dev);
    + if (err < 0)
    + return err;
    +
    /* enable interrupt */
    mt7921_l1_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0xff);
    mt7921_irq_enable(dev, MT_INT_RX_DONE_ALL | MT_INT_TX_DONE_ALL |
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-05-12 23:01    [W:4.243 / U:0.652 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site