Commit 6275c7bc authored by Ben Whitten's avatar Ben Whitten Committed by Ulf Hansson

mmc: dw_mmc: allow biu and ciu clocks to defer

Fix a race condition if the clock provider comes up after mmc is probed,
this causes mmc to fail without retrying.
When given the DEFER error from the clk source, pass it on up the chain.

Fixes: f90a0612 ("mmc: dw_mmc: lookup for optional biu and ciu clocks")
Signed-off-by: default avatarBen Whitten <ben.whitten@gmail.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20240811212212.123255-1-ben.whitten@gmail.comSigned-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 9374ae91
...@@ -3299,6 +3299,10 @@ int dw_mci_probe(struct dw_mci *host) ...@@ -3299,6 +3299,10 @@ int dw_mci_probe(struct dw_mci *host)
host->biu_clk = devm_clk_get(host->dev, "biu"); host->biu_clk = devm_clk_get(host->dev, "biu");
if (IS_ERR(host->biu_clk)) { if (IS_ERR(host->biu_clk)) {
dev_dbg(host->dev, "biu clock not available\n"); dev_dbg(host->dev, "biu clock not available\n");
ret = PTR_ERR(host->biu_clk);
if (ret == -EPROBE_DEFER)
return ret;
} else { } else {
ret = clk_prepare_enable(host->biu_clk); ret = clk_prepare_enable(host->biu_clk);
if (ret) { if (ret) {
...@@ -3310,6 +3314,10 @@ int dw_mci_probe(struct dw_mci *host) ...@@ -3310,6 +3314,10 @@ int dw_mci_probe(struct dw_mci *host)
host->ciu_clk = devm_clk_get(host->dev, "ciu"); host->ciu_clk = devm_clk_get(host->dev, "ciu");
if (IS_ERR(host->ciu_clk)) { if (IS_ERR(host->ciu_clk)) {
dev_dbg(host->dev, "ciu clock not available\n"); dev_dbg(host->dev, "ciu clock not available\n");
ret = PTR_ERR(host->ciu_clk);
if (ret == -EPROBE_DEFER)
goto err_clk_biu;
host->bus_hz = host->pdata->bus_hz; host->bus_hz = host->pdata->bus_hz;
} else { } else {
ret = clk_prepare_enable(host->ciu_clk); ret = clk_prepare_enable(host->ciu_clk);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment