[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251218065048.1316282-1-ping.gao@samsung.com>
Date: Thu, 18 Dec 2025 14:50:48 +0800
From: "ping.gao" <ping.gao@...sung.com>
To: jh80.chung@...sung.com, ulf.hansson@...aro.org,
linux-mmc@...r.kernel.org, linux-kernel@...r.kernel.org
Cc: "ping.gao" <ping.gao@...sung.com>
Subject: [PATCH] MMC:dw_mmc:when disable biu_clk should check whether this
clk is normal
some vendor not enable biu_clk , disable it will panic
Signed-off-by: ping.gao <ping.gao@...sung.com>
---
drivers/mmc/host/dw_mmc.c | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index c5db92bbb094..e737333a0727 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -3633,9 +3633,15 @@ int dw_mci_runtime_resume(struct device *dev)
if (host->slot &&
(mmc_host_can_gpio_cd(host->slot->mmc) ||
!mmc_card_is_removable(host->slot->mmc))) {
- ret = clk_prepare_enable(host->biu_clk);
- if (ret)
- return ret;
+ if (IS_ERR(host->biu_clk)) {
+ dev_dbg(host->dev, "biu clock not available\n");
+ } else {
+ ret = clk_prepare_enable(host->biu_clk);
+ if (ret) {
+ dev_err(host->dev, "failed to enable biu clock\n");
+ goto err;
+ }
+ }
}
ret = clk_prepare_enable(host->ciu_clk);
@@ -3686,9 +3692,12 @@ int dw_mci_runtime_resume(struct device *dev)
err:
if (host->slot &&
(mmc_host_can_gpio_cd(host->slot->mmc) ||
- !mmc_card_is_removable(host->slot->mmc)))
- clk_disable_unprepare(host->biu_clk);
-
+ !mmc_card_is_removable(host->slot->mmc))) {
+ if (IS_ERR(host->biu_clk))
+ dev_dbg(host->dev, "biu clock not available\n");
+ else
+ clk_disable_unprepare(host->biu_clk);
+ }
return ret;
}
EXPORT_SYMBOL(dw_mci_runtime_resume);
--
2.50.1
Powered by blists - more mailing lists