Commit 63e555d9 authored by Ciprian Costea's avatar Ciprian Costea Committed by Ulf Hansson
Browse files

mmc: sdhci-esdhc-imx: obtain the 'per' clock rate after its enablement



The I.MX SDHCI driver assumes that the frequency of the 'per' clock
can be obtained even on disabled clocks, which is not always the case.

According to 'clk_get_rate' documentation, it is only valid
once the clock source has been enabled.

Signed-off-by: default avatarCiprian Costea <ciprianmarian.costea@oss.nxp.com>
Reviewed-by: default avatarHaibo Chen <haibo.chen@nxp.com>
Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Link: https://lore.kernel.org/r/20240708121018.246476-3-ciprianmarian.costea@oss.nxp.com


Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent a52b67bd
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -1709,7 +1709,6 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
	}

	pltfm_host->clk = imx_data->clk_per;
	pltfm_host->clock = clk_get_rate(pltfm_host->clk);
	err = clk_prepare_enable(imx_data->clk_per);
	if (err)
		goto free_sdhci;
@@ -1720,6 +1719,13 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
	if (err)
		goto disable_ipg_clk;

	pltfm_host->clock = clk_get_rate(pltfm_host->clk);
	if (!pltfm_host->clock) {
		dev_err(mmc_dev(host->mmc), "could not get clk rate\n");
		err = -EINVAL;
		goto disable_ahb_clk;
	}

	imx_data->pinctrl = devm_pinctrl_get(&pdev->dev);
	if (IS_ERR(imx_data->pinctrl))
		dev_warn(mmc_dev(host->mmc), "could not get pinctrl\n");