lkml.org 
[lkml]   [2019]   [Oct]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.3 217/344] mmc: mtk-sd: Re-store SDIO IRQs mask at system resume
    Date
    From: Ulf Hansson <ulf.hansson@linaro.org>

    [ Upstream commit 1c81d69d4c98aab56c5a7d5a810f84aefdb37e9b ]

    In cases when SDIO IRQs have been enabled, runtime suspend is prevented by
    the driver. However, this still means msdc_runtime_suspend|resume() gets
    called during system suspend/resume, via pm_runtime_force_suspend|resume().

    This means during system suspend/resume, the register context of the mtk-sd
    device most likely loses its register context, even in cases when SDIO IRQs
    have been enabled.

    To re-enable the SDIO IRQs during system resume, the mtk-sd driver
    currently relies on the mmc core to re-enable the SDIO IRQs when it resumes
    the SDIO card, but this isn't the recommended solution. Instead, it's
    better to deal with this locally in the mtk-sd driver, so let's do that.

    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/mmc/host/mtk-sd.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
    index 33f4b6387ef71..978c8ccce7e31 100644
    --- a/drivers/mmc/host/mtk-sd.c
    +++ b/drivers/mmc/host/mtk-sd.c
    @@ -2421,6 +2421,9 @@ static void msdc_restore_reg(struct msdc_host *host)
    } else {
    writel(host->save_para.pad_tune, host->base + tune_reg);
    }
    +
    + if (sdio_irq_claimed(host->mmc))
    + __msdc_enable_sdio_irq(host, 1);
    }

    static int msdc_runtime_suspend(struct device *dev)
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-10-03 18:49    [W:2.075 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site