Bluetooth: btmtksdio: fix resume failure
authorSean Wang <sean.wang@mediatek.com>
Wed, 1 Dec 2021 18:02:47 +0000 (02:02 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 09:53:53 +0000 (10:53 +0100)
[ Upstream commit 561ae1d46a8ddcbc13162d5771f5ed6c8249e730 ]

btmtksdio have to rely on MMC_PM_KEEP_POWER in pm_flags to avoid that
SDIO power is being shut off during the device is in suspend. That fixes
the SDIO command fails to access the bus after the device is resumed.

Fixes: 7f3c563c575e7 ("Bluetooth: btmtksdio: Add runtime PM support to SDIO based Bluetooth")
Co-developed-by: Mark-yw Chen <mark-yw.chen@mediatek.com>
Signed-off-by: Mark-yw Chen <mark-yw.chen@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/bluetooth/btmtksdio.c

index 5f9f027956317ef3a5bb71f6753f39d7522023cf..74856a58621622dae4582f05a4914dd7bdfe3f05 100644 (file)
@@ -1042,6 +1042,8 @@ static int btmtksdio_runtime_suspend(struct device *dev)
        if (!bdev)
                return 0;
 
+       sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER);
+
        sdio_claim_host(bdev->func);
 
        sdio_writel(bdev->func, C_FW_OWN_REQ_SET, MTK_REG_CHLPCR, &err);