lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 0471/1157] mt76: mt7921s: fix firmware download random fail
    Date
    From: YN Chen <yn.chen@mediatek.com>

    [ Upstream commit a55a0c701c129f8e448f0ec1eb811dba728ace64 ]

    To avoid racing problems in chip, mt7921s should reacquire drv-own after
    firmware semaphore is released.

    Fixes: 78b217580c509 ("mt76: mt7921s: fix bus hang with wrong privilege")
    Signed-off-by: YN Chen <yn.chen@mediatek.com>
    Signed-off-by: Deren Wu <deren.wu@mediatek.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 15 ++++++++-------
    1 file changed, 8 insertions(+), 7 deletions(-)

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
    index 12bab18c4171..71cbb9073485 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
    @@ -582,13 +582,6 @@ static int mt7921_load_patch(struct mt7921_dev *dev)
    if (ret)
    dev_err(dev->mt76.dev, "Failed to start patch\n");

    - if (mt76_is_sdio(&dev->mt76)) {
    - /* activate again */
    - ret = __mt7921_mcu_fw_pmctrl(dev);
    - if (!ret)
    - ret = __mt7921_mcu_drv_pmctrl(dev);
    - }
    -
    out:
    sem = mt76_connac_mcu_patch_sem_ctrl(&dev->mt76, false);
    switch (sem) {
    @@ -599,6 +592,14 @@ static int mt7921_load_patch(struct mt7921_dev *dev)
    dev_err(dev->mt76.dev, "Failed to release patch semaphore\n");
    break;
    }
    +
    + if (!ret && mt76_is_sdio(&dev->mt76)) {
    + /* activate again */
    + ret = __mt7921_mcu_fw_pmctrl(dev);
    + if (!ret)
    + ret = __mt7921_mcu_drv_pmctrl(dev);
    + }
    +
    release_firmware(fw);

    return ret;
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-16 01:55    [W:4.139 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site