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: Ciprian Costea <ciprianmarian.costea@oss.nxp.com>
Reviewed-by: Haibo Chen <haibo.chen@nxp.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Link: https://lore.kernel.org/r/20240708121018.246476-3-ciprianmarian.costea@oss.nxp.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
 
        }
 
        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;
        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");